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