пятница, 22 апреля 2011 г.

Знакомтесь, ДДоС бот: Dirt jumper

Решил занятся копипастой и собрать из открытых источников описание современных инструментов для проведения DDoS атак. Оригинал статьи находится здесь: https://damagelab.org/index.php?s=60cd73f028b9cc14a8e6bbe11dc5d7ff&showtopic=21288.

Вступление:
Всем доброго времени суток, хорошего настроения и бутылки пива в руки. Сегодня текстовое радио "дамага форева" будет ненавязчиво вещать вам о некоторых новых (а для кого-то уже и не очень) продуктах в сфере ddos-а. Немного отходя от темы, хочу пояснить несколько моментов:
1. в период проведения первых тестов я был крайне заинтересован темой ддоса как таковой. Я временами хотел поднять свой ботнет, но здравый смысл всегда подсказывал что это в моем случае баловство.
2. После окончания первых тестов я попал в больницу с переломом бедра. В связи с чем оперативного завершения обзора не получилось, а сейчас очень много чего поменялось за время моей болезни, но об этом позднее.

На операционном столе пребывает Dirt jumper - ddos бот.
Автор: Sokol
icq: 228999999
------------------------------------------------------------------------------------------------------------------------
Описание от автора:

Цитата|Quote
Dirt jumper - DDoS система с огромным потенциалом мощности.
Бот Dirt jumper имеет на своём борту 4 типа атаки.

Рассмотрим каждый из них подробнее:
HTTP flood: Данный тип атаки позволяет вызвать перегрузку сервера за счёт частых, многократных запросов обычными http пакетами.
Фишка данного метода в том, что ответ от сервера не принимается, то есть бот ожидает ответа, как только сервер готов отвечать бот рвёт коннект и посылает новый запрос.
Плюсы - Высокая скорость запросов, огромная нагрузка на сервер, и полное отсуцтвие входящего трафика, что позволяет делать больше запросов в одну единицу времени.
Минусы - нет возможности сгенерировать большой пакет отправляемых данных, но на мой взгляд это и не требуется (при не большом канале инета за счёт маленького размера пакета, отправляется больше запросов в одну единицу времени), так что это можно даже отнести к плюсам.
Synchronous flood: Данный метод атаки эффективен только при потоках более 150. Бот делает запрос одновременно всеми потоками. Ждёт, пока сервер ответит всем потокам, и повторяет процедуру по кругу.
По сути, в основе данной атаки лежит первый метод.
Плюсы - В одну единицу времени вызывается нагрузка большая, чем первым способом
Минусы - При таком подходе во время выполнения запросов машина жертвы подвисает. И если инет или комп слабый может вообще подвесить машину.
Так-же на сервер не ведётся постоянной атаки, что при низком количестве ботов недопустимо.
Downloading flood:
А этот метод позволяет забить канал жертвы трафиком.
Бот выкачивает заданную картинку. Может качать всё, начиная от .exe заканчивая html кодом любой странички.
Плюсы - Огромная нагрузка на канал, возможность загружать любую инфу.
Минусы - Скорость запросов ниже, чем при первом методе, может забить канал жертвы, и бот временно выбивается из онлайна, так как из-за загрузки не сможет даже отстучать на сервер.
POST flood: А это, на мой взгляд, один из самых офигенных методов атаки!
Бот может делать GET и POST запросы одновременно!
То есть он может отправлять рандомные логины и пароли в форму, вызывая огромнейшую нагрузку на сервер: БД, буфер обмена, процессор.
Плюсы - данный метод позволяет забивать канал входящим трафиком, даёт самую большую нагрузку на сервер из всех других типов.
Минусы - Скорость запросов ниже, чем при первом методе, может забить канал исходящим трафиком, но размер пакетов вы указываете при составлении команды.
С типами атак разобрались, двигаемся дальше.

