SOC Prime Bias: Середній

10 Feb 2026 17:20

Завантажувачі RenEngine та HijackLoader: Двоетапний ланцюжок атак, що підживлює кампанії викрадачів

Author Photo
Ruslan Mikhalov Керівник досліджень загроз у SOC Prime linkedin icon Стежити
Завантажувачі RenEngine та HijackLoader: Двоетапний ланцюжок атак, що підживлює кампанії викрадачів
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Резюме

З квітня 2025 року дослідники відстежують масштабну операцію щодо крадіжки даних, побудовану навколо двоетапного ланцюга завантажувача. Перша стадія, RenEngine Loader, вбудована в інакше легітимний запусковик гри Ren’Py і дешифрує наступний завантажувач, названий HijackLoader. HijackLoader зловживає боковим завантаженням DLL і подвійним відображенням процесів, використовуючи модульну структуру, яка може організувати понад 30 допоміжних модулів, перш ніж кінцево доставити корисне навантаження ACR stealer. Розповсюдження пов’язане з зламаними установлювачами ігор, які просуваються через піратські екосистеми, впливаючи на сотні тисяч жертв по всьому світу.

Розслідування

Команда Howler Cell відновила повний ланцюг виконання, реверс-інженерингуючи логіку Python RenEngine, вилучаючи артефакти конфігурації та виявляючи архів, зашифрований XOR, що використовується для інсценування. Їхній аналіз HijackLoader каталогізував 38 модулів, включаючи перевірки на віртуальні машини, обхід UAC, стійкість запланованих завдань і можливості реверс-шела. Аналіз інфраструктури зв’язав кампанію з однією загальнодоступною кінцевою точкою C2, 78.40.193.126, і доменом доставки dodi-repacks.site, який використовувався для розповсюдження початкових завантажувальних програм.

Пом’якшення наслідків

Моніторьте аномальні виконання запусковика Ren’Py, особливо в парі з боковим завантаженням DLL загальних імен файлів, таких як d3dx9_43.dll. Шукайте підозріле створення папок у %ProgramData% і %AppData%, особливо шляхів, названих broker_crypt_v4_i386. Додайте поведінкові виявлення для обходу пісочниці, подвійного відображення процесів і незвичайних шаблонів доступу до реєстру, пов’язаних з перевірками артефактів віртуальної машини. Блокуйте відомі домени розповсюдження піратства на веб-шлюзі та застосовуйте список дозволених додатків, щоб обмежити запусковики ігор та unsigned “installer” виконувальні файли від виконання в шляхах доступних для запису користувачем.

Відповідь

При виявленні ізолюйте кінцеву точку, збережіть докази (дампи пам’яті, зашифровані архіви та артефакти завантажувача), і перевірте середовище на наявність виявлених модулів та скинутих файлів. Негайно блокуйте 78.40.193.126 і dodi-repacks.site на периметральних контролях. Виконуйте тріаж стосується витоку облікових даних, зосереджуючись на паролях браузера, сесійних куках і криптовалютних гаманцях, потім замініть постраждалі облікові записи й токени. Видаліть стійкість зловмисника (особливо заплановані завдання) і видаліть зловмисні файли, потім продовжуйте моніторинг шляхів реінфекції, пов’язаних з встановленням піратського програмного забезпечення.

