SOC Prime Bias: Mittel

10 Feb. 2026 17:20

RenEngine Loader und HijackLoader: Zwei-Stufen-Angriffskette zur Unterstützung von Stealer-Kampagnen

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
RenEngine Loader und HijackLoader: Zwei-Stufen-Angriffskette zur Unterstützung von Stealer-Kampagnen
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Seit April 2025 verfolgen Forscher einen groß angelegten Stealer-Betrieb, der auf einer zweistufigen Loader-Kette basiert. Die erste Stufe, RenEngine Loader, ist in einem ansonsten legitimen Ren’Py-Spielstarter eingebettet und entschlüsselt einen nachfolgenden Loader namens HijackLoader. HijackLoader missbraucht dann DLL-Sideloading und Process-Doppelgänging, indem es ein modulares Framework verwendet, das über 30 Hilfsmodule einrichten kann, bevor schließlich eine ACR-Stealer-Nutzlast ausgeliefert wird. Die Verbreitung ist mit geknackten Spiele-Installern verbunden, die durch Piraterie-Ökosysteme gefördert werden, wobei die Aktivität hunderttausende von Opfern weltweit betrifft.

Untersuchung

Das Howler-Cell-Team rekonstruierte die vollständige Ausführungskette, reverse-engineerte die RenEngine-Python-Logik, extrahierte Konfigurationsartefakte und identifizierte ein XOR-verschlüsseltes Archiv, das zur Bereitstellung verwendet wurde. Ihre Analyse von HijackLoader katalogisierte 38 Module, darunter Anti-VM-Prüfungen, UAC-Umgehung, geplante Task-Persistenz und Reverse-Shell-Fähigkeiten. Infrastrukturanalysen verlinkten die Kampagne auf einen einzigen öffentlichen C2-Endpunkt, 78.40.193.126, und die Bereitstellungsdomäne dodi-repacks.site, die zum Aussähen der anfänglichen Installer-Downloads verwendet wurde.

Minderung

Überwachen Sie auf anomale Ren’Py-Starter-Ausführungen, insbesondere in Verbindung mit dem Sideloading von DLLs mit gängigen Dateinamen wie d3dx9_43.dll. Suchen Sie nach verdächtigen Verzeichniserstellungen unter %ProgramData% und %AppData%, insbesondere nach Pfaden mit dem Namen broker_crypt_v4_i386. Fügen Sie verhaltensbasierte Erkennungen für Sandbox-Ausweichroutinen, Process-Doppelgänging und ungewöhnliche Registry-Zugriffsmuster, die mit Virtual-Machine-Artefakt-Prüfungen in Verbindung stehen, hinzu. Blockieren Sie bekannte Piraterie-Verbreitungsdomänen am Web-Gateway und wenden Sie eine Anwendungs-Whitelist an, um Spielstarter und unsignierte „Installer“-Exe-Dateien daran zu hindern, in beschreibbaren Speicherorten ausgeführt zu werden.

Reaktion

Bei einer Erkennung isolieren Sie den Endpunkt, bewahren Sie Beweise (Speicherauszüge, die verschlüsselten Archive und Loader-Artefakte) und durchsuchen Sie die Umgebung nach den identifizierten Modulen und abgelegten Dateien. Sperren Sie sofort 78.40.193.126 und dodi-repacks.site bei den Perimeterkontrollen. Führen Sie eine Zugriffstriangulation mit Schwerpunkt auf Browser-Passwörtern, Sitzungscookies und Kryptowährungs-Wallets durch, geben Sie dann betroffene Konten und Token zurück. Entfernen Sie die Persistenz des Angreifers (insbesondere geplante Aufgaben) und bereinigen Sie bösartige Dateien, dann überwachen Sie weiterhin auf Neuinfektionspfade, die mit installierter raubkopierter Software verbunden sind.

