SOC Prime Bias: Kritisch

07 Apr. 2026 18:30

Mustang Panda und PlugX: Eine tiefgehende Analyse von Phishing-gestützten Loader-Operationen

Author Photo
Ruslan Mikhalov Leiter der Bedrohungsforschung bei SOC Prime linkedin icon Folgen
Mustang Panda und PlugX: Eine tiefgehende Analyse von Phishing-gestützten Loader-Operationen
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Zusammenfassung

Der Bericht beschreibt eine mehrstufige Infiltration, die der China-verknüpften Gruppe Mustang Panda zugeschrieben wird. Die Kette beginnt mit einem präparierten Windows-Shortcut (LNK), der einen PowerShell-Loader startet. Dieser Loader legt ein Ablenkungs-ZIP ab, entpackt eine verschlüsselte DLL und setzt letztlich den PlugX Remote-Access-Trojaner mittels reflektierendem Laden und Thread-Pool-Injektion ein. Der Command-and-Control-Traffic wird über HTTPS an die Infrastruktur gesendet, die mit coastallasercompany.com verbunden ist. Das Implantat setzt auch evasive Techniken wie API-Hashing, PEB-Walking und starke String-Obfuskation ein, um die statische Erkennung zu verringern.

Untersuchung

Analysten haben den Ausführungspfad von Anfang bis Ende rekonstruiert: erste LNK-Aktivierung, PowerShell-Staging, DLL-Side-Loading, Entschlüsselung im Speicher und finale PlugX-Laufzeit. Die Tools verwenden DJB2-ähnliches API-Hashing und ROL-13-Hashing für die Importauflösung sowie ein RC4-verschlüsseltes Konfigurations-Blob. Persistenz wurde durch die Modifikation des HKCU-Run-Registry-Keys beobachtet. Die Untersuchung extrahierte erkennungssichere Indikatoren einschließlich Dateinamen, Hashes und der C2-Domain, die für HTTPS-Beaconing verwendet wird.

Minderung

Blockieren oder quarantänisieren Sie unzuverlässige .lnk-Dateien und beschränken Sie die PowerShell-Ausführung, insbesondere Skripte, die von oder in benutzerbeschreibbare Orte lesen oder schreiben. Überwachen Sie auf verdächtige Dateierstellung unter %LocalAppData%, besonders auf zufällig generierte GUID-ähnliche Namen, und härten Sie das DLL-Suchverhalten, um Side-Loading-Möglichkeiten zu verringern. Wenden Sie DNS-/Proxy-Kontrollen an, um den Zugriff auf die identifizierte C2-Domain zu verweigern, und nutzen Sie TLS-Inspektion, wo geeignet, um anomale HTTPS-Beacon-Muster sichtbar zu machen.

Reaktion

Wenn verdächtige Aktivitäten erkannt werden, isolieren Sie den Host, fangen Sie flüchtigen Speicher ein und bewahren Sie die verschlüsselte Konfiguration zur tiefergehenden Analyse auf. Durchsuchen Sie die Umgebung nach den extrahierten IOCs, entfernen Sie abgelegte Artefakte und löschen Sie den bösartigen HKCU-Run-Persistenzeintrag. Rotieren Sie Anmeldeinformationen in dem Scope und suchen Sie nach Zeichen von lateraler Bewegung, die mit der PlugX-Betreiber-Taktik übereinstimmen.