"graph TB %% Class definitions classDef action fill:#99ccff classDef file fill:#ffcc99 classDef process fill:#ff9966 classDef malware fill:#ff6666 classDef network fill:#ccccff %% Step 1 u2013 User Execution step1_user_exec["<b>Техніка</b> – <b>T1204.002 Виконання користувача: Зловмисний файл</b><br/><b>Опис</b>: Користувача обманюють виконати зловмисний файл, такий як зламаний установлювач гри.<br/><b>Артефакт</b>: Instaler.exe"] class step1_user_exec action file_installer["<b>Файл</b> – Instaler.exe<br/>Виглядає легітимним, але містить зловмисне навантаження"] class file_installer file step1_user_exec –>|виконує| file_installer %% Step 2 u2013 Python Interpreter step2_python["<b>Техніка</b> – <b>T1059.006 Інтерпретатор команд і сценаріїв: Python</b><br/><b>Опис</b>: Виконує вбудований зловмисний код Python з archive.rpa через запусковик Ren'Py."] class step2_python action file_archive["<b>Файл</b> – archive.rpa<br/>Містить зловмисний Python сценарій"] class file_archive file file_installer –>|запускає| step2_python step2_python –>|завантажує| file_archive %% Step 3 u2013 Obfuscated Payload step3_obfusc["<b>Техніка</b> – <b>T1027 Обфусковані файли чи інформація</b><br/><b>Опис</b>: Навантаження приховається за допомогою кодування Base64, XOR шифрування і стисненого в архіві."] class step3_obfusc action file_obf_payload["<b>Файл</b> – obfuscated_payload.bin<br/>Стиснене та зашифроване навантаження"] class file_obf_payload file file_archive –>|містить| file_obf_payload file_obf_payload –>|декодується і дешифрується| step3_obfusc %% Step 4 u2013 Sandbox Evasion step4_sandbox["<b>Техніка</b> – <b>T1497 Віртуалізація/уникнення пісочниці</b><br/><b>Під-технологія</b> – <b>T1497.002 Перевірки на основі активності користувача</b><br/><b>Опис</b>: Завантажувач виконує обширні перевірки на віртуальні машини та пісочниці (RAM, CPU, реєстр) і зупиняє процес, якщо виявлено середовище аналізу."] class step4_sandbox action step3_obfusc –>|надає код| step4_sandbox %% Step 5 u2013 Впорскування процесу step5_injection["<b>Техніка</b> – <b>T1055 Впорскування процесу</b><br/><b>Під-технологія</b> – <b>T1055.002 Впорскування портативного виконуваного файлу</b><br/><b>Опис</b>: HijackLoader вводить зловмисний код у легітимний системний DLL rasapi32.dll для виконання шелкоду."] class step5_injection action process_rasapi["<b>Процесс</b> – rasapi32.dll<br/>Ціль для впорскування PE"] class process_rasapi process step4_sandbox –>|завантажує| step5_injection step5_injection –>|впорскує в| process_rasapi %% Step 6 u2013 AppInit DLL Бокове завантаження step6_appinit["<b>Техніка</b> – <b>T1546.010 Виконання, запущене подією: AppInit DLLs</b><br/><b>Опис</b>: Зловмисні DLLs (d3dx9_43.dll, VSDebugScriptAgent170.dll) боково завантажуються через довірений виконувальний установлювач для стійкості."] class step6_appinit action file_d3dx9["<b>Файл</b> – d3dx9_43.dll<br/>Зловмисний боково завантажений DLL"] class file_d3dx9 file file_vsddebug["<b>Файл</b> – VSDebugScriptAgent170.dll<br/>Зловмисний боково завантажений DLL"] class file_vsddebug file process_rasapi –>|активує завантаження| file_d3dx9 process_rasapi –>|активує завантаження| file_vsddebug file_d3dx9 –>|використовується| step6_appinit file_vsddebug –>|використовується| step6_appinit %% Step 7 u2013 Обхід UAC step7_uac["<b>Техніка</b> – <b>T1548.002 Зловживання механізмом контролю підвищення: Обхід контролю облікових записів користувачів</b><br/><b>Опис</b>: Завантажувач намагається обійти UAC, щоб отримати вищі привілеї."] class step7_uac action step6_appinit –>|намагається підвищити через| step7_uac %% Step 8 u2013 Стійкість запланованого завдання step8_task["<b>Техніка</b> – <b>T1053 Заплановане завдання/робота</b><br/><b>Опис</b>: Створюється заплановане завдання для підтримки стійкості та повторного виконання навантаження."] class step8_task action step7_uac –>|створює| step8_task %% Step 9 u2013 Збір облікових даних step9_cred["<b>Техніки</b> – <b>T1555.003 Облікові дані з сховищ паролів: Облікові дані з веб-браузерів</b> та <b>T1550.004 Використання змінного матеріалу автентифікації: Веб-сесійна кука</b><br/><b>Опис</b>: Фінальний ACR stealer збирає паролі з браузера, куки, крипто-гаманці та інші дані облікових даних."] class step9_cred action step8_task –>|виконує| step9_cred %% Step 10 u2013 Витік даних step10_exfil["<b>Техніка</b> – <b>T1041 Витік даних через канал C2</b><br/><b>Опис</b>: Зібрані дані відправляються на C2 сервер атакуючого за адресою 78.40.193.126."] class step10_exfil action network_c2["<b>Мережа</b> – C2 Сервер 78.40.193.126"] class network_c2 network step9_cred –>|витікає дані до| network_c2 network_c2 –>|отримує дані від| step10_exfil "

