Approfondimento sulla Nuova Campagna XWorm che Utilizza Email di Phishing a Tema Multiplo
Detection stack
- AIDR
- Alert
- ETL
- Query
Riepilogo
FortiGuard Labs ha osservato una campagna di phishing multistadio che distribuisce il trojan di accesso remoto XWorm attraverso allegati Excel maligni. Il documento sfrutta CVE-2018-0802 nell’Editor di Equazioni di Microsoft per recuperare un file HTA, che poi attiva un caricatore .NET senza file che utilizza il process hollowing per iniettare XWorm in un nuovo processo Msbuild.exe generato. Il RAT comunica con il suo C2 utilizzando traffico crittografato AES ed espone un ampio set di comandi con supporto plugin per un controllo esteso. La campagna mostra un uso sofisticato di binari living-off-the-land e tecniche senza file per ottenere un controllo remoto persistente su endpoint compromessi.
Indagine
Gli analisti hanno ricostruito il flusso dall’email di phishing allo sfruttamento dell’OLE di Excel, esecuzione HTA, download del modulo .NET basato su PowerShell e il finale process hollowing in Msbuild.exe. La revisione statica e dinamica ha evidenziato dati payload codificati Base64 nascosti in un’immagine JPEG, con il componente finale XWorm caricato in memoria senza scrivere un eseguibile decrittografato su disco durante l’esecuzione. Le catture di rete hanno mostrato pacchetti crittografati AES inviati al dominio C2 berlin101.com sulla porta 6000. Il rapporto ha anche catalogato l’esteso set di comandi e architettura dei plugin di XWorm.
Mitigazione
FortiGuard raccomanda di abilitare le protezioni macro e OLE, applicare la patch per CVE-2018-0802 e limitare l’esecuzione di file Msbuild, PowerShell e HTA provenienti da contenuti email. Implementare filtri web, controlli anti-phishing e firme IDS/IPS legate agli indicatori osservati per bloccare la consegna e lo staging al gateway. Monitorare per alberi dei processi anomali—specialmente Msbuild.exe lanciato da PowerShell—per identificare l’esploit rapidamente.
Risposta
Alla rilevazione, isolare l’endpoint colpito, terminare i processi maligni ed espellere il modulo XWorm caricato dalla memoria. Raccogliere artefatti forensi inclusi telemetria della riga di comando, log di rete e modifiche al registro per delineare l’intrusione. Reimpostare eventuali credenziali compromesse, aggiornare il componente vulnerabile Editor di Equazioni e bloccare i domini maligni e il server C2. Applicare aggiornamenti dell’intelligenza sulle minacce alle rilevazioni EDR/SIEM per prevenire la ricorrenza e cercare attivitĂ correlate nell’ambiente.
graph TB %% Definizione classi classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% Nodi Azione action_phishing[“<b>Azione</b> – T1566.001<br/><b>Nome</b>: Allegato Spearphishing<br/><b>Descrizione</b>: Excel .xlam dannoso inviato via email”] class action_phishing action action_user_exec[“<b>Azione</b> – T1204.002<br/><b>Nome</b>: Esecuzione Utente<br/><b>Descrizione</b>: La vittima apre il file Excel allegato”] class action_user_exec action exploit_eqnedt[“<b>Azione</b> – T1203<br/><b>Nome</b>: Sfruttamento per Esecuzione Client (CVEu20112018u20110802)<br/><b>Descrizione</b>: VulnerabilitĂ Equation Editor consente esecuzione shellcode”] class exploit_eqnedt action defense_evasion[“<b>Azione</b> – T1211<br/><b>Nome</b>: Sfruttamento per Evasione Difese<br/><b>Descrizione</b>: La vulnerabilitĂ bypassa le difese tradizionali”] class defense_evasion action action_powershell[“<b>Azione</b> – T1059.001<br/><b>Nome</b>: Esecuzione PowerShell<br/><b>Descrizione</b>: Decodifica Base64, scarica JPEG con modulo .NET nascosto, esegue JScript”] class action_powershell action action_reflective_load[“<b>Azione</b> – T1620<br/><b>Nome</b>: Caricamento Riflessivo del Codice<br/><b>Descrizione</b>: Carica assembly .NET direttamente in memoria”] class action_reflective_load action action_process_hollowing[“<b>Azione</b> – T1055.012<br/><b>Nome</b>: Process Hollowing<br/><b>Descrizione</b>: Inietta XWorm RAT in processo Msbuild sospeso”] class action_process_hollowing action module_shared[“<b>Azione</b> – T1129<br/><b>Nome</b>: Moduli Condivisi<br/><b>Descrizione</b>: Plugin .NET caricati su richiesta”] class module_shared action persistence_active_setup[“<b>Azione</b> – T1547.014<br/><b>Nome</b>: Persistenza Active Setup<br/><b>Descrizione</b>: Memorizza binari plugin nella chiave di registro HKCU”] class persistence_active_setup action action_query_registry[“<b>Azione</b> – T1012<br/><b>Nome</b>: Interrogazione Registro<br/><b>Descrizione</b>: Legge dati e configurazioni plugin”] class action_query_registry action encryption_aes[“<b>Azione</b> – T1001<br/><b>Nome</b>: Offuscamento Dati<br/><b>Descrizione</b>: AES cripta tutto il traffico C2”] class encryption_aes action c2_https[“<b>Azione</b> – T1102.003<br/><b>Nome</b>: Comunicazione Web Unidirezionale<br/><b>Descrizione</b>: HTTPS cifrato verso berlin101.com:6000”] class c2_https action %% Nodi Strumento tool_excel_xlam[“<b>Strumento</b> – Allegato Excel .xlam”] class tool_excel_xlam tool tool_mshta[“<b>Strumento</b> – mshta.exe”] class tool_mshta tool tool_powershell[“<b>Strumento</b> – PowerShell”] class tool_powershell tool tool_msbuild[“<b>Strumento</b> – Msbuild.exe”] class tool_msbuild tool %% Nodi Malware malware_dotnet_module[“<b>Malware</b> – Modulo .NET Nascosto”] class malware_dotnet_module malware malware_xworm[“<b>Malware</b> – XWorm RAT”] class malware_xworm malware %% Nodi Processo process_shellcode[“<b>Processo</b> – Esecuzione Shellcode”] class process_shellcode process proc_mshta[“<b>Processo</b> – Processo mshta”] class proc_mshta process proc_msbuild[“<b>Processo</b> – Processo Msbuild (sospeso)”] class proc_msbuild process %% Connessioni action_phishing –>|consegna allegato| tool_excel_xlam tool_excel_xlam –>|aperto dalla vittima| action_user_exec action_user_exec –>|attiva| exploit_eqnedt exploit_eqnedt –>|abilita| defense_evasion defense_evasion –>|esegue| process_shellcode process_shellcode –>|avvia| proc_mshta proc_mshta –>|esegue| tool_mshta tool_mshta –>|scarica ed esegue| action_powershell action_powershell –>|carica| malware_dotnet_module malware_dotnet_module –>|host in memoria da| action_reflective_load action_reflective_load –>|hosta payload in| proc_msbuild proc_msbuild –>|avviato da| tool_msbuild tool_msbuild –>|hosta payload tramite| action_process_hollowing action_process_hollowing –>|inietta| malware_xworm malware_xworm –>|usa| module_shared module_shared –>|memorizza plugin tramite| persistence_active_setup persistence_active_setup –>|legge config da| action_query_registry action_query_registry –>|critta traffico con| encryption_aes encryption_aes –>|invia a| c2_https
Flusso di Attacco
Rilevamenti
Stringhe sospette di PowerShell (via powershell)
Visualizza
Comportamento sospetto di difesa evasione LOLBAS MSHTA rilevato tramite comandi associati (via process_creation)
Visualizza
Stringhe sospette di PowerShell (via cmdline)
Visualizza
Chiama metodi .NET sospetti da PowerShell (via powershell)
Visualizza
IOCs (HashSha256) da rilevare: Analisi approfondita della nuova campagna XWorm che utilizza email di phishing a tema multiplo
Visualizza
Campagna XWorm che sfrutta CVE-2018-0802 con molti vettori di attacco [Creazione processo Windows]
Visualizza
Rileva payload PowerShell codificato in Base64 nella campagna XWorm [Windows Powershell]
Visualizza
Esecuzione della Simulazione
Prerequisito: Il Check Pre-volo della Telemetria e del Baseline deve essere passato.
Motivazione: Questa sezione descrive l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente i TTP identificati e mirare a generare la telemetria esatta attesa dalla logica di rilevamento.
-
Narrazione & Comandi dell’Attacco:
- Drop Iniziale: L’attaccante consegna un file Excel maligno che sfrutta CVE‑2018‑0802. Per la simulazione bypassiamo l’exploit e lanciamo direttamente il payload.
- Process Hollowing tramite EQNEDT32.EXE: Avvio
EQNEDT32.EXEcon una riga di comando che invocaShellExecuteExW()per mascherarsi come un componente legittimo di Office. - Esecuzione Laterale Msbuild.exe: Genera
Msbuild.execonCreateProcessA()per compilare un payload .NET furtivo al volo. - Esecuzione .NET senza file: Use
powershell.execon un comando codificato base64 che carica un’assembly .NET riflettente (T1620). La riga di comando contiene la stringa letteraleCreateProcessA()per soddisfare la regola.
-
Script di Test di Regressione:
<# Simula la catena di esecuzione XWorm: 1. EQNEDT32.exe con ShellExecuteExW() 2. Msbuild.exe con CreateProcessA() 3. PowerShell con caricatore riflettente .NET contenente CreateProcessA() #> # 1. EQNEDT32.exe (Process Hollowing) $eqnPath = "$env:SystemRootSystem32EQNEDT32.EXE" $eqnArgs = "-Command "ShellExecuteExW()"" Start-Process -FilePath $eqnPath -ArgumentList $eqnArgs -WindowStyle Hidden # 2. Msbuild.exe (Iniezione DLL Dinamica) $msbuildPath = "$env:ProgramFilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinMsbuild.exe" $msbuildArgs = "/t:Compile /p:UseShellExecute="CreateProcessA()"" Start-Process -FilePath $msbuildPath -ArgumentList $msbuildArgs -WindowStyle Hidden # 3. PowerShell (caricamento riflettente .NET senza file) # Esempio di payload .NET (segnaposto) codificato in base64 $payload = "W3siQmFzZURhdGEiOiAiIiB9XQ==" # base64 dummy $psArgs = "-EncodedCommand $payload -ArgumentList "CreateProcessA()"" Start-Process -FilePath "powershell.exe" -ArgumentList $psArgs -WindowStyle Hidden Write-Host "Simulazione XWorm completata." -
Comandi di Pulizia:
# Termina eventuali processi di simulazione in sospeso Get-Process -Name "EQNEDT32","Msbuild","powershell" -ErrorAction SilentlyContinue | Stop-Process -Force # Rimuovere opzionalmente i file temporanei (nessun creato in questa simulazione puramente di processi) Write-Host "Pulizia completata."