Новый вариант SilverFox: атака с Lua-скриптами и TypeLib-перехватом

remote access Trojan

Аналитики компании Rise зафиксировали новую версию трояна SilverFox. Данный вариант ориентирован на целевую аудиторию - государственные и коммерческие организации, а также обычных пользователей, которые могут быть обмануты с помощью политически окрашенных тем. Основной вектор заражения - социальная инженерия через исполняемый файл, замаскированный под сенсационную политическую новость с заголовком на вьетнамском языке "Сенсация! Высокопоставленные чиновники США раскрывают закулисные подробности". После запуска файла запускается многоступенчатая цепочка, включающая два инсталлятора (NSIS и Inno Setup), динамическую библиотеку с встроенным компилятором LuaJIT, скрипт на Lua, шелл-код и финальный модуль удалённого управления.

Описание

В анализе Rise детально воспроизведён весь процесс атаки. Первый этап - NSIS-пакет устанавливает программу в нестандартный каталог C:\ProgramLog\Windows\AppData\Local\Microsoft\Log. Такой путь имитирует собственные папки Microsoft и позволяет обойти внимание пользователя. Внутри архива находится файл setup.exe, который является инсталлятором Inno Setup. Он, в свою очередь, извлекает легитимный исполняемый файл и подменную библиотеку Microsoft.WindowsAppRuntime.Bootstrap.dll. Эта DLL статически скомпонована с интерпретатором LuaJIT 2.1. При запуске она считывает файл Setting.lua из той же директории и передаёт его код на выполнение в виртуальную машину Lua.

Ключевая инновация данного варианта - использование скриптового языка для развёртывания следующей стадии атаки. Lua-загрузчик (Setting.lua) импортирует интерфейс FFI (Foreign Function Interface) и через него напрямую вызывает системные API: VirtualAlloc для выделения памяти, VirtualProtect для изменения прав доступа и EnumWindows для запуска кода. Таким образом, шелл-код не сохраняется на диске - он загружается в память, дешифруется алгоритмом RC4 и выполняется в процессе легитимной программы. Этот приём практически не оставляет следов для традиционных файловых средств защиты.

Шелл-код, размером около 244 КБ, содержит рефлексивный загрузчик, который с помощью техники call/pop определяет своё расположение в памяти, после чего разбирает вложенную PE-структуру. Для разрешения адресов API загрузчик использует обход PEB (блока среды процесса) с ROR-13-хешированием имён функций - это позволяет обойтись без импортных таблиц и открытых строк. Затем происходит копирование секций, исправление базовых адресов и импорт таблиц, а также настройка прав доступа к памяти. После вызова FlushInstructionCache загрузчик передаёт управление DllMain внедрённого модуля.

Финальная полезная нагрузка - полнофункциональный бэкдор, написанный на C++ с применением технологии ATL. Он экспортирует функции load и run, что свидетельствует о модульной архитектуре, где загрузчик может динамически активировать плагины. Вредоносная программа поддерживает классические возможности: регистрацию нажатий клавиш через DirectInput, создание скриншотов с помощью GDI+ и их JPEG-сжатие, кражу из буфера обмена, внедрение кода в процесс svchost.exe (process hollowing), повышение привилегий до SeDebugPrivilege, манипуляции с файлами (загрузка, удаление, запуск), а также чтение и запись записей реестра для сохранения конфигурации. Система команд построена на основе ARQ-протокола с подтверждением доставки, управлением окном скользящего окна и адаптивным тайм-аутом повторной передачи (RTO). Каналы связи устанавливаются с C2-серверами, адреса которых закодированы в теле модуля.

Бэкдор оснащён механизмами защиты от анализа. Например, строковая константа "onlyloadinmyself" проверяет, что DLL загружена именно родительским процессом, а не сторонним инструментом. Антидампинг-проверка "ngyixiugaidaochuhanshu" (транслитерация с китайского: "ты уже изменил экспортную функцию") сравнивает оригинальную таблицу экспорта с текущей, выявляя вмешательство. Настройки хранятся в реестре HKEY_LOCAL_MACHINE\SOFTWARE в значении "IpDates_info" или в HKEY_CURRENT_USER\Console\IpDate, причём перед записью строка проходит через реверс (wcsrev) для дополнительной обфускации.

Один из самых необычных компонентов - механизм закрепления в системе TypeLib Hijacking. Lua-скрипт изменяет реестровый раздел HKEY_CURRENT_USER\SOFTWARE\Classes\TypeLib\{EAB22AC0-30C1-11CF-A7EB-0000C05BAE0B}\1.1\0\win64, указывая путь к файлу C:\ProgramLog\Windows\AppData\Local\Microsoft\Log\log.s. Этот файл (являющийся скриптом) будет выполняться при каждом обращении к указанному библиотечному идентификатору, что обеспечивает автозапуск без использования стандартных ключей Run или папки автозагрузки. Такой метод сложнее обнаружить, поскольку он встраивается в систему регистрации COM-объектов.

Объединение LuaJIT и TypeLib Hijacking представляет собой эволюцию в тактике SilverFox. Ранее группировка полагалась исключительно на классические методы: многослойные инсталляторы, рефлексивную загрузку и DLL-sideloading. Теперь же вредоносная логика полностью вынесена на уровень скрипта, который может быть изменён без перекомпиляции двоичного загрузчика. Это делает атаку более гибкой и устойчивой к сигнатурному анализу. В свою очередь, TypeLib Hijacking позволяет атакующему сохранить постоянный доступ, не полагаясь на типичные для регуляторных инструментов места размещения.

Для организаций, подверженных риску целевого фишинга, рекомендуются следующие меры. Прежде всего, необходимо ограничить использование административных привилегий и настроить политики белого списка для процессов. Продукты класса EDR должны отслеживать подозрительные вызовы VirtualAlloc/VirtualProtect в контексте обычных приложений, а также изменения в разделах TypeLib реестра. Средства сетевой защиты, такие как NGFW, могут блокировать C2-трафик на основе сигнатур ARQ-протокола, однако из-за возможной шифровки сессий наиболее эффективным остаётся поведенческий анализ на конечных точках. При обнаружении признаков заражения необходимо немедленно изолировать хост и провести полное сканирование с использованием актуальных файлов сигнатур, поскольку данный вариант SilverFox уже распознаётся продуктами Rise.

Индикаторы компрометации

IPv4

  • 23.248.202.170

MD5

  • 29def65ede537c29695a5d84c18fa790
  • 351783d995517b66976deec6f394f9d4
  • 7700af21a6c872add44074edc1242251
  • a3bb0c26fb1412e74f918145b0cc62fd
  • cc556584e7f787987156b5dc8b8cd412

Комментарии: 0