У Heloag нет друзей, только хозяин

Хозе Назарио (Jose Nazario) из компании Arbor Networks недавно разместил анализ вредоносной программы Trojan.Heloag в веблоге компании. В его сообщении, в частности, говорилось, что он наблюдал поведение троянца, которое могло свидетельствовать о наличии функционала управления ботнетом через одноранговые сети. Однако анализ, проведенный Хозе, был динамическим, и, когда я с ним связался, Хозе не мог с уверенностью подтвердить наличие у ботнета подобных функций (хочу также поблагодарить Алекса Кокса (Alex Cox) за предоставленную данные по сетевой активности, полученные с помощью его ловушки). Поскольку меня интересуют одноранговые ботнеты, я не мог не изучить вопрос более глубоко.

Бинарные файлы Heloag, которые мне довелось изучить (6ede527bb5aa65eae8049ac955b1018d, загружаемые d9b14a7bc0334458d99e666e553f0ee0) не содержат функционала управления ботнетом через одноранговые сети! Напротив, у бота очень простой интерфейс управления, команды и данные пересылаются по протоколу TCP. Поддерживаются следующие типы команд (тип команды кодируется первым байтом пакета):

  1. DDoS-атака на определенный злоумышленником сервер с применением различных методов:
    • TCP DDoS: используется функция connect, данные на сервер не посылаются
    • UDP DDoS: используется функция sendto, на сервер отправляется пакет со случайными данными
    • HTTP DDoS: с помощью функции InternetOpenUrlA делается запрос на сервер (в качестве параметра User-Agent используется строка «helloAgent»)
    • HTTP DDoS: осуществляется переход по ссылкам с полученной от сервера страницы (в качестве параметра User-Agent используется строка «Google page»)
  2. Загрузка файла из интернета по URL и его запуск на зараженном компьютере; длина строки URL ограничена 164-мя (0xA4) байтами
  3. Отправка в центр управления имени зараженного компьютера
  4. Прекращение ведущейся в данный момент DDoS-атаки
  5. Отключение от текущего командного сервера и соединение с новым центром управления


Дизассемблированный код функции 4

Таким образом, несмотря на то, что при динамическом анализе наблюдалось соединение зараженного компьютера с несколькими центрами управления, мы имеем дело не с управлением через одноранговую сеть, а с «передачей» бота от одного центра управления к другому. Это может иметь своей целью балансировку нагрузки или сдачу ботов в аренду. Поскольку в любой конкретный момент бот соединен только с одним центром управления, подобная схема мало что дает в плане противодействия выводу ботнета из строя (уф…).

Данный бот интересен с точки зрения структуры вредоносной программы. В глаза бросается следующее: практически каждая команда боту определяется своим неким уникальным значением управляющего байта, но все команды по началу DDoS-атаки объединены одним значением этого управляющего байта. Чтобы бот понял, какой же из методов DDoS-атаки применять, пересылается дополнительная информация, так сказать, дополнительные управляющие байты. Логичней было бы разделить разные техники DDoS-атак сразу и просто назначить каждому методу свое уникальное значение самого первого управляющего байта. Кроме того, в коде, отвечающем непосредственно за осуществление DDoS-атаки, активно используется класс С++ «std::string», тогда как основной код работает со строками при помощи функции wsprintf. Похоже, что проект стал результатом сотрудничества двух человек или, возможно, один приобрел у другого часть исходного кода.

Данная вредоносная программа почти наверняка создана в Китае. Во-первых, применение функции wsprintf дает возможность использовать названия папок и файлов, содержащие символы, не входящие в алфавиты западных языков, что редко встречается во вредоносных программах, созданных в западных странах. Во-вторых, в двоичном коде в явном виде содержится один китайский IP-адрес, DDoS-атака на который невозможна ботом ни при каких условиях (проверка осуществляется после определения IP-адресов с помощью системы DNS).

Публикации на схожие темы

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *