RUSTGate: un’esca di sciami di droni punta a un potenziale targeting del settore della difesa
Detection stack
- AIDR
- Alert
- ETL
- Query
Riassunto
Un nuovo Trojan di Accesso Remoto (RAT) basato su Rust, chiamato RUSTGate, utilizza un tema di ricerca sui droni-sciame come esca di ingegneria sociale. Il malware segue una catena di infezione a più stadi che coinvolge file LNK malevoli, downloader batch e attività programmate per distribuire l’impianto finale. Una volta attivo, RUSTGate si concentra su un ampio furto di file ed esfiltrazione attraverso comunicazioni C2 HTTP crittografate.
Indagine
L’indagine si è concentrata su un server di staging scoperto tramite Hunt.io che ha esposto l’intera catena di infezione. I ricercatori hanno interagito con il protocollo C2 utilizzando richieste sintetiche e hanno identificato l’AES-256-GCM per l’offuscamento dei messaggi insieme a un backend basato su Python Flask. L’analisi ha inoltre rivelato la logica di furto focalizzata sui file di RUSTGate e le routine automatizzate di raccolta dati.
Mitigazione
I difensori dovrebbero dare priorità al monitoraggio dei file LNK sospetti che utilizzano rundll32.exe per lanciare shell di comando. Controlli rigorosi sui download nelle directory Temp e il monitoraggio della creazione di attività programmate non autorizzate sono anche importanti. La segmentazione della rete e il rilevamento del traffico HTTP in uscita verso indirizzi IP insoliti su porte non standard possono ulteriormente interrompere l’attività C2.
Risposta
Se viene rilevata un’attività di RUSTGate, i responsabili delle risposte dovrebbero isolare immediatamente l’host interessato e preservare il file upload_state.json per determinare quali dati possono essere stati compromessi. Dovrebbero essere raccolte catture complete di pacchetti del traffico verso IP C2 identificati per la decrittazione retrospettiva. I sistemi dovrebbero anche essere controllati per l’attività programmata NetworkDiagnostics e file residui in C:WindowsTemp.
Flusso di Attacco
Stiamo ancora aggiornando questa parte.
Rilevamenti
Possibile File LNK Malevolo con Doppia Estensione (tramite cmdline)
Uso Sospetto di CURL (tramite cmdline)
Download di File Sospetto Diretto su IP (tramite proxy)
IOC (HashSha256) da rilevare: RUSTGate: Un’esca con Droni-Sciame indica un potenziale targeting nel Settore della Difesa
IOC (SourceIP) da rilevare: RUSTGate: Un’esca con Droni-Sciame indica un potenziale targeting nel Settore della Difesa
IOC (DestinationIP) da rilevare: RUSTGate: Un’esca con Droni-Sciame indica un potenziale targeting nel Settore della Difesa
Rilevamento della Comunicazione di Comando e Controllo RUSTGate [Connessione di Rete Windows]
Rilevamento delle Attività dell’Impianto RUSTGate [Evento File Windows]
Rilevamento dell’Esecuzione di Comandi RUSTGate tramite Rundll32, Cmd, Curl e PowerShell [Creazione di Processo Windows]
Esecuzione della Simulazione
-
Narrativa & Comandi dell’Attacco: L’avversario ha stabilito con successo un punto d’appoggio sulla workstation Windows. Per mantenere il controllo e ricevere ulteriori istruzioni, il malware RUSTGate deve eseguire un “heartbeat” o “check-in” con il suo server di Comando e Controllo (C2). Il malware è programmato per connettersi all’IP codificato
5.252.177.210sulla porta8090. Per differenziare il suo traffico dalla normale navigazione web, appende un percorso URI specifico, come/register, alla richiesta. Questa simulazione utilizza PowerShell per imitare esattamente questa stretta di mano di rete per convalidare se la logica di rilevamento del SOC si attiva su questo specifico pattern C2. -
Script di Test di Regressione:
# Script di Simulazione di Check-in C2 RUSTGate # Questo script imita la firma di rete di RUSTGate per convalidare il rilevamento. $TargetIP = "5.252.177.210" $TargetPort = "8090" $TargetURI = "/register" $Url = "http://$($TargetIP):$($TargetPort)$($TargetURI)" Write-Host "[*] Simulazione della comunicazione C2 di RUSTGate a $Url" -ForegroundColor Cyan try { # Utilizzo di Invoke-WebRequest per generare la telemetria specifica di URI e Porta $Response = Invoke-WebRequest -Uri $Url -Method Get -ErrorAction SilentlyContinue Write-Host "[+] Richiesta inviata con successo (errore di connessione previsto se l'IP è inattivo)." -ForegroundColor Green } catch { Write-Host "[!] Richiesta completata (come previsto per un endpoint C2 inesistente)." -ForegroundColor Yellow } -
Comandi per la Pulizia:
# Nessun artefatto persistente è creato da questa simulazione. # Semplicemente confermare la terminazione del processo. Write-Host "[*] Simulazione completata. Nessuna pulizia richiesta." -ForegroundColor White