Захват чужих ботнетов

Как побороть червя


Просматривая трафик, награбленный брандмауэром (Logs à Traffic/Packet Logs), ищем соединения, установленные с IRC-сервером, по умолчанию расположенном на 6667порту. Среди прочей муры в них должны находится строки PASS, NICK, USER и JOIN, посредством которых червь подключается к "своему" каналу. Приблизительно это выглядит так:

<- :mozilla.se.eu.dal.net NOTICE AUTH :*** Looking up your hostname...

<- :mozilla.se.eu.dal.net NOTICE AUTH :*** Checking Ident

<- :mozilla.se.eu.dal.net NOTICE AUTH :*** Found your hostname

<- :mozilla.se.eu.dal.net NOTICE AUTH :*** No Ident response

-> PASS drone_pass

-> NICK [urX]-3011331

-> USER drone 0 0 :drone

<- : mozilla.se.eu.dal.net NOTICE [urX]-3011331

<-:*** If you are having problems connecting due to ping timeouts, please type

<-/quote pong ED322722 or /raw pong ED322722 now

<- PING :ED322722

-> PONG :ED322722



<- : mozilla.se.eu.dal.net 001 [urX]- 3011331 :Welcome to

<- the mozilla.se.eu.dal.net IRC Network [urX]- 3011331!drone @nicetry

<- : mozilla.se.eu.dal.net 002 [urX]- 3011331 :Your host is mozilla.se.eu.dal.net,

<- running version Unreal3.2-beta19

<- : mozilla.se.eu.dal.net [urX]- 3011331

<- :This server was created Sun Feb  8 18:58:31 2004

<- mozilla.se.eu.dal.net 004 [urX]- 3011331 mozilla.se.eu.dal.net

<- Unreal3.2-beta19 iowghraAsORTVSxNCWqBzvdHtGp lvhopsmntikrRcaqOALQbSeKVfMGCuzN

Листинг 1 протокол обмена червя с IRC-сервером

Чтобы подчинить червя себе, Мастер должен выполнить команду аутентификации (обычно "auth") и передать секретный пароль, немедленно становящийся достоянием нашей брандмауэра. Остается зайти на канал и призвать всех червей к себе. Некоторые ботнеты допускают смену пароля, что позволяет сместить прежнего Мастера с трона, некоторые носят жестко прошитый (hardcoded) пароль в себе и единолично завладеть таким ботнетом уже не удастся. С одной стороны это плохо, с другой — хорошо.


Как узнать какие команды поддерживает червь? Полный ответ дает только дизассемблирование, однако, на первых порах можно ограничиться просмотром HEX-дампа. Команды управления представляют собой обычные ASIIZ-строки, записанные прямым текстом, но увидеть их не так-то легко! Большинство червей упакованы хитроумными полиморфными генераторами, автоматических распаковщиков для которых не существует. Ну не существует и не надо! Берем любой дампер (ProcDump, Lord PE) и дампим червя в живую. Конечно, полученный PE-файл с вероятностью близкой к единице окажется неработоспособен (как минимум необходимо восстановить таблицу импорта и сделать кучу других мелких дел). Фактически это труп червя, но, для наших целей он вполне подойдет.

Набор команд разнится от червя к червю, в частности, Agobot может: сменить свой ник; сообщить конфигурацию системы; сделать себе харакири; запустить любой исполняемый файл; определить IP-адрес и доменное имя заданного узла; подключиться/отключится от IRC-сервера; зайти на канал и т. д.

Почти все черви используют слегка модифицированный протокол IRC и потому обычные IRC-клиенты для управления ботнетом непригодны, но ведь не писать же своего собственного, верно? Возьмем готового клиента, распространяемого в исходных текстах, например IRSSI, и слегка доработаем его "напильником". Как минимум необходимо вырезать текстовую строку "irssi 0.89 running on openbsd i368" и вырубить все команды автоматичесокго ответа (auto response triggering commands), иначе Мастер легко обнаружит наше присутствие на канале и либо поставит бан, либо армия дронов запигует наш узел до смерти.

Захват чужих ботнетов — это действительно рискованно и очень опасно, поэтому, без предварительной подготовки в этот дремучий лес лучше не ходить.



Рисунок 4 просмотр логов брандмауэра на предмет поиска червя


Содержание раздела