Scoperta Variante di PureRAT nel Lettore Video AI
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
Rilevamenti
Punti di Possibile Persistenza [ASEPs – Hive Software/NTUSER] (via registry_event)
Visualizza
Comunicazione PureRAT Variante C2 tramite WebSocket Autenticato [Connessione Rete Windows]
Visualizza
Persistenza tramite Windows Registry Run Key [Evento Registro di Windows]
Visualizza
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.comsulla porta8443. 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