Вступление:
Всем доброго времени суток, хорошего настроения и бутылки пива в руки. Сегодня текстовое радио "дамага форева" будет ненавязчиво вещать вам о некоторых новых (а для кого-то уже и не очень) продуктах в сфере ddos-а. Немного отходя от темы, хочу пояснить несколько моментов:
1. в период проведения первых тестов я был крайне заинтересован темой ддоса как таковой. Я временами хотел поднять свой ботнет, но здравый смысл всегда подсказывал что это в моем случае баловство.
2. После окончания первых тестов я попал в больницу с переломом бедра. В связи с чем оперативного завершения обзора не получилось, а сейчас очень много чего поменялось за время моей болезни, но об этом позднее.
На операционном столе пребывает Dirt jumper - ddos бот.
Автор: Sokol
icq: 228999999
]]>Описание от автора и продажа.]]>
Часть первая:
Почитали и сделали для себя необходимые пометки:
1. бот написан на делфи.
2. админка на php с минимальной нагрузкой на базу (если верить описанию)
3. почти 100% отстук файла
4. ни слова про обходы
5. 4 типа атаки на борту
Установка админки и правда безумно проста. Правда не сразу разобрался с методом входа в нее. Пока допетрил про этот самый GET-пароль - поломал себе пол мозга. Вообще финт забавный. Не зная специфического пароля попасть в админку или хотя бы посмотреть какие-то ошибки становится невозможным. При всем этом - знание этого пароля еще не дает доступа к админке.
Далее вы проходите стандартный метод авторизации по логину и паролю.
Отмечая минусы - этот пароль не играет ни какой роли в управлении ботами и получении ими команды. Забегая наперед хочу сказать, что метод выдачи заданий ботам несет в себе как положительный так и отрицательный моменты. Само задание хранится в текстовом виде в файле картинки (название файла пока не стоит писать). Огромный плюс в том, что такие вэб-серверы как nginx кэшируют статический контент и практически не дают нагрузки на сервер. Можно выдавать задания ботам с огромной скоростью и не бояться, что сервер при этом упадет. Скажем, ботнет в 15К и временем отстука 10 минут, по моим прогнозам нагрузит среднестатическую vds процентов на 10-15. Кроме того - никто не запрещает держать админку на одном серваке, а картинку с заданием на другом.
Я упоминал так же о негативной стороне этого метода. Дело в том, что для чтения задания сторонним лицом не нужно применять никаких методов. Просто обновляй прямо в браузере содержимое файла и ты будешь вкурсе кого сейчас валят... А в данном конкретном случае - команда никак не шифруется и передается в открытом виде. Предлагаю автору подумать над этим моментом. Применить какой-нить нестандартный метод шифровки, желательно придуманный им самим. Было бы прекрасно.
]]>Рис.1]]> ]]>Рис.2]]>
Реверс (огромное спасибо ph0enix.re):
Dirt Ddos bot : short analysis
Мною был получен исполняемый файл размером в 180 кб. Бот написан на Delphi.
0x01 START
При старте бот получает путь, по которому лежит запущенный экзешник (через command line System. ParamStr) и пути инсталяции и конфига (%SystemRoot%\\system32\\drivers\\svlkanager.exe и %SystemRoot%\\keys.ini). Эти строки хранятся не зашифрованными. Далее происходит сравнение пути инсталла с путем запуска и, в случае если они одинаковы, происходит попытка запуска сервиса бота. Если же они различны, то начинается инсталляция.
0x02 INSTALL
В начале инсталляции бот пытается переименовать старые экземпляры конфига и зкзе (они так и остаются лежать в %SystemRoot%\\system32\\drivers\\svlkanager.exeXXX и %SystemRoot%\\keys.iniXXX). Далее копируется тело и генерируется новый конфиг. Последний содержит только один параметр botid, представляющий собой строку из 15 десятичных чисел. Далее он инсталлирует себя в качестве сервиса через SCManager и запускает его.
ODE:0042762F push 0 ; lpPassword CODE:00427631 push 0 ; lpServiceStartName CODE:00427633 push 0 ; lpDependencies CODE:00427635 push 0 ; lpdwTagId CODE:00427637 push 0 ; lpLoadOrderGroup CODE:00427639 push edi ; lpBinaryPathName CODE:0042763A push SERVICE_ERROR_NORMAL; dwErrorControl CODE:0042763C push SERVICE_AUTO_START; dwStartType CODE:0042763E push 110h ; SERVICE_INTERACTIVE_PROCESS|SERVICE_WIN32_OWN_PROCESS CODE:00427643 push 0F0000h ; dwDesiredAccess CODE:00427648 push offset DisplayName; "sv_lkanag" CODE:0042764D push ebp ; lpServiceName CODE:0042764E push esi ; hSCManager CODE:0042764F call CreateServiceA
0x03 MANAGER THREAD
Это основной поток, который осуществляет общение с админкой, парсинг заданий и запуск рабочих потоков.
Вначале из файла keys.ini инициализируется глобальная переменная botid
CODE:00426C46 mov edx, ds:AnsiString_IniPath CODE:00426C4C mov eax, [ebp+TStringList_botid] CODE:00426C4F mov ecx, [eax] CODE:00426C51 call dword ptr [ecx+68h] ; TStrings.LoadFromFile\Далее расшифровывается строка с доменом и путем до скрипта и осуществляется скачивание тасков с сервера. Скачивание защищено слабым антипатчем, который проверяет соответствие вшитого хэша и хэша от домена. Непосредственно скачивание тасков осуществляется через метод THTTPSend.HTTPMethod, как и все сетевое взаимодействие.
Далее осуществляется парсинг тасков и заполнение глобальных переменных DDosMethod, MaxThreads и таймаут. Урлы жертв хранятся в TStringList'е. Отпарсив таски бот начинает создавать рабочие потоки, числом MaxThreads. Далее он засыпает на указанное время, после чего процедура повторяется вновь.
0x04 WORKER THREAD
Непосредственно производит ддос.
На самом деле все используемые методы это http flood. В HTTP flood, Synchronous flood и Downloading flood используется get (огромный привет автору за Synchronous flood), а POST flood соответственно POST =) . UserAgent меняется во всех процедурах флуда, а referrer только в POST flood. Все юзерагенты и рефереры хранятся в незашифрованном виде. Все сетевое взаимодействие опять же производится THTTPSend.HTTPMethod, etc.
0x05 CONCLUSION
В целом бот не понравился, никаких проверок. Куча глобальных переменных, никак не синхронизированных между потоками.
[Ar3s]Часть данного текста была откорректирована, т.к. раскрывала коммерческие тонкости бота. Согласно правилам написания обзоров - я обязан был удалить эти части реверса.
Тесты:
Перед самым вкусным моментом обзора хочу вставить еще пару копеек. Я всегда знал, что ддос-еры народ грубоватый! И, в случае возникновения конфликтов, с удовольствием применяют грубую силу. Именно благодаря этим тестам до меня на 100% дошло почему. Нет, я и раньше все знал. Ничего нового. Но ощущения... Это похоже на поэзию и наркотик одновременно. Когда от одного твоего телодвижения сайты начинают падать как котята - возникает ощущения бога. Ты начинаешь, сам того не замечая, думать что ты всесилен. Правда это чувство могут резко оборвать обстоятельства или люди в погонах. Поэтому всем, кто зачитался словами строкой выше, - советую вернуться на грешную землю...
Крипт:
С криптом вышел напряг. Мой любимый сервис взял задание и свалил в оффлайн (на неделю, как потом выяснилось, у них какой-то срочный заказ свалился). Пришлось срочно выкручиваться. Один из покупателей этого бота (о котором я на тот момент знал и с которым общался и консультировался (привет передаю отдельный)) неожиданно пошел навстречу и предложил криптануть у своего криптора. Человека, который это уже делал. В итоге через 20 минут у меня на руках был чистый билд весом 170,4 кб.
Отстук:
1. Тест проводился на отстук с лоадера. Загрузки брались у знакомого сэллера.
Отгружено по стате: 1985
Отстучалось в админку: 1859
Отстук составил: 93,65%
]]>Рис.3]]> ]]>Рис.4]]>
2. Тест должен был быть проведен на связке Eleonora Exploit pack (ввиду моей болезни проведен не был. В ближайшее время сделаю.)
Проба атаки :
Т.к. опыта работы с этим ботом у меня небыло - я часто консультировался с автором и первым покупателем. Оба активно помогали советами.
В качестве первого подопытного был выбран варезник небольших размеров - netz[точка]ru (метод атаки Post Flood)
После старта атаки упал секунд за 20.
]]>Рис.5]]>
Далее был выбран хостер средних размеров hosting[точка]ua (метод атаки Post Flood)
Упал секунд за 20 после старта атаки.
]]>Рис.6]]> ]]>Рис.7]]>
Тут у меня начал включаться режим бога. Дело в том, что скорость падения серверов меня поразила. И захотелось большего...
Следующей целью был выбран варезник с приличным количеством посещений ежедневно nnm[точка]ru (метод атаки Post Flood)
Упал моментально. Секунд 5 всего
три! сервака по dns
89.111.189.147
89.111.189.148
89.111.189.149
]]>Рис.8]]>
Интерес к боту непомерно возрастал. Я и так использовал огромное число потоков для теста, но мне захотелось выжать максимум из своих ботов. Благо жалеть их мне не приходилось. Я Хотел видеть мощь и лавину...
Следующей целью стал microsoft[точка]com (давняя мечта)
Уложить не удалось. Только 1 bad по хост-трэкеру. (Решил не позориться и скрин не показывать )
Несколько поубавив спесь, и поняв, что ботов у меня не так много как того хотелось бы, я выбрал следующую цель - hp[точка]com
Полученные результаты: 31 Ok 25 Ошибка(ок)
семь!!! серверов.
]]>Рис.9]]> ]]>Рис.10]]>
p.s. всем атакованным сайтам приношу личные извинения. Ничего личного. Тест на две-три минуты. Надеюсь вам он тоже был полезен для определения уровня защищенности серверов.
Впереди еще тест на отстук со связки и тест на другие виды атак.
Более 2 месяцев мой домен был натравлен на ip 127.0.0.2. Спустя это время в среднем в админку ежесуточно отстукивает порядка 60 ботов. т.е. выжал я машины пользователей до упора в момент тестов. Реакция не заставила себя ждать.
]]>Рис.11]]>
Теперь поговорим о delphi. Много мнений, много доводов... Я часто бываю зажат между двух огней. Первые утверждают, что на нем нельзя писать подобные проекты. Код получается грязный, много лишнего. Большой размер и т.д. Вторые утверждают, что такие бинарники легче криптовать, что на delphi можно писать также продуктивно как и на c++. Мое мнение пока остается с первой группой лиц. Грузить/джойнить файл большого размера сложнее и затратнее (и не надо мне о широких каналах говорить, отстук маленького файла всегда будет выше чем большого. И факторов здесь много.) Код написанный на ассемблере (а именно его я считаю стандартом для написания малвари) намного чище и живучее. Уж так сложился мой опыт. У каждого может быть свое мнение на этот счет и я не собираюсь с вами спорить. А вот послушать ваши мнения мне в очередной раз было бы интересно. Я даже холиварчик бы почитал на этот счет с удовольствием. Хотя, забегая на перед - скоро будет такая возможность. В следующем обзоре будет интересный лоадер на delphi.
Еще хотел поговорить о размерах файла. У данного бота он составляет порядка 180 кб. Дело в том, что многие утверждают о неоспоримых плюсах файлов большого размера. Вроде как АВ на них меньше реагируют. В частности проактивки палят любой exe слишком маленького размера. Возможно часть истины в этом есть, но она есть только в случае наличия обходов. В нашем случае же их нету. Значит большой размер - только помеха.
Мне вот всегда хотелось законченных продуктов. Притом во всем. Я часто в дискусиях упоминаю продукцию apple которая максимально продумана. Такого же подходы мне не хватает во всех продуктах. Не только в этом боте. У меня, по мере тестов, рождались идеи калькулятора нагрузки, который бы рассчитывал при каких наименьших потоках наша жертва упадет. Да это относительные цифры. Но все же они бы помогали минимально нагружать ботнет и дольше сохранять ботов онлайн. Или же автоматическая регулировка потоков в зависимости от пинга сервера/ответа хост-трэкера. Но это мысли вслух. Я не хотел бы что бы их воспринимали как укор автору. Скорее - как информацию для дальнейших разработок.
Насколько мне известно - на нескольких форумах появились предложения о продаже этого бота барыгой. При этом наглость не имеет границ. Цениик был выставлен как у автора, хотя, естестенно, ни о какой поддержке речи не велось. На данный момент автор разработал новую версию, если не ошибаюсь - третью. И активно ею занимается. Барыге передаю привет. От такой наглости как у тебя - просто волосы дыбом вставали. Доводы типа "какая [мат] разница" и т.д. меня поразили... Человек при этом в открытую ругается с администрацией форумов и автором, если тот пишет что ТС барыга. Последний раз топ видел на эксплоите.
Подводя итоги всем тысячам байт написанных выше - хочу немного выразить свое мнение. Бот неплох для начинающего ддосера. Или же для тех, кому срочно нужно "завалить". Он затратен по долговременной работе. Боты будут сильно дохнуть. И дело здесь как в силе атаки выжимаемой из каждого инфицированного пользователя так и в способе заражения и жизни бота. Любой мало-мальский фаервол тут же обнаружит и информирует пользователя о активности. Ботом хорошо разово грузануться и завалить на сутки-двое-трое можный сервак. Но долго такая атака без "подпитки" не продержится. Хотя и загрузы азии в таких атаках здорово спасают. Соотношение цены со временем жизни этих ботов будут достаточными что бы длительное время поддерживать актуальность атаки.
Как обычно, в завершении обзора, выражаю благодарности: Sokol (автору бота за предоставленный материал и огромную помощь в написании обзора), ph0enix.re (за реверс бота и теплое отношение к дамаге), HTC (за все заслуги, которые я мог бы очень долго перечислять), Exmanioze (за связку тест на которой я сделаю чуть позже) и всем посетителям за интерес к моей писанине.
Автор:Ar3s