SOC Prime Bias: Alto

24 Jun 2026 19:37 UTC

Scoperta Variante di PureRAT nel Lettore Video AI

Author Photo
SOC Prime Team linkedin icon Segui
Scoperta Variante di PureRAT nel Lettore Video AI
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Riepilogo

Una campagna malware sta utilizzando un falso downloader video a tema Google Drive per avviare una catena di esecuzione a più stadi. L’infezione si sposta da un loader basato su Python a shellcode e quindi a un’assembly .NET protetta identificata come PureRAT. Il malware si avvale di una pesante offuscazione, crittografia personalizzata e comunicazioni WebSocket autenticate per gestire il traffico di comando e controllo.

Indagine

L’indagine ha analizzato un flusso di esecuzione a fasi che ha avuto inizio con un loader di bytecode Python. I ricercatori hanno osservato la decodifica Base85, zlib decompressione e iniezione di shellcode tramite VirtualAlloc. Un’ulteriore analisi ha scoperto un loader .NET fortemente protetto, Ykzrh/smveo-csharp-agent.exe, che utilizzava virtualizzazione e ricostruzione runtime per ostacolare l’analisi.

Mitigazione

Gli utenti devono essere avvisati di non scaricare file da esche video non ufficiali o sospette. Le organizzazioni dovrebbero monitorare l’esecuzione non autorizzata di Python e il comportamento insolito delle assembly .NET nelle directory dei dati delle applicazioni locali. Applicare liste di attesa forti e monitorare i cambiamenti sospetti della chiave Run possono anche ridurre il rischio di compromesso.

Risposta

Se viene rilevata questa attività, isolare immediatamente gli endpoint compromessi per interrompere il traffico di comando e controllo basato su WebSocket. Gli investigatori dovrebbero eseguire un’analisi della memoria per catturare il payload .NET decriptato e determinare l’entità dell’infezione. Anche i log di rete dovrebbero essere controllati per connessioni a smveo.com infrastruttura, e tutte le credenziali potenzialmente esposte dovrebbero essere ruotate.

graph TB %% Class Definitions Section classDef action fill:#99ccff classDef malware fill:#ff9999 classDef persistence fill:#99ff99 classDef obfuscation fill:#ffff99 classDef tool fill:#cccccc %% Node definitions act_user_exec[“<b>Azione</b> – <b>Esecuzione Utente T1204</b><br/>La vittima interagisce con un’esca<br/>mascherata come un falso Google Drive<br/>o un download di video SMVEO.”] class act_user_exec action act_drive_by[“<b>Azione</b> – <b>Compromissione Drive-by T1189</b><br/>L’utente scarica un file maligno:<br/>DriveVideoSetup-x64-0.1.0.exe.”] class act_drive_by action mal_setup[“<b>Malware</b> – <b>Eseguibile Iniziale</b><br/>File: DriveVideoSetup-x64-0.1.0.exe<br/>Stabilisce la persistenza e<br/>avvia la catena di deoffuscazione.”] class mal_setup malware per_registry[“<b>Azione</b> – <b>Persistenza T1547.014</b><br/>Modifica la chiave del registro:<br/>HKCUSoftwareMicrosoftWindowsCurrentVersionRun”] class per_registry persistence act_deobf[“<b>Azione</b> – <b>Deoffuscazione/Decodifica File T1140</b><br/>Complesse fasi Python che coinvolgono<br/>la decodifica Base85, la decompressione zlib,<br/>e marshal.loads.”] class act_deobf obfuscation tool_donut[“<b>Strumento</b> – <b>DonutLoader</b><br/>Meccanismo utilizzato per eseguire<br/>shellcode in memoria.”] class tool_donut tool mal_ykzrh[“<b>Malware</b> – <b>Ykzrh.exe</b><br/>Caricatore .NET altamente protetto<br/>che utilizza la virtualizzazione.”] class mal_ykzrh malware act_packing[“<b>Azione</b> – <b>Impacchettamento Software T1027.002</b><br/>Utilizza interpreti di bytecode personalizzati<br/>e virtualizzazione per nascondere la logica di base.”] class act_packing obfuscation mal_purerat[“<b>Malware</b> – <b>PureRAT</b><br/>Funzionalità core dell’attacco<br/>nascosta tramite offuscazione.”] class mal_purerat malware act_cert_steal[“<b>Azione</b> – <b>Rubare o Forgiare Certificati di Autenticazione T1649</b><br/>Genera client.crt e client.key<br/>sotto %LOCALAPPDATA%SMVEO.”] class act_cert_steal action comm_c2[“<b>Azione</b> – <b>Comunicazione C2</b><br/>Comunicazione WebSocket autenticata<br/>ad agent.sm-veo.com.”] class comm_c2 action %% Connections act_user_exec –>|leads_to| act_drive_by act_drive_by –>|executes| mal_setup mal_setup –>|performs| per_registry mal_setup –>|initiates| act_deobf act_deobf –>|leads_to| tool_donut tool_donut –>|deploys| mal_ykzrh mal_ykzrh –>|utilizes| act_packing act_packing –>|hides| mal_purerat mal_purerat –>|performs| act_cert_steal act_cert_steal –>|facilitates| comm_c2

