Wie eine VHDX-Datei Remcos RAT liefert
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
Erkennungen
Mögliche Persistenzpunkte [ASEPs – Software/NTUSER Hive] (über registry_event)
Ansicht
Mögliche Persistenzpunkte [ASEPs – Software/NTUSER Hive] (über cmdline)
Ansicht
LOLBAS WScript / CScript (über Prozess-Erstellung)
Ansicht
Virtuelles Hard Disk File wurde erstellt (über file_event)
Ansicht
Möglicher dynamischer DNS-Dienst wurde kontaktiert (über dns)
Ansicht
PowerShell Reflektiver .Net Loader und Prozessinjektions-Erkennung [Windows Process Creation]
Ansicht
PowerShell Script Execution über WMI zur EDR-Umgehung [Windows Powershell]
Ansicht
## 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, mitbackgroundTaskHost.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