"graph TB %% Klassen Definitionen classDef technique fill:#ffcc99 classDef artifact fill:#ccffcc classDef process fill:#ccccff classDef registry fill:#ffe599 %% Initialer Zugriff initial_zip["<b>Artefakt</b> – Bösartiges ZIP-Archiv das .lnk enthält"] class initial_zip artifact lnk_shortcut["<b>Artefakt</b> – Shortcut (.lnk) mit verstecktem Icon"] class lnk_shortcut artifact tech_lnk_smack["<b>Technik</b> – T1027.012 LNK Icon Smuggling<br/><b>Beschreibung</b>: Verwende LNK-Icon, um bösartige Nutzlast zu verbergen"] class tech_lnk_smack technique tech_user_exec["<b>Technik</b> – T1204.002 Benutzer Ausführung: Bösartige Datei<br/><b>Beschreibung</b>: Opfer öffnet bösartige Datei"] class tech_user_exec technique %% Ausführung psh_stage["<b>Prozess</b> – PowerShell-Stufe ausgeführt durch .lnk"] class psh_stage process tech_psh["<b>Technik</b> – T1059.001 PowerShell<br/><b>Beschreibung</b>: Befehl und Skript-Interpreter"] class tech_psh technique tech_archive_custom["<b>Technik</b> – T1560.003 Archivierung durch benutzerdefinierte Methode<br/><b>Beschreibung</b>: Liest ZIP als rohe Daten"] class tech_archive_custom technique extracted_exe["<b>Artefakt</b> – Extrahiertes legitim wirkendes ausführbares Programm"] class extracted_exe artifact malicious_dll["<b>Artefakt</b> – Eraser.dll (bösartig)"] class malicious_dll artifact encrypted_dat["<b>Artefakt</b> – Verschlüsselte .dat-Nutzlast"] class encrypted_dat artifact %% Persistenz run_key["<b>Registrierung</b> – HKCUSoftwareMicrosoftWindowsCurrentVersionRun Eintrag"] class run_key registry tech_run_key["<b>Technik</b> – T1037.001 Logon Script (Start- oder Anmeldeinitialisierungsskripte)<br/><b>Beschreibung</b>: Run Key Persistenz"] class tech_run_key technique shortcut_mod["<b>Technik</b> – T1547.009 Shortcut Modifikation<br/><b>Beschreibung</b>: Modifiziert Shortcuts für Autostart"] class shortcut_mod technique active_setup["<b>Technik</b> – T1547.014 Aktive Einrichtung<br/><b>Beschreibung</b>: Registrierungseintrag für Autostart via Aktiver Einrichtung"] class active_setup technique psh_profile["<b>Technik</b> – T1546.013 PowerShell Profil<br/><b>Beschreibung</b>: Hookt PowerShell-Profil für Ausführung"] class psh_profile technique %% Verteidigungs-Ausweichen tech_compress["<b>Technik</b> – T1027.015 Kompression<br/><b>Beschreibung</b>: Komprimiert Nutzlast innerhalb ZIP"] class tech_compress technique tech_dynamic_api["<b>Technik</b> – T1027.007 Dynamische API-Resolution<br/><b>Beschreibung</b>: Löst APIs zur Laufzeit durch Hash"] class tech_dynamic_api technique tech_embedded["<b>Technik</b> – T1027.009 Eingebettete Nutzlasten<br/><b>Beschreibung</b>: Eingebettete verschlüsselte Nutzlasten"] class tech_embedded technique tech_deobfuscate["<b>Technik</b> – T1140 Deobfuscate/Decode Dateien oder Informationen<br/><b>Beschreibung</b>: RC4/XOR-Entschlüsselung zur Laufzeit"] class tech_deobfuscate technique tech_masquerade["<b>Technik</b> – T1036.008 Maskerade: Datei-Typ Maskerade<br/><b>Beschreibung</b>: Decoy-PDF-Overlay"] class tech_masquerade technique %% Privilegien-Eskalation/Ausführung tech_reflective["<b>Technik</b> – T1620 Reflektierendes Code Laden<br/><b>Beschreibung</b>: Lädt DLL in Speicher ohne Festplattenzugriff"] class tech_reflective technique tech_injection["<b>Technik</b> – T1055.001 Prozess Injektion: DLL Injektion<br/><b>Beschreibung</b>: Injektions-DLL durch PEB-Walking und Thread-Pool-Callbacks"] class tech_injection technique %% Befehl und Kontrolle c2_https["<b>Prozess</b> – HTTPS C2-Kommunikation (Port 443)"] class c2_https process tech_nonstd_port["<b>Technik</b> – T1571 Nicht-standardmäßiger Port<br/><b>Beschreibung</b>: Verwendet gemeinsamen Port, um Traffic zu verbergen"] class tech_nonstd_port technique tech_dead_drop["<b>Technik</b> – T1102.001 Dead Drop Resolver<br/><b>Beschreibung</b>: Ruft Serveradresse von Webdienst ab"] class tech_dead_drop technique tech_proxy["<b>Technik</b> – T1090.002 Proxy: Externer Proxy<br/><b>Beschreibung</b>: Leitet Traffic durch externen Proxy"] class tech_proxy technique %% Verbindungen initial_zip –>|enthält| lnk_shortcut lnk_shortcut –>|verwendet| tech_lnk_smack lnk_shortcut –>|triggert| tech_user_exec tech_user_exec –>|führt zu| psh_stage psh_stage –>|führt aus| tech_psh psh_stage –>|liest| tech_archive_custom tech_archive_custom –>|extrahiert| extracted_exe tech_archive_custom –>|extrahiert| malicious_dll tech_archive_custom –>|extrahiert| encrypted_dat psh_stage –>|schreibt| run_key run_key –>|implementiert| tech_run_key psh_stage –>|erstellt| shortcut_mod psh_stage –>|erstellt| active_setup psh_stage –>|hookt| psh_profile psh_stage –>|wendet an| tech_compress psh_stage –>|wendet an| tech_dynamic_api psh_stage –>|wendet an| tech_embedded psh_stage –>|wendet an| tech_deobfuscate psh_stage –>|wendet an| tech_masquerade malicious_dll –>|agiert als| tech_reflective malicious_dll –>|führt aus| tech_injection tech_injection –>|aktiviert| c2_https c2_https –>|verwendet| tech_nonstd_port c2_https –>|verwendet| tech_dead_drop c2_https –>|kann leiten durch| tech_proxy %% Klassen Zuordnungen class initial_zip,lnk_shortcut,extracted_exe,malicious_dll,encrypted_dat artifact class psh_stage,c2_https process class run_key registry class tech_lnk_smack,tech_user_exec,tech_psh,tech_archive_custom,tech_run_key,shortcut_mod,active_setup,psh_profile,tech_compress,tech_dynamic_api,tech_embedded,tech_deobfuscate,tech_masquerade,tech_reflective,tech_injection,tech_nonstd_port,tech_dead_drop,tech_proxy technique "

