SOC Prime Bias: Alto

17 Jun 2026 12:58 UTC

Come un File VHDX Distribuisce Remcos RAT

Author Photo
SOC Prime Team linkedin icon Segui
Come un File VHDX Distribuisce Remcos RAT
shield icon

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

## 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 con backgroundTaskHost.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