Come un File VHDX Distribuisce Remcos RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
Una campagna malware multi-stadio utilizza un archivio ZIP armato contenente un’immagine disco VHDX per eludere i controlli di sicurezza comuni. Dopo il montaggio del VHDX, un file JavaScript offuscato viene eseguito e lancia una serie di stadi PowerShell tramite WMI. Il payload finale è Remcos RAT, che viene iniettato in un processo Windows legittimo per nascondere la sua esecuzione.
Investigazione
Il ricercatore ha esaminato un archivio ZIP malevolo e il contenitore VHDX integrato per ricostruire l’intero flusso dell’attacco. L’analisi ha rivelato una catena di esecuzione complessa che utilizzava la creazione di processi basata su WMI per mascherare le relazioni padre-figlio, insieme all’offuscare delle stringhe con XOR e Base64 e un loader .NET riflettente. Il percorso di infezione è stato tracciato con successo dall’esecuzione iniziale di JavaScript fino al dispiegamento del payload finale Remcos.
Mitigazione
Le organizzazioni dovrebbero applicare controlli rigorosi per prevenire il montaggio di immagini disco VHDX da fonti non attendibili. Gli strumenti di sicurezza dovrebbero anche monitorare le attività sospette Win32_Process.Create inviate da motori di script come JavaScript o PowerShell. Bloccare domini noti come malevoli e controllare per la persistenza insolita delle chiavi Run nel registro può ulteriormente ridurre il rischio.
Risposta
Se viene rilevata questa attività, isolare immediatamente l’endpoint interessato per interrompere la comunicazione di comando e controllo. Acquisire un dump della memoria per catturare il payload iniettato di Remcos e il loader .NET riflettente. Una revisione forense completa dovrebbe quindi cercare voci di chiavi Run malevole, file VHDX aggiuntivi e attività sospette di PowerShell altrove nell’ambiente.
graph TB %% Definizione delle classi classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef connection fill:#f9f9f9 %% Accesso iniziale ed esecuzione action_phishing[“<b>Azione</b> – <b>T1566.001 Phishing: Allegato Spearphishing</b><br/>Descrizione: Archivio ZIP dannoso<br/>distribuito tramite e-mail.”] class action_phishing action action_user_exec[“<b>Azione</b> – <b>T1204.002 Esecuzione utente: File dannoso</b><br/>Descrizione: L’utente esegue<br/>il file ZIP dannoso.”] class action_user_exec action tool_vhdx[“<b>Strumento</b> – <b>Nome</b>: File VHDX<br/>Descrizione: Contenitore malware utilizzato per nascondere<br/>il payload tramite Escape to Host T1611.”] class tool_vhdx tool %% Offuscamento e scripting file_js[“<b>File</b>: Partnerschaft_fur_neue_Angebotsanfrage.js<br/><b>Descrizione</b>: File JavaScript dannoso che utilizza<br/>l’offuscamento dei comandi T1027.010 tramite<br/>inquinamento delle stringhe e decrittazione XOR.”] class file_js tool action_wmi[“<b>Azione</b>: PowerShell tramite WMI<br/><b>Descrizione</b>: Avvia uno script PowerShell utilizzando WMI<br/>per eludere il monitoraggio delle relazioni tra processi.”] class action_wmi action %% Trasferimento ingresso e fasi malware action_ingress_1[“<b>Azione</b> – <b>T1105 Trasferimento di strumenti in ingresso</b><br/><b>Descrizione</b>: Lo script PowerShell scarica<br/>il file della seconda fase.”] class action_ingress_1 action file_dsp[“<b>File</b>: Exoticisms121.dsp<br/><b>Descrizione</b>: File della seconda fase<br/>memorizzato in %APPDATA%.”] class file_dsp tool tool_loader[“<b>Strumento</b>: Reflective .NET Loader<br/><b>Descrizione</b>: Esegue shellcode<br/>dal file della seconda fase.”] class tool_loader tool action_ingress_2[“<b>Azione</b> – <b>T1105 Trasferimento di strumenti in ingresso</b><br/><b>Descrizione</b>: Lo shellcode recupera<br/>il payload finale Remcos RAT.”] class action_ingress_2 action malware_remcos[“<b>Malware</b>: Remcos RAT<br/>Descrizione: Payload finale predisposto<br/>per la comunicazione Command and Control TA0011.”] class malware_remcos malware %% Processo e C2 process_bg_task[“<b>Processo</b>: backgroundTaskHost.exe<br/>Descrizione: Processo bersaglio<br/>per l’iniezione del malware.”] class process_bg_task process c2_server[“<b>Server C2</b>: animal342.duckdns.org:53562<br/>Descrizione: Server remoto utilizzato<br/>per la comunicazione Command and Control.”] class c2_server tool %% Persistenza action_persistence[“<b>Azione</b> – <b>T1547.001 Esecuzione automatica all’avvio o accesso: Chiavi Run del Registro / Cartella Startup</b><br/><b>Descrizione</b>: Utilizza cmd.exe per creare chiavi<br/>di avvio automatico del Registro per il loader PowerShell.”] class action_persistence action %% Connessioni action_phishing –>|porta_a| action_user_exec action_user_exec –>|rivela| tool_vhdx tool_vhdx –>|contiene| file_js file_js –>|esegue_tramite_WMI| action_wmi action_wmi –>|esegue| action_ingress_1 action_ingress_1 –>|scarica| file_dsp file_dsp –>|elaborato_da| tool_loader tool_loader –>|esegue| action_ingress_2 action_ingress_2 –>|recupera| malware_remcos malware_remcos –>|inietta_in| process_bg_task malware_remcos –>|comunica_con| c2_server malware_remcos –>|garantisce| action_persistence
Flusso di attacco
Rilevamenti
Punti di Persistenza Possibili [ASEPs – Software/NTUSER Hive] (tramite registry_event)
Visualizza
Punti di Persistenza Possibili [ASEPs – Software/NTUSER Hive] (tramite cmdline)
Visualizza
LOLBAS WScript / CScript (tramite process_creation)
Visualizza
File di Disco Rigido Virtuale è stato Creato (tramite file_event)
Visualizza
Possibile Servizio DNS Dinamico è Stato Contattato (tramite dns)
Visualizza
Rilevamento di Iniezione di Processo e Loader Riflettente PowerShell .Net [Creazione Processo Windows]
Visualizza
Esecuzione di Script PowerShell tramite WMI per Evasione EDR [Windows Powershell]
Visualizza
## Esecuzione della Simulazione
Prerequisito: Il Controllo Pre-lancio di Telemetria e Baseline deve essere passato.
Razionale: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e il racconto DEVONO riflettere direttamente le TTP identificate e mirare a generare l’esatta telemetria attesa dalla logica di rilevamento. Esempi astratti o non correlati porteranno a diagnosi errate.
-
Narrativa dell’attacco & Comandi: L’avversario mira a eseguire un payload malevolo in memoria per evitare il rilevamento da parte dell’AV tradizionale. Utilizzano uno script PowerShell che sfrutta
[System.Reflection.Assembly]::Load()per recuperare una DLL .NET compilata direttamente da un array di byte nel processo attuale. Per mantenere la persistenza e sfuggire al controllo, tentano di avviare o interagire conbackgroundTaskHost.exe, un processo Windows legittimo, per nascondere il loro thread di esecuzione all’interno di un’attività di sistema standard. -
Script di Test di Regressione:
# Script di simulazione: Caricamento riflettente .NET e interazione con processo # Questo script imita la logica catturata dalla regola di rilevamento. # 1. Crea un array di byte fittizio rappresentante un'Assembly .NET (altamente semplificata per simulazione) $assemblyBytes = [byte[]](0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00) # Mimica intestazione MZ Write-Host "[+] Tentativo di caricamento Assembly .NET riflettente..." -ForegroundColor Cyan try { # Questa stringa specifica è un obiettivo per la regola di rilevamento $assembly = [System.Reflection.Assembly]::Load($assemblyBytes) Write-Host "[!] Successo: Assembly caricato in memoria (solo simulazione)." -ForegroundColor Green } catch { Write-Host "[-] Caricamento Assembly fallito (atteso a causa di byte fittizi non validi), ma il comando è stato inviato." -ForegroundColor Yellow } Write-Host "[+] Tentativo di invocare backgroundTaskHost.exe per attivare il rilevamento..." -ForegroundColor Cyan # Questa stringa specifica è un obiettivo per la regola di rilevamento Start-Process "C:WindowsSystem32backgroundTaskHost.exe" -ArgumentList "/test-detection" -
Comandi di Pulizia:
# Pulizia: Termina il processo backgroundTaskHost avviato Stop-Process -Name "backgroundTaskHost" -ErrorAction SilentlyContinue Write-Host "[+] Pulizia completata. BackgroundTaskHost terminato." -ForegroundColor Green