Анализ ботнета DarkSky

Анализ ботнета DarkSky

ims0rry

Админ-панель

Оболочка

Сразу хочется отметить, что в плане внешности, панелька очень даже неплохая.

Тут же отмечу, что имеются некоторые баги:
1) Я запускал файл на дедике - он отстучал в двух разных ботов, хотя по данным они идентичны

2) Неправильно определяется версия Windows: на дедике Windows Server 2012 R2, а в панели Win8/10x64

Присутствует удобная настройка панели, страница тасков, логов, последних действий.

Внутренности

Вот тут уже начинается темная сторона этого продукта. Из серьезных недоработок я нашел:

1) Update - автообновление панели, которое можно использовать как бекдор

Класс:

Использование:

Возможно, сделано это ненамеренно, но риск остается.

2) Уязвимость к SQL-инъекциям - хоть и используется mysqli, но толку от него ноль:

Данные вставляются в принятом формате (я где-то видел метод, который регулярками что-то либо сравнивает, либо чистит, но регулярки, я слышал, не спасают):


3) "Шифрование данных" - это HEX. Если уж заявили о шифровании, нужно его сделать адекватно, а не так, чтобы все это через любой онлайн-декодер расшифровывалось:

Анализ файла

PE

Смотрим через PE-сканнеры:

Файл ничем не запакован, ЯП - Delphi.

Данные

Открываем файл в IDA и первое, на что обращаем внимание - строки:

Очень много hex-строк, а как мы уже знаем, в софте именно это является основным шифрованием данных. При декодировании можно найти пару интересных строк:

User-Agent с которым делается http-запрос:


Хост на который привязан лоадер:

Параметры:

А тут мы видим что лоадер использует стандартную автозагрузку:

Функции

Основной метод выглядит так:

Происходят DLL-проверки (чек на песочницу, виртуалку и т.д.), далее происходит запуск в памяти массива байт (предпоследняя строчка).

На графе выглядит примерно так:

Теперь нам нужно отыскать то, что запускается в памяти:

Переходим:

Далее открываем функцию Main этого массива (sub_420434):

В функции sub_4213B8 происходит запрос к серверу, там же мы видим захексованный хост и параметры:

Далее в цикле происходит запрос текущих тасков и их выполнение. По названиям строк (str_load, str_udp, str_method_http) не трудно догадаться что первое - это таск загрузки и запуска файла, второе - udp-flood, третье - http-flood.

Смотрим функции по порядку:

Загрузка и запуск файла

Загрузка:

Запуск:

UDP-flood

HTTP-flood

В цикле стартуют потоки этой функции:

Реализация довольно громоздкая, можно было сделать куда проще и эффективнее.

Ссылки

Сорцы панели + семпл - https://github.com/ims0rry/DarkSky-botnet

Продажник - https://lolzteam.net/threads/314749/

-----------------------------

Автор @ims0rry

https://t.me/ims0rryblog