В сетях зла

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

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

Offbit Security Team(sulverus@mail.ru)

Первые вирусы и трояны для Windows Vista на основе .NET

Большинство зло-кодеров очень скептически относятся к новым технологиям в программировании. Они утверждают, что вирусы нужно писать исключительно на ассемблере (хотя я с ними не спорю и глубоко уважаю такие великие команды, как 29а). Но мне кажется, что надо все-таки осваивать новые технологии. В данный момент выход Windows Vista планируется на январь-фераль 2007-го года. Поскольку Vista будет использовать технологию .NET, о ней и пойдет речь в этой статье.

Что мы имеем?

C# предлагает огромное количество возможностей для зло-кодера. По-моему, это единственный язык, где так хорошо развита концепция объектно-ориентированного программирования. Теперь нам доступны такие фичи, как, например, рефлексия кода, новые горизонты нам открывает CLR(Common Language Runtime). Благодаря CLR мы можем связывать приложения независимо от языка, на котором они написаны. Для примера давай напишем Downloader с небольшим набором функций. Что он должен уметь? Во-первых, качать, так как это основное его назначение. Для закачки файлов обычно используют протокол ftp, но это избито и легко обнаруживается антивирусами, файрволами и прочими добровольными контролерами. В нашем примере для этой цели мы будем использовать протокол UDP(User Datagram Protocol). Удобен UDP тем, что он обеспечивает быстрое обслуживание без организации соединения, а еще он позволяет использовать групповую рассылку, что для злобного софта очень важно. После того как мы загрузим обновление на зараженный компьютер, необходимо его инициализировать (например, при помощи рефлексии), а заодно мы научим наш мерзкий экзешник запускать другие приложения. Кстати, можно добавить и функцию работы с базами данных, чтобы он, например, мог заносить туда пароли от чего-нибудь, плюшки и прочую полезную для хакера инфу. Перейдем непосредственно к кодингу.

Кодим!

Начнем с основ. Для начала нам надо соединить клиента с сервером. Для этого мы будем использовать пространства имен System.NET и System.NET.Sockets. С сокетами все осталось, как и раньше, - мы просто объявляем переменные и слушаем нужный хакеру порт.

Работа с сокетами

IPHostEntry host = Dns.Resolve("localhost");

IPAddress ip = host.AddressList[0]; // создаем сокет и слушем 11000 порт

IPEndPoint ep = new IPEndPoint(ip, 11000);

Socket listn = new Socket(AddressFamily.Internetwork, SocketType.Stream, ProtocolType.Tcp);

listn.Bind(ep);

listn.Listen(10);

Теперь надо разобраться с тем, каким образом троян будет качать файлы. Для этого мы будем использовать класс UdpClient. Вот основные функции класса, которые нам будут нужны: Connect(), Send(), Receive(). Для закачки файлов также необходимо использовать пространство имен System.Threading и его класс FileStream. Теперь напишем класс, который будет получать обновления от хакера с 12000 порта:

Класс для закачки файлов

public class fRecv

{

public static IPEndPoint RemEp = null;

public static FileStream fStream; //объявляем переменные

public static byte[] rByte = new Byte[0];

Содержание  Вперед на стр. 091-124-2
ttfb: 2.7840137481689 ms