February 9

RenEngine Loader + HijackLoader: многоступенчатая stealer-кампания через пиратские AAA-игры

1. Executive Technical Summary

Howler Cell Threat Research Team выявила длительную, масштабную и технически зрелую stealer-операцию, активную как минимум с апреля 2025 года и продолжающуюся на текущий момент. Кампания использует:

  • новый ранее не описанный загрузчик RenEngine Loader
  • модифицированный вариант HijackLoader
  • финальный полезный груз — ACR Stealer (в других цепочках также Rhadamanthys, AsyncRAT, XWorm)

Ключевая особенность — злоупотребление легитимным игровым движком Ren’Py для скрытой доставки первого этапа вредоносной цепочки внутри «рабочих» пиратских игр.

Масштаб

  • ~400 000 зафиксированных обращений к встроенной телеметрии
  • ~5 000 новых жертв в день
  • активность устойчива с Oct 14, 2025 (добавление telemetry logic)
  • основные страны: India, USA, Brazil, Russia, Egypt, Turkey, Spain, Indonesia, Pakistan, France

2. Initial Access: доверие вместо эксплуатации

Вектор

Жертвы скачивают:

  • cracked installers
  • game mods

с пиратских площадок, включая:

hxxps://dodi-repacks[.]site
go[.]zovo[.]ink → MediaFire

Заражённые тайтлы:

  • Far Cry
  • Need for Speed
  • FIFA
  • Assassin’s Creed

Атака основана не на уязвимостях, а на:

  • доверии внутри piracy-сообществ
  • низкой осведомлённости пользователей
  • отсутствии строгого endpoint-контроля

3. Stage 1 — RenEngine Loader

3.1 Злоупотребление Ren’Py

Instaler.exeлегитимный Ren’Py launcher, внутри которого:

  • используется archive.rpa
  • удалены все .rpy
  • оставлены только .rpyc (скомпилированные скрипты)

Обычные архиваторы не извлекают RPA, что:

  • снижает статическую видимость
  • переносит логику в память

Исполняется script.rpyc → это и есть RenEngine Loader.


3.2 Конфигурация загрузчика

Loader читает .key файл → Base64 decode → JSON:


3.3 Обфускация и staging

  1. JSON → поиск XOR-архива
  2. XOR-дешифрование
  3. извлечение payload
  4. запуск W8CPbGQI.exe

Используются:

  • Base64
  • XOR
  • RPA-упаковка

4. Sandbox Scoring System

RenEngine применяет балльную модель детекции VM.

Проверки через PowerShell:

Также:

  • registry keys VirtualBox
  • SYSTEM32 VM drivers
  • процессы VM tools
  • usernames (sandbox, vagrant)

<50% → выполнение
≥50% → тихий выход

Это усложняет:

  • sandbox detonation
  • automated analysis

5. Stage 2 — HijackLoader Variant

W8CPbGQI.exe (подписанный) → sideload:

d3dx9_43.dll → VSDebugScriptAgent170.dll → stomp evr.dll

5.1 Конфигурация HijackLoader

Файл: Froodjurain.wkk

Magic: C6 A5 79 EA
XOR key: DB CD 7B C6
IDAT header
RtlDecompressBuffer (LZNT1)

5.2 Модульная архитектура (38 модулей)

Новые VM-детекторы:

Другие возможности:

  • Process hollowing
  • Process doppelgänging
  • Heaven’s Gate
  • UAC bypass
  • Defender tampering
  • Reverse shell
  • Scheduled task persistence

6. Persistence & Injection Flow

Создаётся:

%ProgramData%\broker_crypt_v4_i386
%AppData%\Roaming\broker_crypt_v4_i386

Копируются:

  • d3dx9_43.dll
  • VSDebugScriptAgent170.dll
  • Froodjurain.wkk
  • Taig.gr

Создаётся:

chime.exe
ZoneInd.exe

Финал:
Process Doppelgänging
→ инжект в rasapi32.dll


7. Final Payload — ACR Stealer

C2:

78.40.193.126
Campaign ID: 08de3605-f8ce-46fa-874f-3adf0bd308ba
Build: Dec 7 2025

Кража:

  • browser creds
  • cookies
  • crypto wallets
  • clipboard
  • autofill
  • system info

8. Telemetry & Victim Tracking

14 Oct 2025 → добавлен tracking:

GET request + pub=t11_asm
  • 400k telemetry hits
  • ~5k/day growth
  • глобальное распространение

9. MITRE ATT&CK Mapping


10. IoCs

SHA256 ZIP:
9e3b296339e25b1bae1f9d028a17f030dcf2ab25ad46221b37731ea4fdfde057

