Упаковщик: отсутствует
Дата компиляции:
- 05.09.2018 05:38:37 (scansts.dll)
- 20.12.2018 16:08:02 (CLNTCON.ocx)
- 06.03.2019 06:58:28 (http_dll.dll)
SHA1-хеши:
- aa0e7101b1663c23f980598ca3d821d7b6ea342d (scansts.dll)
- b03c98a9539d4cbb17f2efc118c4b57882b96d93 (CLNTCON.ocx)
- d52152661c836e76bebd46046ba3f877c5d381d8 (http_dll.dll)
Описание
Загрузчик бэкдора BackDoor.PlugX.28, написанный на языке С. Представляет собой вредоносную библиотеку, функционирующую в процессе EXE-файла с валидной цифровой подписью, обеспечивающую распаковку и выполнение шелл-кода с полезной нагрузкой. Библиотека подгружается в процесс методом DLL hijacking.
Компоненты загрузчика и используемые приложения:
SHA1-хеш EXE-файла | EXE | DLL | Shellcode |
---|---|---|---|
5c51a20513ba27325113d463be9b5c6ed40b5096 | EMLPRO.EXE | scansts.dll | QuickHeal |
b423bea76f996bf2f69dcc9e75097635d7b7a7aa | CLNTCON.exe | CLNTCON.ocx | CLNTCON.ocp |
5d076537f56ee7389410698d700cc4fd7d736453 | EHSrv.exe | http_dll.dll | ESETSrv |
Принцип действия
scansts.dll
При загрузке в соответствующий процесс библиотека по зашитому смещению передает управление на вызов экспортируемой функции scansts_2.
В экспортируемой функции обращается к файлу QuickHeal, расположенному на атакованной системе по адресу C:\Windows\System32. Затем проверяет наличие ключа реестра HKLM\Software\BINARY или HKCU\Software\BINARY для определения дальнейших действий. В случае отсутствия ключей инициирует расшифровку шелл-кода QuickHeal и вызывает его, передав аргументом 0. Алгоритм расшифровки:
s = ''
for i in range(len(d)):
s += chr((((ord(d[i]) + 0x4f) ^ 0xf1) - 0x4f) & 0xff)
CLNTCON.ocx
Представляет собой улучшенную версию scansts.dll. Основной вредоносный код расположен в экспортируемой функции DllRegisterServer. Вызов функции расшифровывает код самой DLL с использованием операции XOR. Затем следует обращение к файлу CLNTCON.ocp и проверка наличия ключей HKLM\Software\BINARY или HKCU\Software\BINARY. Процесс расшифровки шелл-кода происходит в два этапа — в дополнение к вышеуказанному алгоритму применяется алгоритм RC4 с ключом дешифровки CLNTCON.ocp.
http_dll.dll
Аналог CLNCON.ocx, за исключением отличий:
- основной код трояна находится в экспорте StartHttpServer;
- в качестве ключа дешифровки RC4 используется ESETSrv.
Шелл-код QuickHeal
Представляет собой обфусцированный шелл-код с зашифрованным бинарным файлом и конфигурацией. Обфусцированная часть содержит инструкции для расшифровки кода, извлекающего полезную нагрузку.
Полезная нагрузка извлекается функцией malmain и описывается следующей структурой:
#pragma pack(push,1)
struct st_data
{
_DWORD size;
_BYTE data[size];
};
struct shellarg
{
_DWORD shellcode_ep;
_DWORD field_4;
st_data* mod;
_DWORD comp_size;
st_data* cfg;
_DWORD field_14;
_DWORD field_18;
};
#pragma pack(pop)
Для декомпрессии используется функция RtlDecompressBuffer. В процессе извлечения полезной нагрузки шелл-код проверяет сигнатуры исполняемого файла, которые заменены с MZ и PE на XV. Далее выполняется DllMain, куда параметром lpReserved передается указатель на структуру shellarg, в которой хранится конфигурация для полезной нагрузки.