Издательский дом ООО "Гейм Лэнд"ЖУРНАЛ ХАКЕР #91, ИЮЛЬ 2006 г.

В сетях зла

Sulverus aka Дроздов Андрей

Хакер, номер #091, стр. 091-124-3


Type action = plug.GetType("Troy_update.Do"); //выбираем нужный нам класс

object Do = Activator.CreateInstance(action); //создаем этот класс

MethodInfo MtdInfo = action.GetMethod("save_log"); // выбираем метод нашего класса

MtdInfo.Invoke(Do, null); // вызываем метод без параметров

string loaded = "Plugin is loaded.";

byte[] l_ok = Encoding.ASCII.GetBytes(loaded); //передаем хакеру, что плагин

hnd.Send(l_ok); //загружен

Чем это все может помочь хакеру? А тем, что с выходом Windows Vista вместо BHO(Browser Helper Object) можно будет встраивать код в IE, а это находка для не очень добрых программистов ;). Кстати, с таким же успехом благодаря рефлексии мы можем «отделять» куски кода от программы и создавать dll по ходу ее работы.

Записываем пароли и явки?

Для работы с файлами существует пространство имен System.IO. Для работы с текстовыми файлами нам нужны классы StringReader и StringWriter. Очень интересные возможности открывает класс BinaryReader и BinaryWriter, позволяя программе читать и писать двоичные данные. Этому ты сможешь научить троян сам. Если захочешь, я приведу простой пример:

FileStream fStream = new FileStream("binary_rw.dat", //создаем файл

FileMode.OpenOrCreate, FileAccess.ReadWrite);

BinaryWriter bWrite = new BinnaryWriter(fStream);

bWrite.WriteString("Xakep RuleZ"); //пишем в файл

float test = 29.987654 //давайте еще что-нибудь напишем..

bWrite.Write(test); //написали еще...

А для того чтобы стырить пароли (свои, забытые пароли ;)) мы будем использовать ранее упомянутый класс StringReader.

Делается это, как всегда, одной строкой кода:

StreamReader text = File.OpenText("C://test.txt");

После того как программа открыла файл, она может в нем копошиться, используя функции класса TextReader, например TextReader.ReadLine(). Таким образом, мы можем утянуть какую-то инфу из файла. Затем можем передать ее хакеру через сокет, используя функцию Socket.Send(), однако это довольно избитый способ. Гораздо удобнее передать данные о пароле через базу данных, которую читает хакер, а еще лучше - перловый скрипт, написанный хакером.

Работаем с базами данных

В мире баз данных Майкрософт активно проталкивает свою технологию ADO.NET и свой могучий Microsoft SQL Server 2005, с которым мы и будем работать (напомню, что мы практикуем только самые новые технологии). Технология ADO.NET включает в себя 2 провайдера OleDB и SQL, последним мы и займемся. Ничего практически не изменилось — объектно-ориентированные базы данных остались в силе. Для работы с базами данных Майкрософт одарила нас пространством имен System.Data, а если быть точным, то не с самой базы, а только с данными, полученными из базы или отправляемыми в нее. Вот нужные нам типы данных этого пространства имен: DataRow, DataTable, DataColumn и DataSet. Для соединения с базой мы будем использовать пространство имен System.Data.SqlTypes и System.Data.SqlClien, добавлять данные будем с помощью объекта SqlDataAdapter.InsertCommand. Для того чтобы заполнить таблицу данными и отправить их на сервер, необходимо использовать тип данных DataRow и метод Rows.Add(RataRow) В итоге мы получим метод для отправки пароля в базу данных (смотри соответствующую врезку).

Назад на стр. 091-124-2  Содержание  Вперед на стр. 091-124-4