SOC Prime Bias: Critico

07 Apr 2026 18:30

Mustang Panda e PlugX: Un’immersione nei Caricamenti da Operazioni di Phishing

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso SOC Prime linkedin icon Segui
Mustang Panda e PlugX: Un’immersione nei Caricamenti da Operazioni di Phishing
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

Il report descrive un’intrusione multistadio attribuita al gruppo Mustang Panda legato alla Cina. La catena inizia con un collegamento Windows LNK armato che lancia un caricatore PowerShell. Questo caricatore rilascia un decoy ZIP, estrae una DLL crittografata e alla fine distribuisce il trojan PlugX per l’accesso remoto utilizzando il caricamento riflettente e l’iniezione del thread-pool. Il traffico di comando e controllo viene inviato tramite HTTPS verso l’infrastruttura associata a coastallasercompany.com. L’impianto implementa anche tecniche evasive come la hash delle API, il PEB walking e l’offuscamento pesante delle stringhe per ridurre il rilevamento statico.

Indagine

Gli analisti hanno ricostruito il percorso di esecuzione dall’inizio alla fine: attivazione iniziale di LNK, staging di PowerShell, side-loading di DLL, decrittazione in memoria e runtime finale di PlugX. Gli strumenti utilizzano hash API simili a DJB2 e hash ROL-13 per la risoluzione delle importazioni, oltre a un blob di configurazione crittografato RC4. Si è osservata persistenza attraverso la modifica della chiave di registro HKCU Run. L’indagine ha estratto indicatori pronti per il rilevamento, inclusi nomi di file, hash e il dominio C2 utilizzato per il beaconing HTTPS.

Mitigazione

Bloccare o mettere in quarantena i file .lnk non attendibili e limitare l’esecuzione di PowerShell, specialmente gli script che leggono o scrivono da posizioni scrivibili dall’utente. Monitorare la creazione di file sospetti sotto %LocalAppData%, in particolare nomi generati casualmente simili a GUID, e rafforzare il comportamento dell’ordine di ricerca delle DLL per ridurre le opportunità di side-loading. Applicare controlli DNS/proxy per negare l’accesso al dominio C2 identificato e utilizzare ispezioni TLS laddove opportuno per identificare modelli anomali di beaconing HTTPS.

Risposta

Se viene rilevata un’attività sospetta, isolare l’host, catturare la memoria volatile e conservare la configurazione crittografata per un’analisi più approfondita. Analizzare l’ambiente per gli IOC estratti, rimuovere gli artefatti rilasciati ed eliminare la voce di persistenza HKCU Run dannosa. Ruotare le credenziali nell’ambito e cercare segni di movimento laterale coerenti con le tecniche degli operatori PlugX.