Поток атаки

Виявлення

RenPy або Python Engine, що виконує бінарний файл з директрії доступної для користувача запису (за допомогою cmdline)

Команда SOC Prime
10 лютого 2026

PowerShell, що запитує Кількість Логічних Процесорів для виявлення віртуальної машини або пісочниці (за допомогою cmdline)

Команда SOC Prime
10 лютого 2026

Можливі перевірки уникнення (через powershell)

Команда SOC Prime
10 лютого 2026

Виконання RenPy або Python, що здійснює команди виявлення віртуальної машини або пісочниці

Команда SOC Prime
10 лютого 2026

Індикатори компрометації (DestinationIP) для виявлення: RenEngine Loader та HijackLoader: Двоетапний Ланцюг Атаки, що Підживлює Кампанії Зловмисників

Правила AI SOC Prime
10 лютого 2026

Індикатори компрометації (Emails) для виявлення: RenEngine Loader та HijackLoader: Двоетапний Ланцюг Атаки, що Підживлює Кампанії Зловмисників

Правила AI SOC Prime
10 лютого 2026

Індикатори компрометації (SourceIP) для виявлення: RenEngine Loader та HijackLoader: Двоетапний Ланцюг Атаки, що Підживлює Кампанії Зловмисників

Правила AI SOC Prime
10 лютого 2026

Індикатори компрометації (HashSha256) для виявлення: RenEngine Loader та HijackLoader: Двоетапний Ланцюг Атаки, що Підживлює Кампанії Зловмисників

Правила AI SOC Prime
10 лютого 2026

Виявлення використання HijackLoader API для завантаження зловмисного модуля [Windows Sysmon]

Правила AI SOC Prime
10 лютого 2026

Виявлення Зловмисного Ланцюга Виконання за допомогою запусковика Ren’Py [Windows Process Creation]

Правила AI SOC Prime
10 лютого 2026

Виконання симуляції

Передумова: Перевірка телеметрії та базового рівня повинна бути пройдена.

