Дата компиляции:
- 31.03.2020 02:57:57 (основной дроппер migwiz.exe)
SHA1-хеш:
- c36aabe2828b84a1221a8855b984187b89c24b44 (промежуточный дроппер в виде SFX RAR-архива dlhost.exe)
- 632f6737f5308b49cc198fea88338a3403732274 (основной дроппер migwiz.exe)
Описание
Троянская программа-дроппер, предназначенная для распространения и установки других вредоносных приложений в целевые системы. Написана на C. Поддерживает работу на компьютерах под управлением 32- и 64-битных ОС Microsoft Windows. Исследованный образец распространял бэкдора BackDoor.Whitebird.23.
Принцип действия
Описываемый образец распространялся внутри самораспаковывающегося RAR¬-архива, содержащего следующие файлы:
- migwiz.exe – основной дроппер;
- migwiz3.DAT – зашифрованный shell-код с полезной нагрузкой, предназначенной для 32-битных ОС Microsoft Windows;
- migwiz6.DAT – зашифрованный shell-код с полезной нагрузкой, предназначенной для 64-битных ОС Microsoft Windows.
Основной дроппер migwiz.exe
При запуске включает следующие системные привилегии для своего процесса:
- SeDebugPrivilege
- SeAssignPrimaryTokenPrivilege
- SeBackupPrivilege
- SeRestorePrivilege
Затем в зависимости от разрядности операционной системы он считывает из каталога, в котором был запущен, файл migwiz3.DAT или migwiz6.DAT. При наличии прав администратора троян сохраняет содержимое соответствующего файла в ключ реестра [HKLM\Software\Microsoft\MigWlz\Options] со значением Setup. Если нужных прав нет, то сохраняет его в ключ [HKCU\Software\Microsoft\MigWlz\Options] со значением Setup.
В этих ключах хранится полезная нагрузка, которую троян в дальнейшем извлекает и запускает (см. раздел «Полезная нагрузка» ниже).
Если дроппер запущен с правами администратора, он устанавливает службе IKEEXT автоматический способ запуска. Далее он проверяет, существует ли файл %WINDIR%\System32\wlbsctrl.dll. Если тот существует, троян затирает его случайными данными, после чего удаляет и заменяет файлом, который в зашифрованном виде и сжатый через RtlCompressBuffer хранится в его теле. Для расшифровки этого файла используется следующий скрипт:
def decrypt(data):
a = b = c = d = struct.unpack('<I', data[:4])[0]
s = bytearray()
for i in range(len(data)):
a = (a + (a >> 3) - 0x3C6312B6) & 0xffffffff
b = (b + (b >> 5) - 0x62B652F6) & 0xffffffff
c = (c + 0x6251F3E2 - (c << 9)) & 0xffffffff
d = (d + (0xCD56823E - (d << 7))) & 0xffffffff
s.append(data[i] ^ ((a + b + c + d) & 0xff))
return s
При этом в конец извлекаемого файла дописывается большой блок случайных данных. Этот блок начинается с сигнатуры 0xcc90 и имеет размер 0x8FF1B6 байт для 64-разрядной библиотеки и размер 0x8FF437 для 32-разрядной библиотеки.
Извлеченной библиотеке троян присваивает даты создания, доступа и модификации, аналогичные тем, что имеются у системного файла %WINDIR%\System32\rundll32.exe. После этого вредоносная программа запускает сервис IKEEXT, который загружает вредоносную библиотеку в память.
Если троян запущен без прав администратора, он проверяет наличие каталога %ProgramData%\migwiz. Если этот каталог существует, троян затирает каждый файл внутри него случайными данными, после чего удаляет файлы. Затем он удаляет и сам каталог.
Далее троян заново создает указанную папку и помещает в нее файлы migwiz.exe и migwiz.dll, которые распаковывает из своего тела. При этом библиотека migwiz.dll является той же самой библиотекой, которая сохраняется в каталог %WINDIR%\System32\wlbsctrl.dll при наличии административных прав.
После этого троян устанавливает файл migwiz.exe в автозагрузку, создавая ключ реестра [HKCU\Software\Microsoft\Windows\CurrentVersion\run] с параметром migwiz.
Для файлов migwiz.exe и migwiz.dll, а также каталога, в котором они находятся, троян выставляет даты создания, доступа и модификации, аналогичные тем, что имеются у системного файла rundll32.exe. После этого запускается файл migwiz.exe.
Загрузчик migwiz.exe
Выполняет поиск dll-библиотек, которые находятся в одном каталоге с ним, и загружает их в память.
Загрузчик migwiz.dll
Использует мьютекс для контроля того чтобы одновременно был запущен лишь один экземпляр трояна. Если он запущен как служба, то мьютекс имеет имя Global/Configer. В остальных случаях для мьютекса используется имя LocalConfiger.
В зависимости от того, как запущен троян, загрузчик читает из ключа реестра [HKLM\Software\Microsoft\MigWlz\Options] 'Setup' или [HKCU\Software\Microsoft\MigWlz\Options] 'Setup' полезную нагрузку.
Успешно прочитанная полезная нагрузка расшифровывается операцией XOR с байтом 0x90.
Затем, если троян запущен в качестве службы, он инжектирует полезную нагрузку в запущенный процесс explorer.exe. В противном случае он выполняет ее инжект в собственный процесс.
Полезная нагрузка
Хранится в реестре Windows, куда на начальном этапе заражения копируется из файлов migwiz3.DAT и migwiz6.DAT. Содержит shell-код, который получает адреса минимально необходимых функций и загружает из собственного тела исполняемый MZPE-файл. Этот файл представляет собой троянскую dll-библиотеку, детектируемую Dr.Web как BackDoor.Whitebird.23.