"graph TB %% Class definitions classDef technique fill:#ffcc99 classDef artifact fill:#ccffcc classDef process fill:#ccccff classDef registry fill:#ffe599 %% Accesso Iniziale initial_zip["<b>Artifact</b> – Archivio ZIP dannoso contenente .lnk"] class initial_zip artifact lnk_shortcut["<b>Artifact</b> – Collegamento (.lnk) con icona nascosta"] class lnk_shortcut artifact tech_lnk_smack["<b>Technique</b> – T1027.012 LNK Icon Smuggling<br/><b>Descrizione</b>: Utilizza l’icona LNK per nascondere il payload dannoso"] class tech_lnk_smack technique tech_user_exec["<b>Technique</b> – T1204.002 Esecuzione Utente: File dannoso<br/><b>Descrizione</b>: La vittima apre un file dannoso"] class tech_user_exec technique %% Esecuzione psh_stage["<b>Process</b> – Fase PowerShell eseguita da .lnk"] class psh_stage process tech_psh["<b>Technique</b> – T1059.001 PowerShell<br/><b>Descrizione</b>: Interprete di comandi e script"] class tech_psh technique tech_archive_custom["<b>Technique</b> – T1560.003 Archivio tramite Metodo Personalizzato<br/><b>Descrizione</b>: Legge ZIP come byte grezzi"] class tech_archive_custom technique extracted_exe["<b>Artifact</b> – Eseguibile dall’aspetto legittimou2011estratto"] class extracted_exe artifact malicious_dll["<b>Artifact</b> – Eraser.dll (dannoso)"] class malicious_dll artifact encrypted_dat["<b>Artifact</b> – Payload .dat crittografato"] class encrypted_dat artifact %% Persistenza run_key["<b>Registry</b> – HKCUSoftwareMicrosoftWindowsCurrentVersionRun entry"] class run_key registry tech_run_key["<b>Technique</b> – T1037.001 Script di Logon (Script di Inizializzazione Boot o Logon)<br/><b>Descrizione</b>: Persistenza chiave di esecuzione"] class tech_run_key technique shortcut_mod["<b>Technique</b> – T1547.009 Modifica Shortcut<br/><b>Descrizione</b>: Modifica i collegamenti per l’avvio automatico"] class shortcut_mod technique active_setup["<b>Technique</b> – T1547.014 Setup Attivo<br/><b>Descrizione</b>: Voce di registro per avvio automatico tramite Setup Attivo"] class active_setup technique psh_profile["<b>Technique</b> – T1546.013 Profilo PowerShell<br/><b>Descrizione</b>: Aggancia il profilo PowerShell per l’esecuzione"] class psh_profile technique %% Evasione Della Difesa tech_compress["<b>Technique</b> – T1027.015 Compressione<br/><b>Descrizione</b>: Comprimi il payload all’interno dello ZIP"] class tech_compress technique tech_dynamic_api["<b>Technique</b> – T1027.007 Risoluzione Dinamica delle API<br/><b>Descrizione</b>: Risolve le API in fase di runtime usando hash"] class tech_dynamic_api technique tech_embedded["<b>Technique</b> – T1027.009 Payload Incorporati<br/><b>Descrizione</b>: Incorpora payload crittografati"] class tech_embedded technique tech_deobfuscate["<b>Technique</b> – T1140 Deoffusca/Decodifica File o Informazioni<br/><b>Descrizione</b>: Decodifica RC4/XOR in fase di runtime"] class tech_deobfuscate technique tech_masquerade["<b>Technique</b> – T1036.008 Mascheramento: Mascheramento Tipo di File<br/><b>Descrizione</b>: Sovrapposizione PDF simulato"] class tech_masquerade technique %% Escalation Dei Privilegi / Esecuzione tech_reflective["<b>Technique</b> – T1620 Caricamento Riflettente Del Codice<br/><b>Descrizione</b>: Carica DLL in memoria senza toccare il disco"] class tech_reflective technique tech_injection["<b>Technique</b> – T1055.001 Iniezione Di Processi: Iniezione Di DLL<br/><b>Descrizione</b>: Inietta DLL via PEB walking e callback del poolu2011di fili"] class tech_injection technique %% Comando e Controllo c2_https["<b>Process</b> – Comunicazione HTTPS C2 (porta 443)"] class c2_https process tech_nonstd_port["<b>Technique</b> – T1571 Porta Nonu2011Standard<br/><b>Descrizione</b>: Usa una porta comune per confondere il traffico"] class tech_nonstd_port technique tech_dead_drop["<b>Technique</b> – T1102.001 Risolutore Di Depositi Morti<br/><b>Descrizione</b>: Recupera l’indirizzo del server dal servizio web"] class tech_dead_drop technique tech_proxy["<b>Technique</b> – T1090.002 Proxy: Proxy Esterno<br/><b>Descrizione</b>: Dirige il traffico attraverso un proxy esterno"] class tech_proxy technique %% Connessioni initial_zip –>|contiene| lnk_shortcut lnk_shortcut –>|utilizza| tech_lnk_smack lnk_shortcut –>|attiva| tech_user_exec tech_user_exec –>|porta a| psh_stage psh_stage –>|esegue| tech_psh psh_stage –>|legge| tech_archive_custom tech_archive_custom –>|estrae| extracted_exe tech_archive_custom –>|estrae| malicious_dll tech_archive_custom –>|estrae| encrypted_dat psh_stage –>|scrive| run_key run_key –>|implementa| tech_run_key psh_stage –>|crea| shortcut_mod psh_stage –>|crea| active_setup psh_stage –>|aggancia| psh_profile psh_stage –>|applica| tech_compress psh_stage –>|applica| tech_dynamic_api psh_stage –>|applica| tech_embedded psh_stage –>|applica| tech_deobfuscate psh_stage –>|applica| tech_masquerade malicious_dll –>|agisce come| tech_reflective malicious_dll –>|esegue| tech_injection tech_injection –>|abilita| c2_https c2_https –>|utilizza| tech_nonstd_port c2_https –>|utilizza| tech_dead_drop c2_https –>|potrebbe dirigere attraverso| tech_proxy %% Assegnazioni delle Classi 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 "

