Немало существует ботов, с помощью которых злоумышленники организуют DDoS-атаки на интернет-сервера. Одним из самых популярных таких инструментов является Black Energy. В настоящий момент «Лабораторией Касперского» обнаружено и детектируется более 4000 вариаций этой вредоносной программы. В середине 2008-го года вирусописатели подвергли первоначальную версию бота существенному изменению. Появился так называемый Black Energy 2 («Лаборатория Касперского» классифицирует его как Backdoor.Win32.Blakken). О нем и пойдет речь в этой статье.
Шаг за шагом: составляющие бота
Автор реализовал в боте несколько основных задач: сокрытие кода программы от антивирусных продуктов, заражение системных процессов и, наконец, гибкий механизм реализации различной вредоносной активности на зараженной машине по команде из центра управления ботнетом. За выполнение каждой задачи отвечают различные составляющие вредоносной программы.
рис.1 Этапы работы Black Energy 2
Защитная оболочка
Как и большинство вредоносных программ, Black Energy 2 имеет некую защитную оболочку, скрывающую вредоносную начинку от антивирусов: шифрование, архивирование кода, также могут быть использованы анти-эмуляционные методы.
После запуска на компьютере пользователя exe-файла Black Energy 2 вредоносное приложение выделяет виртуальную память, копирует в нее код дешифровщика и передает на него управление.
В результате исполнения кода дешифровщика в памяти появляется код с функцией дроппера, исполнение которого приводит к созданию в системном каталоге «<WINDIR>system32drivers» драйвера-дешифровщика со случайным именем, например, «EIBCRDZB.SYS». После чего создается и запускается связанная с этим драйвером служба, также со случайным именем:
рис. 2 Запуск вредоносного драйвера-дешифровщика
Данный драйвер, как и изначальное exe-приложение, инициирующее процесс заражения компьютера, по своей сути является «оберткой», в которой спрятано самое интересное.
Инфектор
В коде драйвера-дешифровщика присутствует блок зашифрованных и запакованных данных:
рис. 3 Зашифрованные данные внутри драйвера-дешифровщика
Такой блок данных имеет определенную структуру:
рис. 4 Структура зашифрованных данных
С помощью ключа из этого блока строится другой ключ длиной 100h байт, который используется для расшифровки архива. Алгоритм шифрования хорошо известен — это RC4. Если размер архива совпадает с размером данных, то архивация данных отсутствует, в противном случае расшифрованный архив подвергается распаковке.
Расшифрованные данные представляют собой драйвер-инфектор, в функционал которого заложено внедрение библиотеки dll в процесс пользовательского режима svchost.exe. Чтобы запустить драйвер-инфектор, драйвер-дешифровщик выделяет под него память, копирует туда расшифрованный код, настраивает под текущее адресное пространство и передает управление. Вредоносная библиотека dll хранится в в секции «.bdata» драйвера-инфектора. Этот блок данных также имеет вышеупомянутую структуру. Драйвером-инфектором находится процесс svchost.exe, в его адресном пространстве выделяется память, в нее копируется вредоносная dll, которая настраивается под адреса выделенной памяти. Код внедренной библиотеки из режима ядра запускается следующим образом:
рис. 5 Запуск внедренной библиотеки в svchost.exe
Здесь используется обработка очереди APC. Сначала инициализируется APC с адресом функции DllEntry внедренной библиотеки, затем с помощью KeInsertQueueApc APC ставится в очередь. Когда svchost.exe будет готов к обработке APC очереди (что происходит практически сразу же), в его контексте запустится поток с адреса DllEntry.
Внедряемая dll
Внедренная в svchost.exe библиотека dll является основным управляющим звеном по организации DDoS-атаки с зараженного компьютера. Также как и драйвер-инфектор, библиотека имеет секцию .bdata, в которой хранится блок зашифрованных данных, имеющий уже известную нам структуру. Эти данные представляют собой xml-документ, в котором определены необходимые начальные настройки бота. Такой документ может выглядеть, например, вот так:
рис. 6 Начальные настройки бота
Самая важная информация — это, конечно, адрес центра управления ботнетом. В данном случае для надежности таких адресов указано два: если будет закрыт один, и бот до него не «достучится», он сможет попробовать установить связь с хозяином по резервному адресу.
На адрес центра управления бот посылает заранее подготовленный http-запрос, который представляет собой строку, содержащую идентификационные данные зараженной машины. Вот как может выглядеть такая строка:
Параметр id, идентификатор зараженной машины, включает в себя имя компьютера и серийный номер жесткого диска, на котором размещен диск C:. Далее указываются данные об операционной системе: язык системы, страна, в которой установлена система, и номер сборки системы. В конце добавляется идентификатор сборки бота (последнее поле «build_id» в xml-документе начальных настроек).
Определенный вид строки запроса служит подтверждением тому, что запрос делает именно бот. Кроме того, для центра управления своего рода паролем может служить также user-agent http-запроса.
Если центр управления принимает запрос, то в ответ он посылает файл конфигурации бота также в виде зашифрованного xml-документа. Шифрование используется то же самое, что и в случае шифрования данных в драйвере и dll — RC4. Ключом служит идентификатор зараженной машины (параметр id строки запроса, в приведенном выше примере — «xCOMPUTERNAME_62CF4DEF»).
Давайте посмотрим на пример таких инструкций:
рис. 7 Файл конфигурации: инструкции из центра управления
Раздел <plugins> сообщает боту, какие модули есть на сервере хозяина для организации DDoS-атаки. Если у бота еще нет такого модуля, или на сервере более новая версия, то бот посылает запрос серверу на скачивание плагина, например:
Плагин представляет собой библиотеку dll. Передается она боту в зашифрованном виде. Если для шифрования используется ключ, отличный от значения параметра id, то он указывается в файле конфигурации в поле <key>. После получения и расшифровки библиотеки-плагина, она размещается в выделенную под нее память, после чего готова приступить к DDoS-атаке, как только придет соответствующая команда.
Плагины загружаются на зараженный компьютер регулярно: как только вирусописатель улучшит метод атаки, бот Black Energy 2 подгрузит более новую версию плагина.
Скачанные таким образом плагины сохраняются на жестком диске зараженного компьютера в системном каталоге «<WINDIR>system32drivers» под именем «str.sys». Содержимое файла «str.sys» шифруется, ключом является значение параметра id. До шифрования данные, сохраняющиеся в «str.sys», выглядят так:
рис. 8 Незашифрованное содержимое файла str.sys: хранилище плагинов
В каждом плагине имеется экспортируемая функция DispatchCommand, которую вызывает основной управляющий модуль — внедренная в процесс svchost.exe библиотека dll. Функции DispatchCommand передается параметр — одна из команд раздела в файле конфигурации бота. После чего плагин выполняет данную команду.
Основные плагины
Основными плагинами Black Energy 2 являются ddos, syn и http. Расскажем немного про каждый из них.
Плагин ddos
На вход плагину ddos поступает адрес атакуемого сервера, протокол и порт. Соответственно, инициализируются массовые соединения с сервером на определенный порт по определенному протоколу. После установления соединения на сервер посылается заполненный случайным образом пакет данных. Поддерживаются протоколы tcp, udp, icmp и http.
Вот пример реализации выполнения команды «ddos_start udp 80»:
рис. 9 Создание сокета, протокол UDP
рис. 10-1 Отправка данных: sendto и стек
рис. 10-2 Отправка данных — куда. pTo: ip-адрес и порт
рис. 10-3 Отправка данных — что. Data: случайный набор байт
По протоколу http плагином ddos с помощью функций socket, connect и send на сервер посылается GET-запрос.
Плагин syn
В отличие от других плагинов, упомянутых в этой статье, в плагине syn присутствует сетевой драйвер. При вызове функции DllEntry плагина этот драйвер устанавливается в системный каталог «system32drivers» под именем «synsenddrv.sys». Отправку сетевых пакетов он берет на себя. Функция DispatchCommand, как уже можно догадаться, ждет от управляющей библиотеки параметр такого вида: «syn_start » или «syn_stop ». В случае получения первого параметра плагин начинает атаку, если получен второй — прекращает. Атака в данном случае представляет собой множественные запросы серверу на установку соединения, открытие сетевой сессии, так называемый «обмен рукопожатиями»:
рис. 11 SYN-атака: SYN->ACK->RST
Естественно, когда такие множественные запросы исходят от большого количества зараженных компьютеров, это создает ощутимую нагрузку на сервер.
Плагин http
Против описанных выше методов DDoS-атак часто применяется редирект: сервер с интернет-ресурсами прячется за шлюз, который видно извне, а шлюз перенаправляет запросы на сервер с ресурсами. От DDoS-атак шлюз защищается всевозможными способами, и «свалить» его не так-то просто. Соответственно, плагинами ddos и syn по IP-адресу может быть атакован только шлюз, так как никакого функционала распознавания перенаправления трафика у них нет, и сетевой «флуд», который они генерируют, до сервера с интернет-ресурсами просто не доходит. На этот случай вирусописателями и был разработан плагин http.
Получив команду «http_start <url> <port>», плагин http создает COM-объект «Internet Explorer(Ver 1.0)» с интерфейсом «IWebBrowser2». Вызывается метод Navigate с параметром из команды «http_start». В результате COM-объект «Internet Explorer(Ver 1.0)» реализует переход на указанную страничку. Далее с помощью метода Busy вредоносная программа ожидает, когда запрос полностью отработает.
рис. 12-1 Создание COM-объекта
рис. 12-2 Указатель на CLSID
рис. 12-3 Указатель на ID интерфейса
Таким образом, полностью эмулируется заход на страничку обычного пользователя. Разница лишь в том, что, в отличие от пользователя, описываемая вредоносная программа совершает множество заходов на один и тот же адрес за короткий промежуток времени. Даже если используется шлюз с редиректом, http-запрос перенаправляется на защищаемый сервер с интернет-ресурсами, и на этот сервер создается нагрузка.
Базовые команды
Помимо загрузки плагинов и исполнения команд, связанных с этими плагинами, Black Energy 2 «понимает» несколько общих команд, которые могут исходить от центра управления:
rexec — загрузить из интернета указанный файл и запустить его;
lexec — запустить указанный файл, который находится на зараженном компьютере;
die — прекратить исполнение бота;
upd — обновить бот;
setfreq — установить частоту обращения к центру управления;
http — послать http-запрос на указанную страницу в интернете.
Заключение
Изначально Black Energy создавался как бот для организации DDoS-атак, но с появлением во второй версии плагинов функционал этого вредоносного семейства практически не ограничен (правда злоумышленники пока используют его, в основном, как средство для DDoS). Можно установить плагин, например, для рассылки спама, перехвата пользовательских данных, организации прокси-сервера и т.д., и т.п. Команда upd позволяет обновлять бот, например, по-новому зашифрованной версией. Регулярное обновление дает боту возможность долгое время скрываться от ряда антивирусных программ, которые могут быть установлены на зараженном компьютере. Потенциал этого вредоносного инструмента довольно высок, что, безусловно, представляет большую опасность. Благо в Сети отсутствуют так называемые публичные версии билдеров для сборки ботов Black Energy 2, потому различные вариации этой вредоносной программы появляются не в таких количествах, как, например, того же ZeuS или первого Black Energy. Но, судя по имеющимся у нас данным, у злоумышленников построены крупные ботнеты на платформе Black Energy 2, которые уже проявили себя в DDoS-атаках.
Каким образом хозяева решат использовать свои ботнеты в дальнейшем, заранее не угадаешь. Для вирусописателя несложно создать плагин и загрузить его на зараженные компьютеры пользователей. При этом код плагина проявится только в памяти зараженного компьютера, в остальных местах — при пересылке данных ли, при хранении ли на жестком диске — вредоносные модули будут зашифрованы. К тому же сами по себе плагины для Black Energy 2 исполняемыми файлами «.exe» не являются. Плагины подгружаются только на зараженную машину, соответственно, распространяться рассчитанными на массовые заражения методами не будут и могут долгое время не попадать на глаза антивирусным компаниям. Но именно плагины в конечном итоге исполняют замысел злоумышленника — те вредоносные действия, ради которых и были заражены Black Energy 2 компьютеры пользователей. Знать их необходимо! Для этого в нашей Лаборатории и организован мониторинг подгружаемых плагинов для Black Energy 2, так что тенденции использования этого зловреда не должны от нас ускользнуть. Будем держать в курсе и вас.
Черный DDoS