SHA1: 1d5897759ee66047e1d4c6378a52079fac2303f5
Троянец-шпион, способный передавать киберпреступникам набираемый пользователем текст в окнах различных приложений, в том числе бухгалтерских. Распространяется дроппером Trojan.MulDrop6.44482, запускается непосредственно в памяти атакуемого компьютера без сохранения на диск в расшифрованном виде, при этом на диске хранится его зашифрованная копия. Основные функции:
- логирование нажатий клавиш в ряде приложений;
- передача на управляющий сервер данных об ОС на зараженной машине;
- загрузка с управляющего сервера и запуск MZPE-файлов (как с сохранением на диск, так и без).
Имеет модульную структуру. Каждый модуль использует собственные параметры id, name, title и формат передаваемых данных. Получаемая от модулей информация хранится в едином массиве данных, в начале которого имеется следующая структура:
struct st_mod
{
_BYTE garbage[20];
_DWORD all_mod_data_size;
_DWORD dword18;
_DWORD index;
_BYTE hash[16];
};
Значащими полями этой структуры являются:
- all_mod_data_size - суммарный размер всех элементов массива;
- index - количество элементов массива с данными;
- hash - MD5-хэш данных массива. Используется для контроля целостности при передаче данных от клиента серверу.
При передаче данных этого массива с сервера, первые 20 байт (поле garbage) замещаются случайными значениями.
Остальные элементы массива имеют структуру:
struct st_mod_data
{
_DWORD element_id;
_DWORD magic;
_DWORD size;
_DWORD size_;
_BYTE data[];
};
Структура st_mod_data является единой для всех данных, которые помещаются в общий массив, при этом информация может исходить не только от модулей, но и просто добавляться с соблюдением формата данных. Элемент element_id в этой структуре определяет тип и формат данных:
element_id | Значение |
---|---|
10001 | Идентификатор зараженного компьютера |
10002 | Имя ботнета (предположительно) |
10003 | Встроенное значение 0x1000002 |
10005 | Встроенное значение 0x00 |
10007 | Заголовок модуля |
10008 | Неизвестный параметр, не используется в данном образце |
10009 | Дата формирования данных модулем |
10010 | Временная метка, соответствующая моменту формирования данных модулем |
10011 | Текущее время в UTC |
10012 | Данные об ОС в виде структуры:
|
10013 | Язык, установленный по умолчанию в системе |
10014 | Имя модуля |
10016 | Список IPv4-адресов зараженного компьютера |
10017 | Список IPv6-адресов зараженного компьютера |
10018 | ID модуля |
10019 | Данные, сформированные модулем |
Модули в процессе своей работы формируют структуру st_modinfo, которая в дальнейшем сворачивается в набор структур st_mod_data.
struct st_modinfo
{
char *name;
_DWORD ts;
SYSTEMTIME time;
_DWORD title;
_DWORD data;
_DWORD data_size;
_DWORD elem10008;
_DWORD id;
};
Массив с данными, полученными от всех модулей, сохраняется в файле %APPDATA%\Roaming\ntuser.dat в зашифрованном виде (RC4+XOR).
Вся информация, которой Trojan.PWS.Spy.19338 обменивается с управляющим сервером, шифруется в два этапа, сначала с использованием алгоритма RC4, затем — XOR.
Для записи нажатий пользователем клавиш и содержимого буфера обмена троянец создает класс окна со случайным именем. Журнал с полученными данными сохраняется в файле "%APPDATA%\Roaming\adobe\system.log". Помимо этого, троянец создает таймер, который с интервалом в 1 минуту передает содержимое журнала на управляющий сервер. Для получения данных из буфера обмена регистрирует свое окно в цепочке просмотрщиков буфера обмена с помощью функции WINAPI SetClipboardViewer().Нажатия клавиш перехватываются благодаря регистрации собственного обработчика ввода. При этом троянец проверяет имя окна, в котором осуществляется ввод, на соответствие следующим маскам. В противном случае запись проводиться не будет.
*\\Skype.exe
*\\WINWORD.EXE
*\\1cv8.exe
*\\1cv7s.exe
*\\1cv7.exe
*\\EXCEL.EXE
*\\msimn.exe
*\\thunderbird.exe
*\\sbis.exe
*\\OUTLOOK.EXE
В файл журнала помимо кодов нажатых клавиш сохраняется имя заголовка окна и имя процесса в формате:
\r\n[WND: |%s|]\r\n
[PRC: |%s|]\r\n
При логировании содержимого буфера обмена данные помещаются между маркерами:
[clp bgn]\r\n
\r\n[clp end]\r\n
Вся информация в файле журнала шифруется с помощью алгоритма XOR.
Помимо этого, троянец каждые 3 минуты собирает информацию о подключенных к компьютеру устройствах для работы с картами Smart Card и формирует с полученными данными структуру st_mod_info.
Отдельный модуль собирает информацию об операционной системе, установленной на зараженном компьютере, и сохраняет ее в следующую структуру:
struct st_dummy_info
{
_BYTE IsAdmin;
_BYTE MajorVer;
_BYTE MinorVer;
_BYTE ProductType;
};
Троянец может загружать с управляющего сервера и запускать на зараженном ПК MZPE-файлы двумя способами:
- если в принимаемом буфере по нулевому смещению располагается сигнатура 0x5A4D, файл сохраняется в %TEMP% и запускается на выполнение;
- если в принимаемом буфере по нулевому смещению располагается сигнатура 0x444C, MZPE запускается без сохранения на диск.