sha1:
- 1e010f4637284da7c2c6ac9a8fb2b1bdec8f2abf (UpdateRingSettings.dll)
Описание
Троянская программа, написанная на языке программирования C++. Представляет собой динамическую библиотеку для ОС Windows, которую на целевые компьютеры может загружать различное ВПО — например, Python.Downloader.208 и Trojan.DownLoader48.61444. Ее функциональность заключается в скачивании и запуске трояна Trojan.ChimeraWire в инфицированной системе.
Принцип действия
Trojan.DownLoader48.54318 скачивается в систему в архиве, который также содержит ряд вспомогательных файлов:
- легитимную программу, при помощи которой должна запуститься вредоносная библиотека;
- сертификат Microsoft Corporation CertificateIn.dat.
Троян запускается через эксплуатацию уязвимости класса DLL Search Order Hijacking в сопровождающей его программе.
Предварительные проверки
1. Trojan.DownLoader48.54318 содержит два схожих по своей структуре экспорта GetECSConfigurationManager и GetUpdateRingSettingsManager.
Схожие экспорты GetECSConfigurationManager и GetUpdateRingSettingsManager
Перед началом работы каждого из методов присутствует защита от рекурсивного зацикливания при загрузке троянского DLL-файла путем предварительной проверки глобального счетчика попыток. Для каждого экспорта должно быть не более одной попытки загрузки библиотеки.
Проверка счетчика попыток загрузки троянской библиотеки перед началом выполнения
2. В начале своего выполнения Trojan.DownLoader48.54318 проверяет наличие сертификата CertificateIn.dat. Если он отсутствует, вредоносная программа прекращает работу.
Проверка наличия цифрового сертификата CertificateIn.dat
3. Trojan.DownLoader48.54318 проверяет наличие директорий Program Files и AppData в локальном пути до своего файла. Если длина пути больше или равна 13 символам, то проверяет наличие в пути каталога Program Files. Если его нет, то проверяется наличие в пути каталога AppData. Если длина пути меньше 7 символов или AppData тоже отсутствует, троян удаляет все файлы в директории %TEMP% и завершает работу.
Проверка наличия директорий Program Files и AppData в локальном пути до запущенного троянского файла
4. Trojan.DownLoader48.54318 перебирает список запущенных процессов и проверяет совпадение с одним из 45 фиксированных имен:
wireshark,processhacker,fiddler,procexp,procexp64,taskmgr,procmon,sysmon,ida,x32dbg,x64dbg,ollydbg,cheatengine,scylla,scylla_x64,scylla_x86,immunitydebugger,windbg,reshacker,reshacker32,reshacker64,
hxd,ghidra,lordpe,tcpview,netmon,sniffer,snort,apimonitor,radare2,procdump,dbgview,de4dot,detectiteasy,detectit_easy,dumpcap,netcat,bintext,dependencywalker,dependencies,prodiscover,sysinternals,
netlimiter,sandboxie,virtualbox
Если троян обнаруживает какой-либо из указанных процессов, он немедленно завершает работу через функцию ExitProcess.
5. Через функцию GlobalMemoryStatusEx Trojan.DownLoader48.54318 получает информацию об оперативной памяти. Для дальнейшей работы ему должно быть доступно не менее 3 ГБ.
Получение информации об объеме оперативной памяти
6. Измеряет время до и после выполнения функции Sleep для определения наличия ускорений, характерных для отладочных сред.
Проверка наличия отладки через измерение времени выполнения функции Sleep
7. Отдельно проверяет количество записей в системном журнале событий. Количество записей должно быть не менее 1000.
Проверка количества записей в системном журнале событий
Если в ходе проверок обнаруживается наличие отладки, Trojan.DownLoader48.54318 удаляет все файлы в каталоге %TEMP% и завершает работу.
Стоит отметить, что при выполнении точки входа троянской DLL также производятся антиотладочные проверки, указанные в пунктах 4-7.
Основная функциональность
Trojan.DownLoader48.54318 пытается загрузить файл по адресу hxxps[:]//down[.]temp-xy[.]com/code/k[.]txt. Если ему это не удается, он пробует загрузить данные по ссылке hxxps[:]//pastebin[.]com/raw/9tDWNnF6.
Во всех сетевых запросах трояна фигурирует следующий User-Agent:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Значения обоих целевых адресов зашифрованы нестандартным XOR.
Пример цикла с расшифровкой строки
На момент анализа трояна файл k.txt, получаемый по первому URL, содержал два ключа шифрования: r9bKWWjJqBj5Rje630uA9tWZDDFM96ON и PcSLkpK7VNjshVw4SGLAi31fz83aRCSi.
Файл по второму URL содержал два дополнительных адреса:
- hxxps[:]//qu[.]ax/ZzSWR[.]txt;
- hxxps[:]//qu[.]ax/cLxFW[.]txt.
По адресу hxxps[:]//qu[.]ax/ZzSWR[.]txt загружался зашифрованный файл размером 0x9109CF байт.
По адресу hxxps[:]//qu[.]ax/cLxFW[.]txt располагался файл, содержащий указанные выше два ключа шифрования.
Данные ключи используются для расшифровки файла ZzSWR[.]txt.
Алгоритм расшифровки загруженного файла ZzSWR[.]txt с использованием двух ключей
Код для расшифровки файла:
with open("crypted.bin", "rb") as f:
crypted_buff = f.read()
key1 = "r9bKWWjJqBj5Rje630uA9tWZDDFM96ON"
key2 = "PcSLkpK7VNjshVw4SGLAi31fz83aRCSi"
decrypted = []
for i in range(len(crypted_buff)):
decrypted_byte = crypted_buff[i] ^ ord(key1[i % len(key1)])
decrypted.append(decrypted_byte ^ ord(key2[i % len(key2)]))
with open("decrypted.bin", "wb") as f:
f.write(bytes(decrypted))
Расшифрованное содержимое представляет собой ZLIB-контейнер, внутри которого находится шеллкод и исполняемый файл.
После расшифровки ZLIB-контейнера Trojan.DownLoader48.54318 пытается распаковать его. Если это не удается, удаляется сам Trojan.DownLoader48.54318, все файлы в каталоге %TEMP%, а также происходит завершение работы трояна через функцию ExitProcess.
В случае успеха управление передается шеллкоду, основная задача которого — разжать идущий вместе с ним исполняемый файл. Формат его сжатия — XPRESS (3), размер файла — 0xA47389 байт.
Передача управления расшифрованному содержимому
Получаемый файл является трояном Trojan.ChimeraWire.
Версии Trojan.DownLoader48.54318
Известны несколько версий вредоносной программы Trojan.DownLoader48.54318 (среди них — 0d9224ec897d4d20700a9de5443b31811c99b973, 054b9e9a9b76eccbce00e8f4d249a8e93f178f3c), имеющие некоторые отличия от рассмотренной.
1. Пытаются найти упоминания виртуальных средств в системном реестре.
Поиск ключей виртуальных сред в системном реестре
2. Выполняют вызов WinAPI-функции GetFirmwareEnvironmentVariable для получения данных из NVRAM UEFI с целью проверки наличия средств виртуализации VMware и VirtualBox.
Поиск упоминания песочниц VMware и VirtualBox в системной прошивке
3. Проверяют количество процессоров.
Проверка количества процессоров
4. Проверяют подключение к интернету, обращаясь к сайту google.com.
Проверка подключения к интернету
5. Проверяют иное количество записей в системном журнале событий: их должно быть не менее 250.
Проверка другого количества записей в системном журнале событий
6. Имеют иной список отладочных процессов, по которым ищутся совпадения:
wireshark,processhacker,fiddler,procexp,procmon,sysmon,ida,x32dbg,x64dbg,ollydbg,cheatengine,scylla,scylla_x64,scylla_x86,immunitydebugger,windbg,reshacker,reshacker32,reshacker64,hxd,ghidra,lordpe,
tcpview,netmon,sniffer,snort,apimonitor,radare2,procdump,dbgview,de4dot,detectiteasy,detectit_easy,dumpcap,netcat,bintext,dependencywalker,dependencies,prodiscover,sysinternals,netlimiter,sandboxie,
virtualbox,vmtools
7. Для загрузки зашифрованного файла используют иной адрес: hxxps[:]//down[.]temp-xy[.]com/code/s[.]txt. При этом ключи шифрования загружаются только по адресу hxxps[:]//down[.]temp-xy[.]com/code/k[.]txt.
Подробнее о Trojan.ChimeraWire
Новость о трояне