Flusso di Attacco

Esecuzione della Simulazione

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

Motivazione: Questa sezione dettaglia l’esecuzione precisa della tecnica avversaria (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrativa DEVONO riflettere direttamente i TTP identificati e mirano a generare la telemetria esatta attesa dalla logica di rilevamento. Esempi astratti o non correlati porteranno a un’errata diagnosi.

  • Narrativa dell’Attacco & Comandi: L’avversario ha distribuito con successo una variante di PureRAT. Per mantenere il controllo, il malware stabilisce un canale di Comando e Controllo (C2) persistente. Anziché il polling HTTP standard, utilizza una connessione WebSocket autenticata per aggirare i proxy web tradizionali che potrebbero non ispezionare i flussi WebSocket a lunga durata. L’obiettivo dell’attaccante è stabilire un tunnel stabile e a bassa latenza verso agent.sm-veo.com sulla porta 8443. Questa simulazione utilizzerà uno script PowerShell per imitare questo comportamento di rete avviando una connessione all’URI dannoso.

  • Script di Test di Regressione:

    # Simulazione di PureRAT Variante C2 tramite WebSocket
    # Obiettivo: Attivare la regola di rilevamento tramite dominio o URL di destinazione.
    
    $targetUrl = "wss://agent.sm-veo.com:8443/v1/ws"
    $targetDomain = "agent.sm-veo.com"
    
    Write-Host "[+] Avvio Simulazione C2 PureRAT..." -ForegroundColor Cyan
    
    try {
        Write-Host "[+] Tentativo di stabilire una connessione WebSocket a $targetUrl"
        # Utilizzando un client WebSocket .NET per simulare il comportamento specifico del protocollo
        $ws = New-Object System.Net.WebSockets.ClientWebSocket
        $uri = New-Object System.Uri($targetUrl)
        $ct = New-Object System.Threading.CancellationTokenSource
    
        # Non è necessario un handshake riuscito per attivare la telemetria di rete,
        # solo il tentativo di connettersi alla destinazione specificata.
        $task = $ws.ConnectAsync($uri, $ct.Token)
    
        # Attendiamo brevemente affinché il tentativo di connessione generi telemetria
        Start-Sleep -Seconds 5
        Write-Host "[!] Tentativo di connessione completato. Controllare SIEM per la telemetria." -ForegroundColor Green
    }
    catch {
        Write-Host "[!] Connessione fallita (previsto se il dominio è sottoposto a sinkhole/non reale), ma la telemetria dovrebbe essere stata generata." -ForegroundColor Yellow
    }
    finally {
        if ($ws) { $ws.Dispose() }
    }
  • Comandi di Pulizia:

    # Nessun file o chiave di registro persistenti è stato modificato da questo specifico script di simulazione.
    # Se la persistenza (T1547.001) è stata simulata, utilizzare il seguente:
    # Remove-ItemProperty -Path 'HKCU:SoftwareMicrosoftWindowsCurrentVersionRun' -Name 'PureRAT_Update'
    Write-Host "[+] Pulizia completata. Nessun residuo lasciato dalla simulazione di rete." -ForegroundColor Cyan