Многофункциональный бэкдор, способный выполнять на инфицированном компьютере поступающие с удаленного сервера команды.
Модуль, отвечающий за инсталляцию бэкдора в систему, и реализующий функции буткита, позаимствован разработчиками BackDoor.Gootkit.112 у троянцев семейства Trojan.Mayachok, при этом вирусописатели внесли в исходный код ряд существенных изменений:
- При распространении оригинального Trojan.Mayachok для генерации уникального кода VBR использовалась утилита BkGen, на основе сгенерированного кода выполнялась сборка троянца. В BackDoor.Gootkit.112 все функции собраны в самом дроппере, который в процессе заражения видоизменяет код VBR.
- Для упаковки модулей в Trojan.Mayachok использовалась библиотека aplib, BackDoor.Gootkit.112 расшифровываются и распаковываются с использованием RtlDecompressBuffer(COMPRESSION_FORMAT_LZNT1).
- Драйвер, которому передает управление загрузочная запись раздела (Volume Boot Record, VBR) до момента инициализации системы, также взят из известных исходников Trojan.Mayachok, но его код был частично переписан: так, большинство указателей (шелл-код для выполнения инжекта, различные таблицы) с неустановленной целью были приведены к базонезависимому виду. Пример — получение адреса на данные:
Создание строк:get_shellcode2 proc near ; CODE XREF: csrss_inject+67p .text:10006645 E8 00 00 00 00 call $+5 .text:1000664A 58 pop eax .text:1000664B 83 C0 05 add eax, 5 .text:1000664E C3 retn .text:1000664E get_shellcode2 endp .text:1000664E .text:1000664F ; ========= S U B R O U T I N E =========================== .text:1000664F ; Attributes: noreturn bp-based frame .text:1000664F .text:1000664F shellcode2 proc near
При этом некоторые указатели остались нетронутыми. В частности, один из них ссылается на фразу из репертуара Гомера Симпсона «Just pick a dead end and chill out till you die», которую троянец выводит в отладчик после предварительной инициализации загрузчика..text:10003B0B push ebp .text:10003B0C mov ebp, esp .text:10003B0E sub esp, 78h .text:10003B11 call get_api_table .text:10003B16 mov [ebp+pAPITable], eax .text:10003B19 cmp [ebp+pAPITable], 0 .text:10003B1D jz no_apitable .text:10003B23 mov dword ptr [ebp+szRegistryPath], 52005Ch ; REGISTRY\MACHINE\CURRENTCONTROLSET\SERVICES\null .text:10003B2A mov dword ptr [ebp+szRegistryPath+4], 470045h ; .text:10003B31 mov dword ptr [ebp+szRegistryPath+8], 530049h ; .text:10003B38 mov dword ptr [ebp+szRegistryPath+0Ch], 520054h ; .text:10003B3F mov dword ptr [ebp+szRegistryPath+10h], 5C0059h ; .text:10003B46 mov dword ptr [ebp+szRegistryPath+14h], 41004Dh ;
Имя «Gootkit» встречается как в самом загрузчике вредоносной программы, так и в модуле полезной нагрузки:
Помимо прочего, из драйвера удалены все компоненты, отвечающие за связь с ним работающих в пользовательском режиме модулей троянца, например, позволявшие этим модулям использовать ресурсы скрытой файловой системы VFS. При этом функции инициализации и защиты этой файловой системы в BackDoor.Gootkit.112 остались.
В Trojan.Mayachok полезная нагрузка была интегрирована в загрузчик, в то время как BackDoor.Gootkit.112 хранит модули полезной нагрузки в ветви системного реестра Windows HKLM\SOFTWARE\CXSW, используя для этого значения binaryImage32 или binaryImage64 в зависимости от разрядности операционной системы.
Для получения полезной нагрузки BackDoor.Gootkit.112 внедряет специальный шелл-код в процессы SERVICES.EXE, EXPLORER.EXE, IEXPLORE.EXE, FIREFOX.EXE, OPERA.EXE, CHROME.EXE. Основная задача внедряемого шелл-кода — загрузить модуль полезной нагрузки из системного реестра или скачать его с удаленного интернет-ресурса. Бинарные файлы полезной нагрузки сжаты и зашифрованы.
Обход UAC
Для повышения своих привилегий в инфицированной системе BackDoor.Gootkit.112 использует оригинальную методику обхода защиты учетных записей (User Accounts Control, UAC) — для этого используется штатный механизм операционной системы shim (Microsoft Windows Application Compatibility Infrastructure). Троянец задействует в своих целях программу сетевого клиента SQL Server (cliconfg.exe) — в манифесте этой программы свойству AutoElevate соответствует значение «true», поэтому Windows поднимает для таких приложений привилегии в обход UAC.
С использованием библиотеки apphelp.dll (SdbCreateDatabase, SdbDeclareIndex, SdbWriteStringTag, и т.д.) BackDoor.Gootkit.112 создает в Windows базу данных, имя которой и значение параметра Application генерирует случайным образом:
...
if(!SdbWriteStringTag(hDb, TAG_NAME, szAppName))
break;
if(!SdbWriteStringTag(hDb, TAG_APP_NAME, SHIM_APP_NAME))
break;
if(!SdbWriteStringTag(hDb, TAG_VENDOR, _T("Microsoft")))
break;
...
SdbWriteStringTag(hDb, TAG_COMPANY_NAME, _T("Microsoft Corporation"));
SdbWriteStringTag(hDb, TAG_INTERNAL_NAME, szAppName);
SdbEndWriteListTag(hDb, listMatch);
TAGID listShim = SdbBeginWriteListTag(hDb, TAG_SHIM_REF);
SdbWriteStringTag(hDb, TAG_NAME, _T("RedirectEXE"));
SdbWriteStringTag(hDb, TAG_COMMAND_LINE, szTargetApp);
SdbEndWriteListTag(hDb, listShim);
...
Для загрузки троянца используется свойство RedirectEXE, позволяющее запустить вместо указанного приложения его «исправленную» версию или саму вредоносную программу. В качестве параметра свойства RedirectEXE BackDoor.Gootkit.112 указывает путь к своему исполняемому файлу и ссылку на созданную базу данных.
После создания базы она устанавливается в систему с использованием утилиты sdbinst.exe, при этом в манифесте данной утилиты свойству AutoElevate также соответствует значение «true», поэтому она запускается в Windows с особыми привилегиями. В целом алгоритм обхода UAC выглядит следующим образом:
- Троянец создает и устанавливает новую базу данных;
- Запускается утилита cliconfg.exe, которая стартует в системе с повышенными привилегиями;
- Механизм shim выгружает оригинальный процесс и с использованием RedirectEXE запускает троянца.
Полезная нагрузка
Полезная нагрузка BackDoor.Gootkit.112 представляет собой большой исполняемый файл объемом порядка 5 Мбайт, написанный на языке С++. Большая часть этого файла представляет собой интерпретатор JavaScript, известный под названием Node.JS. Внутри исполняемого файла содержится более 70 скриптов на языке JavaScript, значительная часть которых представляет собой ядро Node.JS, создающее удобный интерфейс для работы со встроенными объектами. Часть скриптов реализует вредоносный функционал троянца — они позволяют бэкдору выполнять поступающие от удаленного сервера команды, а также загружать с удаленного сервера дополнительные модули, которые сохраняются в системном реестре, так же, как и основной модуль BackDoor.Gootkit.112.
Среди прочих, троянец позволяет выполнять следующие команды:
- Перехват http-трафика;
- Выполнение инжектов;
- Блокировка определенных URL;
- Создание снимков экрана;
- Получение списка запущенных в системе процессов;
- Получение списка локальных пользователей и групп;
- Выгрузка заданных процессов;
- Выполнение консольных команд;
- Запуск исполняемых файлов;
- Автообновление троянца;
И некоторые другие.