Многофункциональная и многомодульная троянская программа-бэкдор, написанная на языке Си. Распространяется с использованием троянца Trojan.Siggen6.31836. Обладает следующими функциональными возможностями:
- запуск на инфицированном компьютере FTP-сервера;
- запуск на инфицированном компьютере Socks5 прокси-сервера;
- модификация протокола RDP для обеспечения удаленного доступа к инфицированному компьютеру;
- фиксация нажатий пользователем клавиш (кейлоггинг);
- возможность установки обратной связи с инфицированным ПК для FTP, RDP и Socks5, если в сети используется NAT (бэкконнект);
- перехват данных по шаблонам PCRE (Perl Compatible Regular Expressions) — библиотеки, реализующей работу регулярных выражений в среде Perl, для чего троянец перехватывает все возможные функции, связанные с работой в Интернете;
- перехват токенов SCard;
- встраивание в просматриваемые пользователем веб-страницы постороннего содержимого (веб-инжекты);
- расстановка перехватов различных системных функций в зависимости от принятого конфигурационного файла;
- модификация кода запущенного процесса в зависимости от принятого конфигурационного файла;
- взаимодействие с различными функциональными модулями (плагинами);
- создание снимков экрана;
- поиск в инфицированной системе приватных ключей.
Для обмена данными с управляющим сервером BackDoor.Yebot использует как стандартный протокол HTTP, так и собственный бинарный протокол, при этом оба протокола используют для обмена данными порт 80. Примеры HTTP-запросов:
http://46.***.***.94/d/i.html?b=88B22416&c=88B22416
По этому запросу загружается переупакованный троянец-лоадер полезной нагрузки Trojan.Siggen6.31836.
http://46.***.***.94/t/i.html?b=88B22416&c=88B22416
Запрос зашифрованного алгоритмом RC4 файла конфигурации, который после расшифровки имеет следующую структуру:
<?xml version="1.0" encoding="utf-8"?>
<tasks>
<task taskid="49">
<startat>0</startat>
<stopat>0</stopat>
<daemonconf>46.***.***.94:80:some_magic_code1</daemonconf>
<plugin>internal</plugin>
<exec_type>3</exec_type>
<function>sndbtnfo</function>
<params />
</task>
<task taskid="525">
<startat>0</startat>
<stopat>0</stopat>
<daemonconf>46.***.***.94:80:some_magic_code1</daemonconf>
<plugin>internal</plugin>
<exec_type>0</exec_type>
<function>curls</function>
<params>
<param>46.***.***.24</param>
<param>46.***.***.94</param>
</params>
</task>
</tasks>
Запрос загрузки дополнительных модулей (плагинов):
http://46.***.***.94/tp/i.html?m=<имя плагина>&b=98B22416&s=0&c=98B22416
Запрос списка управляющих серверов:
http://46.***.***.94/dc/i.html?b=88B22416
Отчет троянской программы о выполнении задачи:
http://46.***.***.94/t/r.html?b=88B22426&tid=525
Отчет троянской программы со сведениями о версии бота:
http://46.***.***.94/u/i.html?b=88B22416&p=1&v=20&c=88B22426
Используемый бэкдором бинарный протокол имеет заголовок:
struct thead { BYTE magic[16]; //some_magic_code1 DWORD d1; //0 DWORD Bid; DWORD d3; //0 };
Далее следует информация о типе передаваемого сообщения:
#pragma pack(push, 1) struct tbody1 { DWORD Size; //размер сообщения SizeData+2 WORD Op; //номер команды }; struct tbody2 { DWORD Flag; WORD Op; //номер команды DWORD Size; //размер сообщения SizeData }; #pragma pack(pop)
Далее передаются данные, размер сообщения соответствует параметру, заданному переменной SizeData. Поддерживаются следующие команды:
- 450 — создать в системе нового пользователя с заданным именем;
- 351, 352 — изменить правила PCRE для перехвата данных;
- 108 — скачать и запустить плагин в памяти компьютера;
- 102,105 — задать конфигурацию для модификации протокола RDP;
- 400 — задать конфигурацию для веб-инжектов;
- 777 — подготовить указанные отчеты;
- 200 — отправить на командный сервер информацию об инфицированной машине;
- 350 — отправить на командный сервер похищенные ключи и данные.
Управляющий сервер троянца обладает параноидальными настройками: например, он может занести IP-адрес в черный список при поступлении с него некорректного запроса или при поступлении слишком большого количества запросов с одного IP-адреса.