"graph TB %% Klassen-Definitionen classDef action fill:#99ccff classDef file fill:#ffcc99 classDef process fill:#ff9966 classDef malware fill:#ff6666 classDef network fill:#ccccff %% Schritt 1 u2013 Benutzer-Ausführung step1_user_exec["<b>Technik</b> – <b>T1204.002 Benutzer-Ausführung: Bösartige Datei</b><br/><b>Beschreibung</b>: Der Benutzer wird dazu verleitet, eine bösartige Datei wie einen geknackten Spiel-Installer auszuführen.<br/><b>Artefakt</b>: Instaler.exe"] class step1_user_exec action file_installer["<b>Datei</b> – Instaler.exe<br/>Erscheint legitim, enthält aber eine bösartige Nutzlast"] class file_installer file step1_user_exec –>|führt aus| file_installer %% Schritt 2 u2013 Python-Interpreter step2_python["<b>Technik</b> – <b>T1059.006 Befehl und Skript-Interpreter: Python</b><br/><b>Beschreibung</b>: Führt eingebetteten bösartigen Python-Code aus archive.rpa über den Ren'Py-Starter aus."] class step2_python action file_archive["<b>Datei</b> – archive.rpa<br/>Enthält bösartiges Python-Skript"] class file_archive file file_installer –>|startet| step2_python step2_python –>|lädt| file_archive %% Schritt 3 u2013 Verschleierte Nutzlast step3_obfusc["<b>Technik</b> – <b>T1027 Verschleierte Dateien oder Informationen</b><br/><b>Beschreibung</b>: Nutzlast wird versteckt mittels Base64-Codierung, XOR-Verschlüsselung und in ein Archiv komprimiert."] class step3_obfusc action file_obf_payload["<b>Datei</b> – obfuscated_payload.bin<br/>Komprimierte und verschlüsselte Nutzlast"] class file_obf_payload file file_archive –>|enthält| file_obf_payload file_obf_payload –>|wird dekodiert und entschlüsselt von| step3_obfusc %% Schritt 4 u2013 Sandbox-Ausweichen step4_sandbox["<b>Technik</b> – <b>T1497 Virtualisierung/Sandbox-Ausweichen</b><br/><b>Subu2011technik</b> – <b>T1497.002 Überprüfungen basierend auf Benutzeraktivitäten</b><br/><b>Beschreibung</b>: Loader führt umfassende VM- und Sandbox-Prüfungen (RAM, CPU, Registry) durch und bricht ab, wenn eine Analyseumgebung detektiert wird."] class step4_sandbox action step3_obfusc –>|liefert Code an| step4_sandbox %% Schritt 5 u2013 Prozess-Injektion step5_injection["<b>Technik</b> – <b>T1055 Prozess-Injektion</b><br/><b>Subu2011technik</b> – <b>T1055.002 Portable Executable Injektion</b><br/><b>Beschreibung</b>: HijackLoader injiziert bösartigen Code in legitime System-DLL rasapi32.dll, um Shellcode auszuführen."] class step5_injection action process_rasapi["<b>Prozess</b> – rasapi32.dll<br/>Ziel für PE-Injektion"] class process_rasapi process step4_sandbox –>|lädt| step5_injection step5_injection –>|injiziert in| process_rasapi %% Schritt 6 u2013 AppInit DLL-Sideloading step6_appinit["<b>Technik</b> – <b>T1546.010 Ereignis-getriggerte Ausführung: AppInit DLLs</b><br/><b>Beschreibung</b>: Bösartige DLLs (d3dx9_43.dll, VSDebugScriptAgent170.dll) werden mittels des vertrauenswürdigen Installer-Executables für Persistenz gesideloadet."] class step6_appinit action file_d3dx9["<b>Datei</b> – d3dx9_43.dll<br/>Bösartige gesideloadete DLL"] class file_d3dx9 file file_vsddebug["<b>Datei</b> – VSDebugScriptAgent170.dll<br/>Bösartige gesideloadete DLL"] class file_vsddebug file process_rasapi –>|löst das Laden von| file_d3dx9 aus process_rasapi –>|löst das Laden von| file_vsddebug aus file_d3dx9 –>|verwendet von| step6_appinit file_vsddebug –>|verwendet von| step6_appinit %% Schritt 7 u2013 UAC-Umgehung step7_uac["<b>Technik</b> – <b>T1548.002 Missbrauch der Kontrollmechanismen zur Erhöhung der Berechtigungen: Umgehung Benutzerkontensteuerung</b><br/><b>Beschreibung</b>: Loader versucht, UAC zu umgehen, um höhere Privilegien zu erlangen."] class step7_uac action step6_appinit –>|versucht Erhöhung über| step7_uac %% Schritt 8 u2013 Geplante Task-Persistenz step8_task["<b>Technik</b> – <b>T1053 Geplante Task/Job</b><br/><b>Beschreibung</b>: Ein geplanter Task wird erstellt, um Persistenz zu erhalten und die Nutzlast erneut auszuführen."] class step8_task action step7_uac –>|erstellt| step8_task %% Schritt 9 u2013 Credentia-Harvesting step9_cred["<b>Techniken</b> – <b>T1555.003 Anmeldedaten aus Passwort-Speichern: Anmeldedaten aus Web-Browsern</b> und <b>T1550.004 Verwendung von alternativen Authentifizierungsmaterialien: Web-Sitzungscookie</b><br/><b>Beschreibung</b>: Finaler ACR-Stealer erntet Browser-Passwörter, Cookies, Krypto-Wallets und andere Anmeldedaten."] class step9_cred action step8_task –>|führt aus| step9_cred %% Schritt 10 u2013 Exfiltration step10_exfil["<b>Technik</b> – <b>T1041 Exfiltration über C2-Kanal</b><br/><b>Beschreibung</b>: Gesammelte Daten werden zum Angreifer-C2-Server bei 78.40.193.126 gesendet."] class step10_exfil action network_c2["<b>Netzwerk</b> – C2-Server 78.40.193.126"] class network_c2 network step9_cred –>|exfiltriert Daten zu| network_c2 network_c2 –>|erhält Daten von| step10_exfil "

Angriffsfluss

Simulation – Ausführung

Voraussetzung: Der Vorflug-Check für Telemetrie & Baseline muss bestanden sein.

