Pull to refresh

Небольшой рассказ об исследовании одного ботнета

Reading time4 min
Views913
Уже несколько лет на нашем сайте висит триггер, который срабатывает на определенное сочетание слов в запросах, в частности таких как: union, eval, passthru, alert, javascript, cookie и т.п. В случае срабатывания, отсылается мыло. Это позволяет увидеть большинство попыток сделать SQL injection, использовать PHP include или XSS. Попытки взлома осуществляются довольно часто, но в последний месяц отчетов стало приходить около ста в день. Все однотипные. Ищется уязвимость в каком то стандартном модуле контактов, в котором, как я понял, есть псевдотег [php] со всеми вытекающими. Эксплоит, используя этот псевдотег, пытается загрузить на сервер жертвы Perl скрипт и передать ему управление. Тут можно найти список линков на боты (это текстовые файлы с кодом на Perl), правда некоторые файлы уже потерты. Эксплоиты разные и пытаются загрузить разных ботов, возможно от разных групп, на некоторые из этих ботов срабатывает антивирус и молча удаляет. Код безопаснее качать с помощью качалок, а не через браузер. Соответственно, если код запускается на сервере жертвы (в основном это обычный вебсервер на дешевом хостинге с миллионом сайтов), то бот сразу подключается к IRC каналу, где его уже ждут. Скачав наугад один из ботов, я решил посмотреть, как оно там все устроено.

Бот


Из беглого взгляда на файл, видно, что в настройках данного бота, админом, имеющим право работы с ботами, является человек с логином Conficker. Бот сразу подключается к IRC серверу: irc.planetwork.tk:6667, на канал #autorun. У ботов, на выбор, несколько логинов (похоже все женские). Я решил особо долго не думать и залогинился под ником админа. Но тут со мной плохую службу сыграл один малоизвестный сервис для хранения фотографий и вместо правильного ника я залогинился как Conflicker. Но заметил я это не сразу и сначала попытался порулить некоторыми из ботов с вполне ожидаемым результатом. На основном канале, было около 120 ботов, некоторые из них сканировали сайты на уязвимости и периодически писали результаты в общий чат. Время от времени они находили разные уязвимости, в частности SQL Injection, с которыми, видимо, уже будут разбираться вручную люди. Поиск жертв происходит стандартно, через поисковики. Я попробовал через чат давать команды ботам, но срабатывал только PING test, так как для этого не требовался какой либо логин. И тут меня очень удивил администратора канала.

Несколько лет назад



Немного уходя в сторону, хочу рассказать о том, как я «исследовал» один из ботнетов пару лет назад. История довольно короткая, я точно так же зашел на канал, администратор канала открыл чат и первым делом сделал ls –al. Соответственно, повторив операцию на одном из наших серверов в ничего не значащей директории, я скинул обратно список файлов (то же самое должен был сделать и реальный бот, но несколько расторопнее). Таким образом, выступая в роли прокси, я скачал остальные файлы ботнета (основой был, к сожалению, откомпилированный httpd). Поняв, что большего выжать я не смогу, в один из запросов я просто сказал “hi”, спросил как дела, получил ответ, что все это какая-то ошибка, мой собеседник тут вообще случайно, был кикнут из канала и забанен.

Бот. Продолжение



Чего-то подобного я ожидал и тут, в случае, если меня сочтут человеком. Но администратор, увидев логин Conflicker, сказал “wow” и дал мне опа. Так как я особо IRC не увлекаюсь, то только подумал, о том, что это хороший момент просто кикнуть администратора из канала и, сменив логин, занять его место, но пока решил ничего не предпринимать. Некоторое время ушло на исследование возможности изменения ника так, что бы боты воспринимали меня как админа. И тут случилось чудо – Conficker написал, что ему надо перезагрузится и отвалился. Сменив свой логин на Conficker я получил полный доступ.

Что удалось выяснить и некоторые размышления



Есть два типа ботов:
– «новичок», он подчиняется администратору без вопросов и, я думаю, служит в основном для загрузки ботов второго типа. Команда, написанная в чат такого бота, будет исполнена на сервере так, как если бы ее набирали в терминале, результат так же выведется в терминал;
— «рабочий», тут администратору требуется вводить пароль, для более-менее важных операций. Тем не менее, команда «`help» работает вообще для всех.

Тело «рабочего» удалось скачать. Основные функции – проверять на уязвимости другие сайты, DDoS, загрузка эксплоитов с сервиса и т.п. В данной версии бота логинов было уже два: Conficker и ikhy (второй логин правда работал не у всех). Пароль dor. После команды “`auth dor” в чате с конкретным ботом (в общем канале лучше этого не делать), появляется расширенный help и доступ ко всем командам.

Если выбрать логин из предопределенных у бота «новичка», дописать в конец случайное число и после этого зайти на IRC сервер, то при этом автоматически открывается канал #bajinganIRCD. Как все это выглядит (я залогинился как “Sylvie-12“) можно посмотреть на скриншоте.



Тело «рабочего» лежит в /temp/.logs.

«Рабочий» запущен с правами “apache”.

Угнать такой ботнет не представляет труда. Во-первых, у всех «рабочих» одинаковый пароль. Достаточно получить тело одного из них (можно сидеть и ручками эмулировать «новичка» или использовать honeypot), переписать, поставив триггер на выход администратора из канала, в момент выхода сменить свой ник и перегнать остальное стадо на новый сервер. Во-вторых, в данном конкретном случае, достаточно просто подождать, так как администратор постоянно отваливается. Другое дело – зачем это нужно.

Собственно на этом мое любопытство иссякло. Если кому-то будет интересно поковырять ботнет, то на данный момент он работает и пароли, я думаю, никто не менял.
Tags:
Hubs:
Total votes 61: ↑60 and ↓1+59
Comments13

Articles