# Анализ ботнета DarkSky – Telegraph **telegra.ph/Analiz-botneta-DarkSky-12-30** ims0rry December 30, 2017 ## Анализ ботнета 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://github.com/ims0rry/DarkSky-botnet) ----- Продажник - [https://lolzteam.net/threads/314749/](https://lolzteam.net/threads/314749/) ---------------------------- Автор @ims0rry [https://t.me/ims0rryblog](https://t.me/ims0rryblog) -----