Begründung: Dieser Abschnitt beschreibt die präzise Ausführung der gegnerischen Technik (TTP), die zur Auslösung der Erkennungsregel entwickelt wurde. Die Befehle und Erzählungen MÜSSEN direkt die identifizierten TTPs widerspiegeln und darauf abzielen, die genaue Telemetrie zu erzeugen, die von der Erkennungslogik erwartet wird.

  • Angriffsnarrativ & Befehle:
    Ein Angreifer erhält einen bösartigen Ren’Py-Spielinstaller (Installer.exe), der neu verpackt wurde, um eine versteckte Python-Nutzlast zu enthalten. Wenn das Opfer den Installer ausführt, spawnt er einen sekundären Loader (W8CPbGQI.exe). Dieser Loader packt eine dritte Binärdatei (ZoneInd.exe) aus, die Prozessinjektion, Anmeldedaten-Dumping und die Einrichtung eines C2-Kanals über HTTP durchführt. Der Angreifer vermeidet absichtlich die Benennung eines Kinderprozesses chime.exe , um die Ausschlussklausel der Regel zu erfüllen.

    Durchgeführte Schritte auf dem kompromittierten Host:

    1. Den kompromittierten Ren’Py-Installer starten.
      Installer.exe wird als übergeordneter Prozess ausgeführt.
    2. Den ersten bösartigen Loader spawnen.
      Installer.exe erstellt W8CPbGQI.exe (Prozess-Erstellungsevent – entspricht TargetImage).
    3. Den Payload der zweiten Stufe starten.
      W8CPbGQI.exe startet ZoneInd.exe (ein weiteres Prozess-Erstellungsevent – entspricht ebenfalls TargetImage).
    4. Bösartige Aktionen durchführen (Prozessinjektion, Anmeldedaten-Dumping, C2).

    Diese Handlungen erzeugen die genaue Telemetrie, die die Sigma-Regel überwacht: ein Prozess mit Image=*Installer.exe erstellt ein Kind mit TargetImage=*W8CPbGQI.exe or *ZoneInd.exe, ohne den Ausschluss *chime.exe.

  • Regressions-Test-Skript:
    Das folgende Skript erstellt Dummy-Ausführungsdateien (einfache PowerShell-Skripte, die als .exe via PowerShell -c "..." zur Vorführung gespeichert werden) und orchestriert dann die Kette. Führen Sie es in einem erhöhten PowerShell-Prompt aus.

    # -------------------------------------------------
    # Regressions-Test-Skript – Simulieren bösartige Kette
    # -------------------------------------------------
    
    # 1. Platzhalter-Binärdateien erstellen (simulierte Ausführungsdateien)
    $binPath = "$env:TEMPRenPyChain"
    New-Item -ItemType Directory -Path $binPath -Force | Out-Null
    
    # Helfer, um eine leichtgewichtige exe zu erstellen, die einfach schläft (benutzen Sie PowerShell's .exe Shim)
    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
        # Verwenden Sie PowerShells PS2EXE (oder einen beliebigen .exe-Wrapper) – hier imitieren wir mit PowerShell -File
        # Zur Einfachheit erstellen wir einfach einen geplanten Task, der das ps1 ausführt; der .exe-Pfad ist ein Platzhalter.
        New-Item -ItemType File -Path $exe -Force | Out-Null
    }
    
    # Stub-Ausführungsdateien erstellen
    New-StubExe "Installer"
    New-StubExe "W8CPbGQI"
    New-StubExe "ZoneInd"
    
    # 2. Die Kette ausführen
    Write-Host "`n[+] Starten von Installer.exe (übergeordnet)..."
    Start-Process -FilePath "$binPathInstaller.exe" -NoNewWindow
    
    # Kleine Verzögerung, um sicherzustellen, dass der übergeordnete Prozess in den Logs erscheint
    Start-Sleep -Seconds 2
    
    Write-Host "[+] Installer.exe spawnt W8CPbGQI.exe..."
    Start-Process -FilePath "$binPathW8CPbGQI.exe" -NoNewWindow
    
    Start-Sleep -Seconds 1
    
    Write-Host "[+] W8CPbGQI.exe spawnt ZoneInd.exe..."
    Start-Process -FilePath "$binPathZoneInd.exe" -NoNewWindow
    
    Write-Host "`n[+] Kette ausgeführt. Überprüfen Sie die Erkennung in Ihrem SIEM."
    # -------------------------------------------------
  • Bereinigungskommandos:
    Entfernen Sie die temporären Dateien und beenden Sie alle verbleibenden Schlaf-Prozesse.

    # Bereinigen Sie die Stub-Ausführungsdateien und das Verzeichnis
    $binPath = "$env:TEMPRenPyChain"
    Write-Host "`n[+] Stoppen aller verbleibenden Stub-Prozesse..."
    Get-Process -Name "Installer","W8CPbGQI","ZoneInd" -ErrorAction SilentlyContinue | Stop-Process -Force
    
    Write-Host "[+] Entfernen temporärer Dateien..."
    Remove-Item -Path $binPath -Recurse -Force
    
    Write-Host "[+] Bereinigung abgeschlossen."