SOC Prime Bias: Kritisch

18 Feb. 2026 16:42

Verfolgung von Malware-Kampagnen mit wiederverwendetem Material

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
Verfolgung von Malware-Kampagnen mit wiederverwendetem Material
shield icon

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

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‑Expression zum Starten von calc.exe) kodiert in Base64. Die Nutzlast ist zwischen den Strings BaseStart- and -BaseEnd eingepackt, 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_start and selection_base_end Bedingungen, 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