Verfolgung von Malware-Kampagnen mit wiederverwendetem Material
Detection stack
- AIDR
- Alert
- ETL
- Query
Zusammenfassung
Diese Kampagne verwendet ein JPEG-Bild als „Träger“, das eine bösartige Nutzlast zwischen den BaseStart- und -BaseEnd-Tags verbirgt. Der erste Zugriff erfolgt über die Ausnutzung von Microsoft Equation Editor (CVE-2017-11882) in einem maßgeschneiderten Anhang, der ein HTA herunterlädt. Das HTA führt PowerShell aus, um eine .NET Binärphase abzurufen. Die Wiederverwendung des gleichen Bildes in vielen Mustern deutet darauf hin, dass der Betreiber auf wiederholbare Komponenten setzt.
Untersuchung
Der Forscher beobachtete TELERADIO_IB_OBYEKTLRIN_BURAXILIS_FORMASI.xIs, das den Equation Editor-Exploit enthält. Die Kette ruft ein HTA von einer bösartigen IP ab, das PowerShell ausführt, um eine zweite Nutzlast herunterzuladen, die auf einer anderen IP gehostet wird. Die Endstufe ist ein .NET-Binärcode, der im JPEG-Träger eingebettet ist und über die BaseStart/-BaseEnd-Begrenzer wiederhergestellt wird. Ähnliche Trägerbilder wurden in Dutzenden von VirusTotal-Einsendungen gefunden.
Minderung
Patch für CVE-2017-11882 und halten Sie Office auf dem neuesten Stand. Blockieren oder beschränken Sie die Ausführung von HTA, erzwingen Sie die Signierung von PowerShell-Skripten und verwenden Sie URL/IP-Filterung, um den Zugriff auf die Hosting-Infrastruktur zu verweigern.
Reaktion
Erkennen und isolieren Sie den Anhang und die HTA-Phase und benachrichtigen Sie über PowerShell-Download-Aktivitäten zu den identifizierten IPs. Isolieren Sie betroffene Hosts und führen Sie Speicherforensik durch, um die .NET-Nutzlast im Speicher zu lokalisieren und zu entfernen.
„graph TB %% Klassendefinitionen classDef action fill:#99ccff classDef tool fill:#cccccc classDef process fill:#ffcc99 %% Knoten node_phishing[„<b>Aktion</b> – <b>T1566.001 Phishing: Spearphishing Anhang</b><br/><b>Beschreibung</b>: Bösartige .xls-Datei, die CVE-2017-11882 ausnutzt, per E-Mail gesendet.“] class node_phishing action node_user_exec[„<b>Aktion</b> – <b>T1204.002 Benutzer Ausführung</b><br/><b>Beschreibung</b>: Opfer öffnet den bösartigen Anhang.“] class node_user_exec action node_exploit_client[„<b>Aktion</b> – <b>T1203 Ausnutzung für Client-Ausführung</b><br/><b>Beschreibung</b>: Equation Editor-Schwachstelle löst Herunterladen von bösartigen Inhalten aus.“] class node_exploit_client action node_mshta[„<b>Aktion</b> – <b>T1218.005 System Binary Proxy Execution: Mshta</b><br/><b>Beschreibung</b>: HTA-Datei wird heruntergeladen und über mshta ausgeführt.“] class node_mshta action node_powershell[„<b>Aktion</b> – <b>T1059.001 Befehls- und Skriptinterpreter: PowerShell</b><br/><b>Beschreibung</b>: PowerShell-Skript wird von einem entfernten Server abgerufen und ausgeführt.“] class node_powershell action node_web_comm[„<b>Aktion</b> – <b>T1102.003 Webdienst: Einwegkommunikation</b><br/><b>Beschreibung</b>: Skript zieht ein PNG-Bild von einem entfernten Server.“] class node_web_comm action node_stego[„<b>Aktion</b> – <b>T1027.003 Verschleierte Dateien oder Informationen: Steganographie</b><br/><b>Beschreibung</b>: PNG enthält Base64-Nutzlast, begrenzt durch BaseStart und BaseEnd-Markierungen.“] class node_stego action node_dotnet[„<b>Aktion</b> – <b>Ausführung</b><br/><b>Beschreibung</b>: Eingebettete .NET-Binärnutzlast wird auf dem Host ausgeführt.“] class node_dotnet process %% Verbindungen node_phishing u002du002d>|führt zu| node_user_exec node_user_exec u002du002d>|führt zu| node_exploit_client node_exploit_client u002du002d>|führt zu| node_mshta node_mshta u002du002d>|führt aus| node_powershell node_powershell u002du002d>|lädt herunter| node_web_comm node_web_comm u002du002d>|ruft ab| node_stego node_stego u002du002d>|enthält| node_dotnet „
Angriffsablauf
Erkennungen
Verdächtiges LOLBAS MSHTA Defense Evasion Verhalten durch Erkennung der zugehörigen Befehle (via process_creation)
Ansehen
Verdächtige PowerShell-Strings (via PowerShell)
Ansehen
Verdächtiger Dateidownload über direkte IP (via Proxy)
Ansehen
Verdächtiger Equation Editor-Kindprozess (via cmdline)
Ansehen
Verdächtige PowerShell-Strings (via cmdline)
Ansehen
IOCs (DestinationIP) zur Erkennung: Verfolgung von Malware-Kampagnen mit wiederverwendetem Material
Ansehen
IOCs (SourceIP) zur Erkennung: Verfolgung von Malware-Kampagnen mit wiederverwendetem Material
Ansehen
Erkennen bösartiger HTA- und Base64-Bildnutzlast-Übermittlung [Proxy]
Ansehen
Abrufen von PowerShell-Nutzlasten mit Base64-enkodierter Technik [Windows PowerShell]
Ansehen
Simulationsausführung
Voraussetzung: Der Telemetrie- & Baseline-Vorab-Check muss bestanden sein.
Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der gegnerischen Technik (TTP), die zur Auslösung der Erkennungsregel entwickelt wurde. Die Befehle und die Erzählung MÜSSEN die identifizierten TTPs direkt widerspiegeln und darauf abzielen, die genaue Telemetrie zu generieren, die von der Erkennungslogik erwartet wird.
-
Angriffserzählung & Befehle:
Ein Angreifer hat eine clientseitige Schwachstelle ausgenutzt, die eine bösartige HTA-Datei bereitstellt. Das HTA startet PowerShell mit einer Befehlszeile, die eine bösartige Nutzlast einbettet (z.B.Invoke‑Expressionzum Starten voncalc.exe) kodiert in Base64. Die Nutzlast ist zwischen den StringsBaseStart-and-BaseEndeingepackt, so dass der Angreifer sie zuverlässig aus dem Stegreif extrahieren kann. Der auf dem kompromittierten Host ausgeführte Befehl ist:powershell.exe -NoProfile -Command "$b='BaseStart-$( [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Start-Process calc.exe')) )-BaseEnd'; $payload=$b -replace '.*BaseStart-','' -replace '-BaseEnd.*',''; IEX ([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String($payload)))"Diese Befehlszeile erfüllt beide
selection_base_startandselection_base_endBedingungen, wodurch die Regel ausgelöst wird. -
Regressionstest-Skript: Das folgende eigenständige PowerShell-Skript reproduziert das bösartige Verhalten und kann auf jedem Windows-Host ausgeführt werden, auf dem die oben aktivierte Telemetrie aktiviert ist.
# Regressionstest-Skript – löst die Erkennungsregel aus # 1. Erstellen des Base64-kodierten Nutzlasts (Starten von calc.exe) $payload = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes('Start-Process calc.exe')) # 2. Zusammenstellen der kompletten Befehlszeile mit Begrenzern $cmd = "BaseStart-$payload-BaseEnd" # 3. Ausführen von PowerShell mit der erstellten Befehlszeile $fullCommand = "powershell.exe -NoProfile -Command `"& {`$b='$cmd'; `$payload=`$b -replace '.*BaseStart-','' -replace '-BaseEnd.*',''; IEX ([Text.Encoding]::Unicode.GetString([Convert]::FromBase64String(`$payload)))`"" # 4. Ausführen des Befehls (dies wird calc.exe starten) Invoke-Expression $fullCommand -
Bereinigungskommandos: Entfernen Sie alle Artefakte und beenden Sie den gestarteten Prozess falls nötig.
# Bereinigung – schließen des Rechners, falls noch laufend und Löschen der Befehlsverlauf Get-Process calc -ErrorAction SilentlyContinue | Stop-Process -Force # Optional löschen der PowerShell-Geschichte (nur für die aktuelle Sitzung) Remove-Item (Get-PSReadlineOption).HistorySavePath -ErrorAction SilentlyContinue