Упаковщик: отсутствует
Дата компиляции: 08:48:05 27.07.2010
SHA1-хеш:
- 3e1d66ea09b7c4dbe3c6ffe58262713806564c17 (svchost.exe)
Описание
Trojan.XPath.1 представляет собой установщик компонентов многофункционального бэкдора XPath. Работает как в 32-битных, так и в 64-битных операционных системах семейства Microsoft Windows. Извлечение полезной нагрузки происходит путем установки драйвера или посредством COM Hijacking.
Принцип действия
По 5-байтовой сигнатуре данных установщик проверяет наличие шифрования у зашитой в нем конфигурации, которая в последующем используется для работы полезной нагрузки. В случае отсутствия шифрования программа завершает свою работу.
Далее следует получение данных о версии ОС, настройках UAC и наличии административных привилегий у пользователя. Из полученных данных формируется строка:
admin:%d,dwCPBA:%d,dwLUA:%d,om:%d-%d
и выводится через функцию OutputDebugStringA.
Затем троян пытается установить свой драйвер. В случае неудачи производится попытка установить модуль с помощью COM Hijacking.
После этого удаляет свой файл с диска и завершает свой процесс.
Установка драйвера
Удаляет файл с именем yyyyyyyyGoogle.sys из каталога %WINDIR%\\tracing\\. Распаковывает из своего тела нужную версию драйвера в зависимости от разрядности системы и сохраняет по указанному пути. Драйверы хранятся в семпле в сжатом при помощи библиотеки APLib виде и дополнительно зашифрованы алгоритмом на основе XOR-операции с однобайтовым ключом.
Затем сохраняет в реестре свою полезную нагрузку в виде трех модулей. Ключи создаются в ветке [HKLM\\SOFTWARE\\Microsoft\\LoginInfo]. Сохраняет полезную нагрузку:
- Video — конфигурация;
- DirectShow — модуль XPath;
- DirectDraw — модуль PayloadDll.
Модули зашиты в тело трояна в аналогичном драйверу виде (с использованием APLib и XOR) и присутствуют в двух вариантах — как для 32-разрядных, так и для 64-разрядных систем. Для каждого модуля используется свой однобайтовый ключ. При этом модули сохраняются в виде структуры:
#pragma pack(push,1)
struct mod
{
_DWORD compressed_size;
_DWORD decompressed_size;
_BYTE data[compressed_size];
};
#pragma pack(pop)
Данные модуля при этом расшифрованы, но остаются в сжатом виде.
Затем программа пытается создать службу с автоматическим запуском и ImagePath, указывающим на извлеченный драйвер. В качестве имени службы используется имя файла драйвера.
Если запустить службу через SCManager не удалось, и при этом сервис уже создан, то происходит попытка запустить драйвер через ZwLoadDriver.
Для проверки работы драйвера пытается открыть устройство \\.\BaiduHips. Если это не удалось, то повторная попытка производится через 100 миллисекунд. Всего предпринимается 15 попыток, по истечении которых установка драйвера считается невыполненной.
Если драйвер работает, тогда последовательно запускает процессы %WINDIR%\\System32\\ping.exe, %WINDIR%\\System32\\rundll32.exe, %WINDIR%\\System32\\svchost.exe и %WINDIR%\\System32\\lsass.exe.
COM Hijacking
Сохраняет свои модули в реестре аналогично действиям при установке драйвера, при этом ключи создаются в ветке [HKCU\\SOFTWARE\\Microsoft\\LoginInfo].
Перебирает ключи реестра в разделе HKU и ищет ключ с именем, содержащим подстроку S-1-5-21- и не содержащим подстроку _Classes. Внутри этого ключа создает ключ Software\\Classes\\CLSID\\{ECD4FC4D-521C-11D0-B792-00A0C90312E1}\\ для Windows 2000, Windows XP, Windows Server 2003 и Software\\Classes\\CLSID\\{B12AE898-D056-4378-A844-6D393FE37956}\\ для версий ОС, начиная с Windows Vista. В качестве значения параметра (default) для этого ключа устанавливает путь %TMP%\\Microsoft\\ReplaceDll.dll, а также создает параметр ThreadingModel со значением Apartment.
После этого распаковывает модуль PayloadDll в каталог %TMP%\\Microsoft\\ReplaceDll.dll.
Артефакты
Файл Trojan.XPath.1 содержит остатки отладочной информации, которая раскрывает пути и имена файлов с исходными кодами:
z:\\desk_codes\\project_xpath\\xpathinstaller\\client_files.h
z:\\desk_codes\\project_xpath\\xpathinstaller\\MemLoadDll.h
xPathInstaller.c
Оригинальные имена функций представлены списком:
InstallSecFunDriver
MyZwLoadDriver
SetMyLoginInfo
InstallDrv
Файл также содержит различные отладочные сообщения:
start TRUE:%s,%d\n
pOpenSCManager false:%s,%d\n
ZwLoadDriver false1 :%s,%d,%d\n
ZwLoadDriver false2 :%s,%d,%d\n
ZwLoadDriver false3 :%s,%d,%d\n
ZwLoadDriver false1 :%x\n
ZwLoadDriver ok : %x\n
ZwLoadDriver false: %x
type:%d\n
setinfo false:%s,%d겣%d\n
install all failed\n
can not pCreateFile,inst failed :%s,%d\n
%s,%d,%d\n
admin:%d,dwCPBA:%d,dwLUA:%d,om:%d-%d
Особый интерес представляет строка setinfo false. В ней содержится символ 0xACA3, который в Юникоде соответствует иероглифу "겣". Иероглиф используется в письменности Южной и Северной Кореи.