Angriffsablauf

Simulationsausführung

Voraussetzung: Die Telemetrie- und Basislinien-Vorabprüfung muss bestanden haben.

Begründung: Dieser Abschnitt beschreibt die genaue Ausführung der Angreifer-Technik (TTP), die darauf ausgelegt ist, die Erkennungsregel auszulösen. Die Befehle und Erzählungen reflektieren direkt die identifizierten TTPs und sollen die genau von der Erkennungslogik erwartete Telemetrie erzeugen.

  • Angriffserzählung & Befehle:
    Ein Angreifer hat sich auf einer kompromittierten Arbeitsstation festgesetzt und möchte bösartige Nutzlasten bereitstellen, während er für den Benutzer unsichtbar bleibt. Sie starten PowerShell im versteckten Modus (-w versteckt) um UI-Popup-Fenster zu vermeiden. Innerhalb derselben PowerShell-Sitzung verwenden sie das eingebaute tar Dienstprogramm (verfügbar in modernen Windows-Versionen), um ein Dekoy-Archiv zu extrahieren, das die nächste Nutzlaststufe direkt in %LocalAppData%, einen beschreibbaren Ort, der oft von Abwehrmechanismen übersehen wird.

    Schritte:

    1. Erstellen Sie ein kleines tar-Archiv (payloads.tar) das eine harmlose Dummy-Datei (die bösartige Nutzlast simuliert) enthält.
    2. Speichern Sie das Archiv an einem temporären Ort (C:Temp).
    3. Führen Sie ein PowerShell-Fenster im versteckten Modus aus, das den tar Extrahierungsbefehl auf %LocalAppData%.
  • Regressions-Test-Skript:

    # ---------------------------------------------------------
    # Schritt 1 – Bereiten Sie ein Beispiel-tar-Archiv vor (simuliert Nutzlasten)
    # ---------------------------------------------------------
    $tempDir   = "C:Temp"
    $archive   = "$tempDirpayloads.tar"
    $payload   = "$tempDirdummy.txt"
    $destDir   = "$Env:LocalAppDataStagedPayloads"
    
    # Stellen Sie sicher, dass der Temp-Ordner existiert
    New-Item -ItemType Directory -Path $tempDir -Force | Out-Null
    
    # Erstellen Sie eine Dummy-Datei zum Archivieren
    "Dies ist eine Dummy-Nutzlastdatei." | Set-Content -Path $payload -Encoding UTF8
    
    # Erstellen Sie das tar-Archiv (erfordert Windows tar)
    tar -cf $archive -C $tempDir dummy.txt
    
    # ---------------------------------------------------------
    # Schritt 2 – Führen Sie die versteckte PowerShell aus, die das Archiv extrahiert
    # ---------------------------------------------------------
    $extractCmd = "tar -xvf `"$archive`" -C `"$Env:LocalAppData`""
    $psArgs     = "-NoProfile -WindowStyle Hidden -Command `$extractCmd"
    
    Start-Process -FilePath "powershell.exe" -ArgumentList $psArgs -WindowStyle Hidden
    
    # ---------------------------------------------------------
    # Schritt 3 – Optional: Überprüfen Sie die Extraktion (für manuelle Validierung)
    # ---------------------------------------------------------
    Write-Host "Extraktion abgeschlossen. Dateien sollten jetzt in $Env:LocalAppData existieren"
  • Bereinigungskommandos:

    # Entfernen Sie temporäre Dateien und bereitgestellte Nutzlasten
    Remove-Item -Path "C:Temppayloads.tar" -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "C:Tempdummy.txt"   -Force -ErrorAction SilentlyContinue
    Remove-Item -Path "$Env:LocalAppDatadummy.txt" -Force -ErrorAction SilentlyContinue
    # Optional das gesamte Bereitstellungsverzeichnis entfernen, falls erstellt
    Remove-Item -Path "$Env:LocalAppDataStagedPayloads" -Recurse -Force -ErrorAction SilentlyContinue