Общие характеристики бота:
1. Многопоточная атака!
2. Количество потоков и тип атаки вы может менять во время атаки, не останавливая её!
3. Бот хорошо кладет http и https.
4. Бот может атаковать по domain : port ; ftp,http, и так далее.
5. Можно атаковать одновременно до 999 сайтов.
6. Бот рандомно меняет User Agent.
7. Бот рандомно меняет Referer.
8. Есть возможность блокировки доступа к админ-панели по IP.
9. Все файлы админки при переходе на них показывают ошибку 404.
10. Даже файл админки будет показывать ошибку 404 пока вы не укажите верный get-пароль.
Пример: GET-пароль "passwd" (указывается в конфиге) при переходе по адресу
admin.php?login=pass - Будет ошибка 404, как и при любом не верном значении
admin.php?login=passwd - Будет форма авторизации
11. Статистика онлайна и общего количества ботов по странам.
Также хочется сказать пару слов о системе управлении ботом.
1. Удобная и красивая админка.
2. Не нужно заморачиваться с командами, прописал сайт, указал потоки, выбрал тип атаки, нажал старт и готово!
Хочу обратить внимание на бота. В не сжатом и не криптованом виде бот весит примерно 180кб, я сжимал до 80.
Отстук бота почти 100%.
А теперь подробности о жизни бота:
Грузил 1к азии без крипта, ровно через сутки 100-200 ботов. (у разных селлеров по разному)
Грузил 1к азии с криптом, ровно через сутки 300-400 ботов онлайн.
Причем по стате видно, что за сутки отстукивались почти все боты.

Пару слов о стате:
В админке нет возможности просматривать список ботов, так как, на мой взгляд, это лишнее.
Статистика по ботам всего по 2-м параметрам,
Today: Количество уникальных ботов за последние 24 часа.
Online: Количество ботов онлайн, то есть готовых к атаке.
Но кроме этого вы можете посмотреть сколько ботов какой страны сейчас онлайн, или вообще отстукивали за сутки.

Установка админки

1. Залить все файлы на хостинг
2. Установить права 777 на файл img.gif
3. Отредактировать файл config.php
4. Создать базу данных
5. Перейти на файл install.php


----------------------------------------------------------------------------------------------------------------------------------
Часть первая:
Почитали и сделали для себя необходимые пометки:
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 и запускает его.

Код|Code
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

Цитата|Quote
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 которая максимально продумана. Такого же подходы мне не хватает во всех продуктах. Не только в этом боте. У меня, по мере тестов, рождались идеи калькулятора нагрузки, который бы рассчитывал при каких наименьших потоках наша жертва упадет. Да это относительные цифры. Но все же они бы помогали минимально нагружать ботнет и дольше сохранять ботов онлайн. Или же автоматическая регулировка потоков в зависимости от пинга сервера/ответа хост-трэкера. Но это мысли вслух. Я не хотел бы что бы их воспринимали как укор автору. Скорее - как информацию для дальнейших разработок.

Насколько мне известно - на нескольких форумах появились предложения о продаже этого бота барыгой. При этом наглость не имеет границ. Цениик был выставлен как у автора, хотя, естестенно, ни о какой поддержке речи не велось. На данный момент автор разработал новую версию, если не ошибаюсь - третью. И активно ею занимается. Барыге передаю привет. От такой наглости как у тебя - просто волосы дыбом вставали. Доводы типа "какая хрен разница" и т.д. меня поразили... Человек при этом в открытую ругается с администрацией форумов и автором, если тот пишет что ТС барыга. Последний раз топ видел на эксплоите.

Подводя итоги всем тысячам байт написанных выше - хочу немного выразить свое мнение. Бот неплох для начинающего ддосера. Или же для тех, кому срочно нужно "завалить". Он затратен по долговременной работе. Боты будут сильно дохнуть. И дело здесь как в силе атаки выжимаемой из каждого инфицированного пользователя так и в способе заражения и жизни бота. Любой мало-мальский фаервол тут же обнаружит и информирует пользователя о активности. Ботом хорошо разово грузануться и завалить на сутки-двое-трое можный сервак. Но долго такая атака без "подпитки" не продержится. Хотя и загрузы азии в таких атаках здорово спасают. Соотношение цены со временем жизни этих ботов будут достаточными что бы длительное время поддерживать актуальность атаки.

На момент моего последнего разговора с автором - заявленная цена составляла 600 wmz.
Отправить комментарий