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.
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