sha1:
- fe612df1ae5fba63ca4eaeb880e9f14b1061636b (version.dll)
Описание
Вредоносная программа на языке C++, компонент семейства Trojan.Scavenger. Представляет собой динамическую библиотеку, которая скачивается трояном Trojan.Scavenger.2 и помещается в каталог целевого браузера. Ее основная задача — отключение защитных механизмов браузера и модификация ряда установленных в нем расширений.
Принцип действия
Запуск трояна
Троянская библиотека version.dll через эксплуатацию уязвимости DLL Search Order Hijacking автоматически запускается при старте браузера и функционирует как его составная часть.
Проверка окружения
При запуске Trojan.Scavenger.3 определяет основной процесс браузера, проверяя наличие аргумента --type у текущего процесса. Это необходимо, чтобы отличать основной — более привилегированный — процесс от дочерних. Если троян обнаруживает аргумент --type в процессе, он завершает свою работу.
Далее Trojan.Scavenger.3 выполняет стандартную для представителей этого семейства проверку окружения. При обнаружении признаков запуска в виртуальной среде или в режиме отладки троян прекращает работу.
Перехват системных функций
В начале и конце работы Trojan.Scavenger.3 устанавливает перехваты на системные функции:
- GetCommandLineW
- CreateFileW
- GetFileAttributesExW
Техника установки перехвата — сплайсинг (splicing).
Перехват функции GetCommandLineW
Этот перехват предназначен для модификации аргументов, передаваемых основному процессу браузера при его старте. В командную строку добавляются следующие аргументы:
- --no-sandbox — отключает запуск песочницы в браузере, в результате чего отсутствует изоляция выполняемого JS-кода;
- --test-type — запускает браузер в специальном режиме, в котором отключены различные автозапуски из расширений.
Патч проверки расширений в Chromium
Для внесения патча Trojan.Scavenger.3 ищет целевую библиотеку браузерного движка Chromium. Для этого он получает список всех загруженных модулей текущего процесса, после чего пытается найти среди них тот, в котором есть функция CrashForExceptionInNonABICompliantCodeRange (экспортируемая функция из Chromium). При успешном получении адреса модуля Trojan.Scavenger.3 запоминает его.
Найдя нужный адрес, троян побайтно считывает кодовую секцию загруженного модуля, пытаясь найти в нем соответствие нужной опкодной сигнатуре:
48 ?? ?? ?? ?? 80 ?? ?? ?? 75 ?? 48 89 CF 80 ?? ?? 01 74 ?? 48 ?? ?? 74 ??
Эта сигнатура зашита в теле трояна и состоит из 36 байт, однако проверка выполняется только для первых 25 байт.
После того как код найден, Trojan.Scavenger.3 выполняет патч проверки расширений, заменяя значение 1 на 2:
В результате в браузере отключается проверка расширений.
Связь с C2-сервером и работа с расширениями браузера
Первые сообщения между трояном и С2-сервером являются пакетами для создания и проверки ключа шифрования в соответствии с алгоритмом, рассмотренным в соответствующем описании семейства Trojan.Scavenger.
Далее троян получает от сервера список расширений браузера, которые необходимо модифицировать, а также сами модификации. Для этого он отправляет запросы к серверу по маршруту /c/c.
Запросы по маршруту /c/c
Эти запросы имеют стандартные для представителей семейства параметры.
Ответ С2-сервера зависит от передаваемой в теле запроса строки, зашифрованной алгоритмом XXTEA. В запросе могут передаваться следующие строки:
- MANU
- BAND|<extension_id>
Вначале троян передает строку MANU. C2-сервер отвечает на нее списком идентификаторов расширений, которые трояну необходимо модифицировать:
["bfnaelmomeimhlpmgjnjophhpkkoljpa", "nkbihfbeogaeaoehlefnkodbefgpgknn", "nngceckbapebfimnlniiiahkandclblb", "hdokiejnpimakedhajhdlcegeplioahd", "opcgpfmipidbgpenhmajoajpbobppdil"]
После получения списка целевых расширений Trojan.Scavenger.3 обходит каталог, в котором хранятся установленные в браузере расширения, после чего копирует нужные из них в директорию %TEMP%/ServiceWorkerCache.
Далее троян отправляет сообщение BAND|<extension_id>. В ответ на него C2-сервер отправляет JSON следующего вида:
[
{
"file_name": "<имя файла или регулярное выражение>",
"match_helper": "<строка, с которой начинать поиск>",
"match": "<строка или регулярное выражение, которое будет изменено>",
"replacement": "<строка, на которую будет выполнена замена>"
},...
]
Далее Trojan.Scavenger.3 модифицирует целевые расширения, однако модифицирует не оригинальные файлы из каталога, где они хранятся, а копии из собственной директории %TEMP%/ServiceWorkerCache, сохраняя оригиналы.
Перехват функций CreateFileW и GetFileAttributesExW
После модификации расширений троян перехватывает управление функциями CreateFileW и GetFileAttributesExW. Эти перехваты необходимы для перенаправления работы с файлами расширений. На данном этапе подменяются локальные пути к оригинальным файлам расширений на пути к модификациям из каталога %TEMP%/ServiceWorkerCache.
Подробнее о Trojan.Scavenger.2
Новость о трояне
Индикаторы компрометации