Хозе Назарио (Jose Nazario) из компании Arbor Networks недавно разместил анализ вредоносной программы Trojan.Heloag в веблоге компании. В его сообщении, в частности, говорилось, что он наблюдал поведение троянца, которое могло свидетельствовать о наличии функционала управления ботнетом через одноранговые сети. Однако анализ, проведенный Хозе, был динамическим, и, когда я с ним связался, Хозе не мог с уверенностью подтвердить наличие у ботнета подобных функций (хочу также поблагодарить Алекса Кокса (Alex Cox) за предоставленную данные по сетевой активности, полученные с помощью его ловушки). Поскольку меня интересуют одноранговые ботнеты, я не мог не изучить вопрос более глубоко.
Бинарные файлы Heloag, которые мне довелось изучить (6ede527bb5aa65eae8049ac955b1018d, загружаемые d9b14a7bc0334458d99e666e553f0ee0) не содержат функционала управления ботнетом через одноранговые сети! Напротив, у бота очень простой интерфейс управления, команды и данные пересылаются по протоколу TCP. Поддерживаются следующие типы команд (тип команды кодируется первым байтом пакета):
- DDoS-атака на определенный злоумышленником сервер с применением различных методов:
- TCP DDoS: используется функция connect, данные на сервер не посылаются
- UDP DDoS: используется функция sendto, на сервер отправляется пакет со случайными данными
- HTTP DDoS: с помощью функции InternetOpenUrlA делается запрос на сервер (в качестве параметра User-Agent используется строка «helloAgent»)
- HTTP DDoS: осуществляется переход по ссылкам с полученной от сервера страницы (в качестве параметра User-Agent используется строка «Google page»)
- Загрузка файла из интернета по URL и его запуск на зараженном компьютере; длина строки URL ограничена 164-мя (0xA4) байтами
- Отправка в центр управления имени зараженного компьютера
- Прекращение ведущейся в данный момент DDoS-атаки
- Отключение от текущего командного сервера и соединение с новым центром управления
Дизассемблированный код функции 4
Таким образом, несмотря на то, что при динамическом анализе наблюдалось соединение зараженного компьютера с несколькими центрами управления, мы имеем дело не с управлением через одноранговую сеть, а с «передачей» бота от одного центра управления к другому. Это может иметь своей целью балансировку нагрузки или сдачу ботов в аренду. Поскольку в любой конкретный момент бот соединен только с одним центром управления, подобная схема мало что дает в плане противодействия выводу ботнета из строя (уф…).
Данный бот интересен с точки зрения структуры вредоносной программы. В глаза бросается следующее: практически каждая команда боту определяется своим неким уникальным значением управляющего байта, но все команды по началу DDoS-атаки объединены одним значением этого управляющего байта. Чтобы бот понял, какой же из методов DDoS-атаки применять, пересылается дополнительная информация, так сказать, дополнительные управляющие байты. Логичней было бы разделить разные техники DDoS-атак сразу и просто назначить каждому методу свое уникальное значение самого первого управляющего байта. Кроме того, в коде, отвечающем непосредственно за осуществление DDoS-атаки, активно используется класс С++ «std::string», тогда как основной код работает со строками при помощи функции wsprintf. Похоже, что проект стал результатом сотрудничества двух человек или, возможно, один приобрел у другого часть исходного кода.
Данная вредоносная программа почти наверняка создана в Китае. Во-первых, применение функции wsprintf дает возможность использовать названия папок и файлов, содержащие символы, не входящие в алфавиты западных языков, что редко встречается во вредоносных программах, созданных в западных странах. Во-вторых, в двоичном коде в явном виде содержится один китайский IP-адрес, DDoS-атака на который невозможна ботом ни при каких условиях (проверка осуществляется после определения IP-адресов с помощью системы DNS).
У Heloag нет друзей, только хозяин