SOC Prime Bias: Hoch

17 Jun 2026 12:58 UTC

Wie eine VHDX-Datei Remcos RAT liefert

Author Photo
SOC Prime Team linkedin icon Folgen
Wie eine VHDX-Datei Remcos RAT liefert
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Eine mehrstufige Malware-Kampagne verwendet ein präpariertes ZIP-Archiv mit einem VHDX-Disk-Image, um gängige Sicherheitskontrollen zu umgehen. Nachdem das VHDX eingebunden ist, wird eine verschleierte JavaScript-Datei ausgeführt, die eine Reihe von PowerShell-Stufen über WMI startet. Die finale Nutzlast ist Remcos RAT, die in einen legitimen Windows-Prozess injiziert wird, um die Ausführung zu verbergen.

Untersuchung

Der Forscher untersuchte ein bösartiges ZIP-Archiv und den eingebetteten VHDX-Container, um den vollständigen Angriffsablauf zu rekonstruieren. Die Analyse deckte eine komplexe Ausführungskette auf, die WMI-basierte Prozesscreation nutzte, um Eltern-Kind-Beziehungen zu verbergen, zusammen mit XOR- und Base64-String-Verschleierung und einem reflektierenden .NET-Loader. Der Infektionspfad konnte erfolgreich vom initialen JavaScript bis zur Bereitstellung der finalen Remcos-Nutzlast zurückverfolgt werden.

Abmilderung

Organisationen sollten strikte Kontrollen anwenden, um das Einbinden von VHDX-Disk-Images aus unzuverlässigen Quellen zu verhindern. Sicherheitstools sollten ebenfalls verdächtige Win32_Process.Create Aktivitäten durch Skript-Engines wie JavaScript oder PowerShell überwachen. Das Blockieren bekannter bösartiger Domains und die Überwachung von ungewöhnlicher Persistence in den Run-Schlüsseln der Registry können das Risiko weiter reduzieren.

Reaktion

Wenn diese Aktivität erkannt wird, isolieren Sie den betroffenen Endpunkt sofort, um die Kommando-und-Kontroll-Kommunikation zu stoppen. Erfassen Sie einen Speicherauszug, um die injizierte Remcos-Nutzlast und den reflektierenden .NET-Loader zu erfassen. Eine vollständige forensische Überprüfung sollte dann nach bösartigen Run-Schlüssel-Einträgen, weiteren VHDX-Dateien und verdächtigen PowerShell-Aktivitäten in der Umgebung suchen.

graph TB %% Klassendefinitionen classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef connection fill:#f9f9f9 %% Initialer Zugriff und Ausführung action_phishing[„<b>Aktion</b> – <b>T1566.001 Phishing: Spearphishing-Anhang</b><br/>Beschreibung: Bösartiges ZIP-Archiv wird<br/>per E-Mail zugestellt.“] class action_phishing action action_user_exec[„<b>Aktion</b> – <b>T1204.002 Benutzerausführung: Schadsoftware-Datei</b><br/>Beschreibung: Benutzer führt<br/>die schädliche ZIP-Datei aus.“] class action_user_exec action tool_vhdx[„<b>Werkzeug</b> – <b>Name</b>: VHDX-Datei<br/>Beschreibung: Malware-Container zum Verbergen<br/>der Payload mittels Escape to Host T1611.“] class tool_vhdx tool %% Verschleierung und Skripte file_js[„<b>Datei</b>: Partnerschaft_fur_neue_Angebotsanfrage.js<br/><b>Beschreibung</b>: Bösartige JavaScript-Datei mit<br/>Befehlsverschleierung T1027.010 durch<br/>String-Pollution und XOR-Entschlüsselung.“] class file_js tool action_wmi[„<b>Aktion</b>: PowerShell über WMI<br/><b>Beschreibung</b>: Startet ein PowerShell-Skript über WMI,<br/>um die Überwachung von Prozessbeziehungen zu umgehen.“] class action_wmi action %% Eingehender Transfer und Malware-Phasen action_ingress_1[„<b>Aktion</b> – <b>T1105 Eingehender Tool-Transfer</b><br/><b>Beschreibung</b>: PowerShell-Skript lädt<br/>die Datei der zweiten Stufe herunter.“] class action_ingress_1 action file_dsp[„<b>Datei</b>: Exoticisms121.dsp<br/><b>Beschreibung</b>: Datei der zweiten Stufe,<br/>gespeichert in %APPDATA%.“] class file_dsp tool tool_loader[„<b>Werkzeug</b>: Reflective .NET Loader<br/><b>Beschreibung</b>: Führt Shellcode<br/>aus der Datei der zweiten Stufe aus.“] class tool_loader tool action_ingress_2[„<b>Aktion</b> – <b>T1105 Eingehender Tool-Transfer</b><br/><b>Beschreibung</b>: Shellcode ruft<br/>die finale Remcos-RAT-Payload ab.“] class action_ingress_2 action malware_remcos[„<b>Malware</b>: Remcos RAT<br/>Beschreibung: Finale Payload für<br/>Command-and-Control TA0011.“] class malware_remcos malware %% Prozess und C2 process_bg_task[„<b>Prozess</b>: backgroundTaskHost.exe<br/>Beschreibung: Zielprozess<br/>für die Malware-Injektion.“] class process_bg_task process c2_server[„<b>C2-Server</b>: animal342.duckdns.org:53562<br/>Beschreibung: Entfernter Server für<br/>Command-and-Control-Kommunikation.“] class c2_server tool %% Persistenz action_persistence[„<b>Aktion</b> – <b>T1547.001 Boot- oder Logon-Autostart-Ausführung: Registry-Run-Schlüssel / Startup-Ordner</b><br/>Beschreibung: Verwendet cmd.exe zum Erstellen<br/>von Registry-Startschlüsseln für den PowerShell-Loader.“] class action_persistence action %% Verbindungen action_phishing –>|führt_zu| action_user_exec action_user_exec –>|legt_offen| tool_vhdx tool_vhdx –>|enthält| file_js file_js –>|führt_über_WMI_aus| action_wmi action_wmi –>|führt_aus| action_ingress_1 action_ingress_1 –>|lädt_herunter| file_dsp file_dsp –>|wird_verarbeitet_von| tool_loader tool_loader –>|führt_aus| action_ingress_2 action_ingress_2 –>|ruft_ab| malware_remcos malware_remcos –>|injiziert_in| process_bg_task malware_remcos –>|kommuniziert_mit| c2_server malware_remcos –>|stellt_sicher| action_persistence

