Сложные многокомпонентные троянцы, обладающие функционалом бэкдора, то есть способные выполнять на инфицированном компьютере поступающие с удаленного сервера команды, встречаются в «дикой природе» нечасто. Одну из таких вредоносных программ, получившую наименование BackDoor.Gootkit.112, недавно исследовали специалисты антивирусной компании «Доктор Веб».
Модуль, отвечающий за инсталляцию бэкдора в систему и реализацию функций буткита, явно был позаимствован разработчиками BackDoor.Gootkit.112 у троянцев семейства Trojan.Mayachok. При этом вирусописатели все-таки внесли в исходный код ряд существенных изменений. Так, оригинальный Trojan.Mayachok перед началом распространения каждой сборки троянца генерировал уникальный код VBR, на базе которого собиралось вредоносное приложение; в архитектуре BackDoor.Gootkit.112 все функции собраны в самом дроппере, который в процессе заражения видоизменяет код VBR. Драйвер, которому передает управление загрузочная запись раздела (Volume Boot Record, VBR) до момента инициализации системы, также взят из известных исходников Trojan.Mayachok, но его код был частично переписан: так, большинство указателей (шелл-код для выполнения инжекта, различные таблицы) с неустановленной целью были приведены к базонезависимому виду, однако при этом некоторые указатели остались нетронутыми. В частности, один из них ссылается на фразу из репертуара Гомера Симпсона «Just pick a dead end and chill out till you die», которую троянец выводит в отладчик после предварительной инициализации загрузчика. Примечательно, что подобные строки (преимущественно также цитаты Гомера Симпсона) транслировали в отладчик авторы троянцев семейства TDSS (начиная с версии BackDoor.Tdss.565 (TDL3) и старше). Имя Gootkit встречается как в самом загрузчике вредоносной программы, так и в модуле полезной нагрузки.
Помимо прочего, из драйвера удалены все компоненты, отвечающие за связь с ним работающих в пользовательском режиме модулей троянца, — например, позволявшие этим модулям использовать ресурсы скрытой файловой системы VFS. При этом функции инициализации и защиты этой файловой системы в BackDoor.Gootkit.112 остались.
Модули полезной нагрузки BackDoor.Gootkit.112 хранит в ветви системного реестра Windows HKLM\SOFTWARE\CXSW, используя для этого значения binaryImage32 или binaryImage64 в зависимости от разрядности операционной системы.
Для получения полезной нагрузки BackDoor.Gootkit.112 внедряет специальный шелл-код в процессы SERVICES.EXE, EXPLORER.EXE, IEXPLORE.EXE, FIREFOX.EXE, OPERA.EXE, CHROME.EXE. Подобный метод встраивания вредоносного кода (с созданием полноценного нового потока в пользовательском режиме и регистрацией его в CSRSS.EXE) встречается во вредоносных программах крайне редко.
Основная задача внедряемого шелл-кода — загрузить модуль полезной нагрузки из системного реестра или скачать его с удаленного интернет-ресурса. Бинарные файлы полезной нагрузки сжаты и зашифрованы.
Для повышения своих привилегий в инфицированной системе BackDoor.Gootkit.112 использует оригинальную методику обхода защиты учетных записей (User Accounts Control, UAC) — для этого используется штатный механизм операционной системы shim (Microsoft Windows Application Compatibility Infrastructure). Троянец задействует в своих целях программу сетевого клиента SQL Server (cliconfg.exe) — в манифесте этой программы свойству AutoElevate соответствует значение true, поэтому Windows поднимает для таких приложении привилегии в обход UAC.
С использованием библиотеки apphelp.dll BackDoor.Gootkit.112 создает в Windows базу данных, имя которой и значение параметра Application генерирует случайным образом. Для загрузки троянца используется свойство 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; создание снимков экрана; получение списка запущенных в системе процессов; получение списка локальных пользователей и групп; выгрузка заданных процессов; выполнение консольных команд; запуск исполняемых файлов; автообновление троянца и некоторые другие.
Как уже упоминалось ранее, в троянце используется редкий метод внедрения кода в запущенные процессы. Аналогичный алгоритм был описан на форуме wasm.ru пользователем, скрывающимся под псевдонимом Great.
В представленном им описании видны характерные статусы возврата — аналогичные статусы мы можем наблюдать в дизассемблированном коде BackDoor.Gootkit.112.
Можно было бы предположить, что вирусописатель попросту позаимствовал код из открытого источника, однако в опубликованных на форуме wasm.ru исходниках в одну из функций передается структура c именем DRIVER_TO_SHELLCODE_PARAMETERS. Упоминание структуры с аналогичным именем внезапно обнаруживается в личном блоге другого автора, который подробно описывает данную технологию инжекта, утверждая, что это его совместная разработка с Ильей Great.
При этом на страницах того же блога его владелец признается в любви к фреймворку Node.JS, возможности которого широко используются в коде троянца. Так, автор опубликовал заметку с заголовком «NodeJS\C++: Нативное расширение для реестра», в которой описал методы работы с ветвью системного реестра Windows SOFTWARE\CXS.
В другой статье, озаглавленной «NodeJS: Spyware на Javascript?», автор упоминает шпионский модуль SpywareModule, при этом методы этого модуля имеют префикс «Sp». Аналогичный код встречается в BackDoor.Gootkit.112. В связи с этим можно сделать вполне определенные предположения об авторстве данной вредоносной программы.
Сигнатура BackDoor.Gootkit.112 добавлена в вирусные базы, и потому данный троянец не представляет угрозы для пользователей антивирусных продуктов Dr.Web.