Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #70, СЕНТЯБРЬ 2006 г.

БОТНЕТ НА DOTNET'E

SULVERUS AKA ДРОЗДОВ АНДРЕЙ

Спецвыпуск: Хакер, номер #070, стр. 070-056-1


OFFBIT SECURITY TEAM(SULVERUS@MAIL.RU)

УПРАВЛЕНИЕ САМОХОДНЫМ ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ПО-НОВОМУ

В РАЗЛИЧНЫХ ИНТЕРНЕТ-ИЗДАНИЯХ, Е-МАГАХ, ЖУРНАЛАХ «СПЕЦ» И «ХАКЕР» ДОВОЛЬНО ЧАСТО РАССКАЗЫВАЮТ О ТОМ, КАК ХАКЕРЫ ПИШУТ ПРОГРАММЫ ДЛЯ УГНЕТЕНИЯ ПРОСТЫХ И НЕВИННЫХ ПОЛЬЗОВАТЕЛЕЙ. ВО ВСЕХ ЭТИХ СТАТЬЯХ ПОДРОБНО ОПИСЫВАЮТСЯ ФУНКЦИИ ЗАРАЖЕНИЯ ФАЙЛОВ, РАБОТЫ С ЗАРАЖЕННЫМ КОМПЬЮТЕРОМ, ИНОГДА ДАЖЕ DDOS-АТАК, НО ДОВОЛЬНО РЕДКО ВСТРЕЧАЮТСЯ СТАТЬИ, В КОТОРЫХ ОПИСЫВАЮТСЯ ПРИНЦИПЫ УПРАВЛЕНИЯ БОЛЬШИМ КОЛИЧЕСТВОМ БОТОВ. СЕГОДНЯ МЫ УЗНАЕМ, КАК ПЛОХИЕ ПРОГРАММИСТЫ ПИШУТ BOT CONTROL CENTER.

[что должна уметь подобная система?]

Естественно, главной функцией такого рода программ является массовое отправление команд ботам, но, на самом деле, этого мало: не менее важной функцией является способность определить, какие боты в настоящий момент времени находятся в онлайне, а какие — в офлайне. Также, если троян многофункциональный: умеет похищать пароли, е-мейлы, работать с файлами на зараженном компьютере, и т.д., то у хакера должна быть возможность общаться с каждым ботом в отдельности. Если control center будет находиться на компьютере у хакера, то уровень безопасности заметно снизится, поэтому логично разместить его где-нибудь подальше. Некоторые предпочтут разместить такую систему на линуксовом шелле, но для этого надо иметь хороший шелл и еще 100% гарантию того, что он внезапно не пропадет, поэтому лучшим решением, на мой взгляд, является создание скрипта, который можно будет разместить на каком-нибудь забугорном хостинге. Также если хакер не хочет лишний раз светиться, то из соображений безопасности было бы вполне рационально написать веб-сервис, который бы находился в другом месте и непосредственно проверял количество ботов в сети. И, наконец, надо написать программу, через которую хакер будет соединяться с веб-сервисом для проверки своего ботнета. Для большей безопасности логично использовать цепь проксей. В общем, хватит разговоров – приступим к практике!

[кодим]

Возможно, многие стали бы решать подобную задачу на perle'e или php, но я огненный поклонник всеобщего прогресса, поэтому буду использовать С#. Для создания веб-сервиса мы будем использовать платформу ASP.NET, благодаря которой можно создавать C# веб-проекты.

Организуем новый ASP.NET Web Site с поддержкой C# и начинаем кодить. Для работы с ASP.NET обычно используется пространство имен System.Web. Нам понадобятся классы UI, WebControls, WebControls.WebParts, HtmlControls. Если мы захотим запаролить (а мы, скорее всего, захотим), то необходимо будет использовать класс System.Web.Security. Для начала определимся с интерфейсом: он должен быть прост и понятен, а содержать он должен форму для отправки команд ботам, форму для проверки активности ботов, форму для общения с одним ботом. Можно еще сделать форму с настройками. Кроме разных форм, обязательно должен быть текстовый контейнер, в котором будут отображаться сообщения ботов.

[привет – окей]

С интерфейсом разобрались, теперь перейдем к сетевым функциям. Чтобы работать с сокетами, нам понадобятся пространства имен System.Net и System.Net.Sockets.Прежде чем командовать ботами, необходимо проверить, сколько ботов в данный момент в сети. Для этого надо научить бота здороваться с контрол-центром. Например, когда хакер будет нажимать кнопку «проверить связь», программа будет рассылать по всем зараженным IP-адресам сообщения «привет», а бот, если он в онлайне, получив такое сообщение, должен будет ответить «окей». Таким образом, будет происходить идентификация активных ботов в сети. После полученных сообщений программа должна в удобном виде представить хакеру список активных ботов, например в компонент ListBox. Значит, в интерфейс мы добавим два листбокса: в первый мы будем выводить список всех ботов, а в другой – только активных. Теперь напишем функцию, которая все это будет совершать.

Содержание  Вперед на стр. 070-056-2