Flusso dell’Attacco

Esecuzione di Simulazione

Prerequisito: Il Controllo Pre-volo di Telemetria & Baseline deve essere superato.

Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e il racconto riflettono direttamente i TTP identificati e mirano a generare la telemetria esatta prevista dalla logica di rilevamento.

  • Narrativa dell’Attacco & Comandi:
    Un attaccante ha conquistato un punto d’appoggio su una workstation compromessa e vuole predisporre payload dannosi restando invisibile all’utente. Lancia PowerShell in modalità nascosta (-w hidden) per evitare popup dell’interfaccia utente. All’interno della stessa sessione PowerShell usa l’utility integrata tar disponibile su build Windows moderne) per estrarre un archivio decoy che contiene i payload del prossimo stadio direttamente in %LocalAppData%, una posizione scrivibile spesso trascurata dalle difese.

    Passi:

    1. Crea un piccolo archivio tar (payloads.tar) contenente un file dummy benigno (che simula il payload dannoso).
    2. Memorizza l’archivio in una posizione temporanea (C:Temp).
    3. Esegui una finestra PowerShell nascosta che esegue il tar comando di estrazione puntando a %LocalAppData%.
  • Script di Test di Regressione:

    # ---------------------------------------------------------
    # Step 1 – Prepara un archivio tar di esempio (simula payload)
    # ---------------------------------------------------------
    $tempDir   = "C:Temp"
    $archive   = "$tempDirpayloads.tar"
    $payload   = "$tempDirdummy.txt"
    $destDir   = "$Env:LocalAppDataStagedPayloads"
    
    # Assicura l'esistenza della cartella temporanea
    New-Item -ItemType Directory -Path $tempDir -Force | Out-Null
    
    # Crea un file dummy da archiviare
    "This is a dummy payload file." | Set-Content -Path $payload -Encoding UTF8
    
    # Crea l'archivio tar (richiede il tar di Windows)
    tar -cf $archive -C $tempDir dummy.txt
    
    # ---------------------------------------------------------
    # Step 2 – Esegui PowerShell nascosta che estrae l'archivio
    # ---------------------------------------------------------
    $extractCmd = "tar -xvf `"$archive`" -C `"$Env:LocalAppData`""
    $psArgs     = "-NoProfile -WindowStyle Hidden -Command `$extractCmd"
    
    Start-Process -FilePath "powershell.exe" -ArgumentList $psArgs -WindowStyle Hidden
    
    # ---------------------------------------------------------
    # Step 3 – Opzionale: Verifica l'estrazione (per valida manuale)
    # ---------------------------------------------------------
    Write-Host "Estrazione completata. I file dovrebbero ora esistere in $Env:LocalAppData"
  • Comandi di Pulizia:

    # Rimuovi i file temporanei e payload predisposti
    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
    # Rimuovere facoltativamente l'intera cartella di staging se creata
    Remove-Item -Path "$Env:LocalAppDataStagedPayloads" -Recurse -Force -ErrorAction SilentlyContinue