DLLs:

d3dx9_43.dll 326ec5ae...
VSDebugScriptAgent170.dll db4ccd0e...

Loader path:

%APPDATA%\broker_crypt_v4_i386

XOR key HijackLoader: 0xdbcd7bc6


11. Почему это опаснее обычных stealer-цепочек


Python-этап загрузчика RenEngine: скрытый оркестратор атаки

Ключевая особенность RenEngine Loader заключается в том, что основная управляющая логика реализована не в исполняемом файле Windows, а внутри Python-кода, встроенного в движок Ren’Py. Внешне образец выглядит как обычная визуальная новелла, однако фактически игровой движок используется как контейнер для вредоносного загрузчика.

После запуска Instaler.exe и инициализации Ren’Py происходит обращение к архиву archive.rpa. Внутри него находится файл script.rpyc — скомпилированный Python-байткод. Этот файл и является центральным модулем первой стадии атаки. Код не сохраняется на диск в виде .py, а исполняется интерпретатором движка напрямую из памяти, что существенно осложняет статический анализ и сигнатурное обнаружение.

Конфигурационная модель загрузчика

Python-часть не содержит жёстко прописанных параметров. Вместо этого используется внешний конфигурационный файл .key, закодированный в Base64. После декодирования получается JSON-структура с параметрами кампании:

  • имя зашифрованного архива со второй стадией,
  • пароль для дешифрования,
  • имя исполняемого payload-файла,
  • флаг отключения анти-sandbox логики,
  • идентификатор партнёрской кампании (pub).

Такая архитектура превращает загрузчик в универсальный конструктор: оператор может менять полезную нагрузку, ключи шифрования и режим работы без пересборки самого loader’а.

Дешифрование полезной нагрузки

Python-код реализует примитивный, но эффективный механизм сокрытия второй стадии — XOR-шифрование. Зашифрованный файл (маскирующийся под текстовый) считывается в память и побайтно декодируется с использованием циклического ключа из конфигурации. Результатом становится ZIP-архив, который затем распаковывается во временный каталог.

Важно, что весь процесс — чтение, дешифрование и распаковка — контролируется Python-скриптом, то есть выполняется в контексте игрового процесса, что дополнительно маскирует активность.

Python как механизм анти-анализа

Наиболее необычная часть логики — встроенная система оценки среды выполнения. В отличие от простых проверок на наличие виртуальной машины, здесь используется балльная модель. Python-скрипт вызывает PowerShell-команды для получения характеристик системы:

  • объём оперативной памяти,
  • количество логических процессоров,
  • модель оборудования,
  • имя пользователя,
  • сетевые параметры.

Каждый параметр добавляет определённое количество баллов «доверия». Если итоговый процент превышает заданный порог, выполнение прекращается. В результате вредоносный код не запускается в типичных песочницах с малым объёмом RAM и стандартными VM-признаками. Для Python-загрузчиков подобная многофакторная модель встречается крайне редко.

Запуск финального этапа

После успешного прохождения проверок Python-модуль запускает извлечённый исполняемый файл через subprocess. На этом этапе управление передаётся HijackLoader, который уже занимается инжекцией, закреплением и загрузкой основного вредоносного ПО.

Таким образом, Python-часть выполняет роль оркестратора:

  • читает конфигурацию кампании,
  • дешифрует и распаковывает полезную нагрузку,
  • проводит анти-sandbox анализ,
  • запускает следующую стадию,
  • в некоторых версиях отправляет телеметрию операторам.

Почему выбран именно Python внутри Ren’Py

Такой подход даёт злоумышленникам сразу несколько преимуществ:

  1. Маскировка под игру — поведение выглядит как штатная работа игрового движка.
  2. Отсутствие классического loader-EXE — меньше детектируемых артефактов.
  3. Гибкая конфигурация — смена кампаний без перекомпиляции.
  4. Сложность анализа.rpyc требует отдельного извлечения и декомпиляции.
  5. Исполнение из памяти — снижает эффективность поведенческих детекторов.

В итоге Python-этап RenEngine нельзя рассматривать как вспомогательный скрипт. Это полноценный управляющий модуль, который превращает игровой движок в универсальную платформу доставки вредоносных нагрузок и делает цепочку заражения значительно менее заметной для систем защиты.


13. Главный вывод

Это не commodity malware, а:

  • долговременная операция
  • модульная архитектура
  • abuse игрового фреймворка
  • профессиональный evasion design
  • масштаб уровня botnet-кампаний

RenEngine Loader демонстрирует новую тенденцию — эксплуатацию игровых движков как malware delivery frameworks.