Angriffsablauf

## Simulationsausführung

Voraussetzung: Der Telemetrie- & Baseline-Preflight-Check muss bestanden sein.

Begründung: Dieser Abschnitt erläutert die präzise Durchführung der Taktik und Technik des Angreifers (TTP), die darauf abzielt, die Erkennungsregel auszulösen. Die Befehle und Erzählungen MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu generieren, die von der Erkennungslogik erwartet wird. Abstrakte oder nicht verwandte Beispiele führen zu Fehldiagnosen.

  • Angriffserzählung & Befehle: Der Angreifer zielt darauf ab, eine bösartige Nutzlast im Speicher auszuführen, um eine Erkennung durch traditionelle AVs zu vermeiden. Dabei nutzt er ein PowerShell-Skript, das [System.Reflection.Assembly]::Load() verwendet, um eine kompilierte .NET-DLL direkt aus einem Byte-Array in den aktuellen Prozess zu laden. Um persistente Präsenz zu wahren und Prüfung zu entgehen, versucht er, mit backgroundTaskHost.exe, einem legitimen Windows-Prozess, zu interagieren oder diesen zu starten, um seinen Ausführungs-Thread in einem standardmäßigen System-Hintergrundprozess zu verstecken.

  • Regressionstest-Skript:

    # Simulationsskript: Reflektives .NET-Laden & Prozess-Interaktion
    # Dieses Skript imitiert die durch die Erkennungsregel erfasste Logik.
    
    # 1. Dummy-Byte-Array erstellen, das ein .NET-Assembly darstellt (stark vereinfacht für die Simulation)
    $assemblyBytes = [byte[]](0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00) # Simuliert MZ-Header
    
    Write-Host "[+] Versucht, reflektives .NET-Assembly zu laden..." -ForegroundColor Cyan
    try {
        # Diese spezielle Zeichenfolge ist ein Ziel für die Erkennungsregel
        $assembly = [System.Reflection.Assembly]::Load($assemblyBytes)
        Write-Host "[!] Erfolg: Assembly im Speicher geladen (nur Simulation)." -ForegroundColor Green
    } catch {
        Write-Host "[-] Assembly laden fehlgeschlagen (erwartet wegen ungültiger Dummy-Bytes), aber der Befehl wurde gesendet." -ForegroundColor Yellow
    }
    
    Write-Host "[+] Versucht, backgroundTaskHost.exe zu invoking, um Erkennung auszulösen..." -ForegroundColor Cyan
    # Diese spezielle Zeichenfolge ist ein Ziel für die Erkennungsregel
    Start-Process "C:WindowsSystem32backgroundTaskHost.exe" -ArgumentList "/test-detection"
  • Bereinigungskommandos:

    # Bereinigung: Den gestarteten backgroundTaskHost-Prozess beenden
    Stop-Process -Name "backgroundTaskHost" -ErrorAction SilentlyContinue
    Write-Host "[+] Bereinigung abgeschlossen. BackgroundTaskHost beendet." -ForegroundColor Green