Обгрунтування: Цей розділ деталізує точне виконання техніки супротивника (TTP), призначеної для активації правила виявлення. Команди і нарація МАЮТЬ безпосередньо відображати ідентифіковані TTP і прагнути генерувати точну телеметрію, очікувану логікою виявлення.

  • Опис атаки та команди:
    Атакувач отримує зловмисний установлювач гри Ren’Py (Installer.exe), що був перепакований для включення прихованого навантаження на Python. Коли жертва запускає установлювач, він створює вторинний завантажувач (W8CPbGQI.exe). Цей завантажувач розпаковує третій етап бінарного файлу (ZoneInd.exe), що виконує впорскування процесу, вилучення облікових даних та встановлює C2 канал через HTTP. Атакувач свідомо уникає надання назви будь-якому дочірньому процесу chime.exe щоб задовольнити виключаючу умову правила.

    Кроки, виконані на скомпрометованому хості:

    1. Запустіть скомпрометований установлювач Ren’Py.
      Installer.exe виконується як батьківський процес.
    2. Запустіть перший зловмисний завантажувач.
      Installer.exe створює W8CPbGQI.exe (Подія створення процесу – відповідає TargetImage).
    3. Запустіть навантаження другого етапу.
      W8CPbGQI.exe запускає ZoneInd.exe (інша подія створення процесу – також відповідає TargetImage).
    4. Виконайте зловмисні дії (впорскування процесу, вилучення облікових даних, C2).

    Ці дії генерують точну телеметрію, яку моніторить правило Sigma: процес з Image=*Installer.exe створює дочірній процес з TargetImage=*W8CPbGQI.exe or *ZoneInd.exe, без виключення *chime.exe.

  • Скрипт регресійного тесту:
    Скрипт нижче створює фальшиві виконувальні файли (простий сценарій PowerShell, збережений як .exe via powershell -c "..." для демонстрації) а потім оркеструє ланцюг. Запустіть його в підвищеній командному рядку PowerShell.

    # -------------------------------------------------
    # Скрипт регресійного тесту – Моделювання Зловмисного Ланцюга
    # -------------------------------------------------
    
    # 1. Створіть місце розташування виконуваних файлів-заступників (моделювання виконуваних файлів)
    $binPath = "$env:TEMPRenPyChain"
    New-Item -ItemType Directory -Path $binPath -Force | Out-Null
    
    # Помічник зі створення легкого exe, який просто спить (використовуючи .exe обгортку PowerShell)
    function New-StubExe($name) {
        $script = "Start-Sleep -Seconds 30"
        $ps1 = "$binPath$name.ps1"
        $exe = "$binPath$name.exe"
        Set-Content -Path $ps1 -Value $script -Encoding UTF8
        # Використовуйте вбудовану PS2EXE PowerShell (або будь-яку exe оболонку) – тут ми імітуємо з PowerShell -File
        # Для простоти, ми просто створюємо заплановане завдання, яке запускає ps1; шлях .exe є місцем заміни.
        New-Item -ItemType File -Path $exe -Force | Out-Null
    }
    
    # Створіть исполняемые файлы-заглушки
    New-StubExe "Installer"
    New-StubExe "W8CPbGQI"
    New-StubExe "ZoneInd"
    
    # 2. Виконайте ланцюг
    Write-Host "`n[+] Запуск Installer.exe (батьківський)..."
    Start-Process -FilePath "$binPathInstaller.exe" -NoNewWindow
    
    # Невелика затримка для забезпечення появлення батьківського процесу у журналах
    Start-Sleep -Seconds 2
    
    Write-Host "[+] Installer.exe створює W8CPbGQI.exe..."
    Start-Process -FilePath "$binPathW8CPbGQI.exe" -NoNewWindow
    
    Start-Sleep -Seconds 1
    
    Write-Host "[+] W8CPbGQI.exe створює ZoneInd.exe..."
    Start-Process -FilePath "$binPathZoneInd.exe" -NoNewWindow
    
    Write-Host "`n[+] Ланцюг виконано. Перевірте виявлення у вашій SIEM."
    # -------------------------------------------------
  • Команди очищення:
    Видаліть тимчасові файли та закінчіть усі лишившися процеси сну.

    # Очистіть исполняемые файлы-заглушки і директорії
    $binPath = "$env:TEMPRenPyChain"
    Write-Host "`n[+] Зупинка всіх залишкових процесів-заступників..."
    Get-Process -Name "Installer","W8CPbGQI","ZoneInd" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    Write-Host "[+] Видалення тимчасових файлів..."
    Remove-Item -Path $binPath -Recurse -Force
    
    Write-Host "[+] Очищення завершено."