BlackToad Utilizza la Manipolazione di Rete in un Payload AutoIt
Detection stack
- AIDR
- Alert
- ETL
- Query
Sommario
JUMPSEC ha scoperto una campagna di phishing che distribuisce un payload Remcos RAT nascosto all’interno di un crypter AutoIt personalizzato. La catena d’infezione utilizza uno script VBS per eseguire ipconfig /release seguito da ipconfig /renew, interrompendo brevemente la connettività di rete come metodo per eludere il rilevamento. I ricercatori hanno collegato la campagna all’ecosistema e-crime nigeriano, con infrastrutture che si basano su domini DNS dinamici ospitati dietro connessioni ISP mobile.
Indagine
L’indagine ha seguito l’email malevola, decomprimendo l’archivio autoestraente WinRAR e identificando un loader VBS che avviava un interprete AutoIt camuffato. Lo script AutoIt ha successivamente decriptato ed eseguito l’impianto Remcos, mentre la configurazione recuperata ha esposto i domini di comando e controllo, il valore del mutex e una chiave Run di persistenza. I ricercatori hanno mappato l’infrastruttura di supporto a tre domini DNS dinamici e un set rotante di indirizzi IP nigeriani.
Mitigazione
Le organizzazioni dovrebbero bloccare i domini DNS dinamici identificati e gli intervalli di IP associati, monitorare la sequenza sospetta ipconfig /release and ipconfig /renew e rilevare script AutoIt o VBS che generano cmd.exe. Si dovrebbero anche applicare controlli d’esecuzione rigorosi ai file con doppi estensioni fuorvianti, mentre voci di registro Run come WindowsUpdate dovrebbero essere monitorate per abusi.
Risposta
Se quest’attività viene rilevata, isolare immediatamente l’endpoint interessato, terminare il processo Remcos, rimuovere la chiave Run malevola utilizzata per la persistenza ed eseguire una revisione forense completa per il furto di credenziali o attività successive. Anche il contenuto di rilevamento dovrebbe essere aggiornato per identificare la tecnica di blackout della rete e i pattern di nomi di file specifici legati alla campagna.
graph TB %% Definizioni classi classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef data fill:#ccffcc %% Nodi email_phishing[“<b>Azione</b> – <b>T1204.001 Esecuzione utente: link malevolo</b><br/>La vittima riceve un’email con un’immagine contenente un link MediaFire malevolo.”] class email_phishing action download_payload[“<b>Azione</b> – <b>T1566.001 Phishing: allegato spearphishing</b><br/>La vittima scarica un eseguibile WinRAR SFX mascherato come .pdf.scr.”] class download_payload action file_double_ext[“<b>Azione</b> – <b>T1036.007 Mascheramento: doppia estensione file</b><br/>Il file chiamato <i>invoice.pdf.scr</i> nasconde un eseguibile .scr.”] class file_double_ext action script_vbs[“<b>Azione</b> – <b>T1059.005 Interprete di comandi e script: Visual Basic</b><br/>Lo script VBS (flvs.vbe) costruisce una stringa cmd.exe ed esegue comandi.”] class script_vbs action tool_autoi[“<b>Strumento</b> – <b>Nome</b>: Interprete AutoIt (rinominato come .xls)<br/><b>Scopo</b>: Esegue script AutoIt malevoli.”] class tool_autoi tool script_autoi_obf[“<b>Azione</b> – <b>T1059.010 Interprete di comandi e script: AutoIt/AutoHotKey</b><br/>Viene eseguito uno script AutoIt fortemente offuscato.”] class script_autoi_obf action obfusc_junk[“<b>Azione</b> – <b>T1027.016 File o informazioni offuscate: inserimento di codice spazzatura</b><br/>Lo script contiene 88 MB di blocchi di commenti privi di significato.”] class obfusc_junk action obfusc_stripped[“<b>Azione</b> – <b>T1027.008 File o informazioni offuscate: payload ridotti</b><br/>Payload confezionato all’interno di grandi dati filler con codifica esadecimale personalizzata.”] class obfusc_stripped action malware_remcos[“<b>Malware</b> – <b>Nome</b>: Remcos RAT<br/><b>Funzione</b>: Accesso e controllo remoto.”] class malware_remcos malware c2_dns[“<b>Azione</b> – <b>T1071.004 Protocollo di livello applicazione: DNS</b><br/>Comunica con server C2 tramite hostname Dynamic DNS su TLS cifrato.”] class c2_dns action persistence_autostart[“<b>Azione</b> – <b>T1547.014 Esecuzione automatica all’avvio o logon: Active Setup</b><br/>Crea la chiave di registro HKCU\Software\Microsoft\Windows\CurrentVersion\Run\WindowsUpdate.”] class persistence_autostart action trusted_util[“<b>Azione</b> – <b>T1127 Esecuzione proxy tramite utility di sviluppo affidabili</b><br/>Usa l’interprete AutoIt legittimo come utility affidabile per eseguire codice malevolo.”] class trusted_util action deobfuscation[“<b>Azione</b> – <b>T1140 Deoffuscare/decodificare file o informazioni</b><br/>I ricercatori decodificano PE codificati in esadecimale personalizzato e configurazioni Remcos cifrate con RC4.”] class deobfuscation action %% Connessioni email_phishing –>|porta a| download_payload download_payload –>|contiene| file_double_ext file_double_ext –>|attiva| script_vbs script_vbs –>|carica| tool_autoi tool_autoi –>|esegue| script_autoi_obf script_autoi_obf –>|include| obfusc_junk script_autoi_obf –>|include| obfusc_stripped script_autoi_obf –>|avvia| malware_remcos malware_remcos –>|usa| c2_dns malware_remcos –>|stabilisce| persistence_autostart tool_autoi –>|usato_come| trusted_util obfusc_junk –>|facilita| deobfuscation obfusc_stripped –>|facilita| deobfuscation
Flusso di Attacco
Rilevamenti
Possibili Punti di Persistenza [ASEPs – Software/NTUSER Hive] (via registry_event)
Visualizza
Possibile Servizio DNS Dinamico Contattato (via dns)
Visualizza
Possibile File SCR Malevolo con Doppia Estensione (via cmdline)
Visualizza
IOC (HashSha256) per rilevare: BlackToad: Manipolazione della Rete in un Payload AutoIt
Visualizza
IOC (HashMd5) per rilevare: BlackToad: Manipolazione della Rete in un Payload AutoIt
Visualizza
IOC (SourceIP) per rilevare: BlackToad: Manipolazione della Rete in un Payload AutoIt
Visualizza
IOC (DestinationIP) per rilevare: BlackToad: Manipolazione della Rete in un Payload AutoIt
Visualizza
Rilevamento Comunicazione C2 di BlackToad [Connessione di Rete Windows]
Visualizza
Manipolazione della Rete di BlackToad via Payload AutoIt [Creazione Processo Windows]
Visualizza
Esecuzione Simulazione
Prerequisito: La Verifica Preventiva di Telemetria & Baseline deve essere passata.
Razionale: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e il racconto DEVONO riflettere direttamente i TTP identificati e mirano a generare la telemetria esatta prevista dalla logica di rilevamento. Esempi astratti o non correlati porteranno a misdiagnosi.
-
Narrazione & Comandi di Attacco:
- Obiettivo: Stabilire un canale C2 con l’impianto Remcos di BlackToad utilizzando uno dei domini DDNS malevoli noti sulla porta hardcoded 50240.
- Passo-passo:
- Risolvi il dominio malevolo DDNS scelto (
pmitm.ddns.net). - Apri un socket TCP all’IP risolto sulla porta 50240.
- Invia un payload minimo di “heartbeat” per emulare la stretta di mano iniziale dell’impianto.
- Tieni il socket aperto per 30 secondi per garantire che il firewall registri la connessione in uscita.
- Risolvi il dominio malevolo DDNS scelto (
- La connessione in uscita corrisponde esattamente alla regola di Sigma
destination.ipelenco edestination.portcriteri, producendo un evento di firewall rilevabile.
-
Script di Test di Regressione:
# Simulazione di comunicazione C2 di BlackToad (PowerShell) $c2Domain = "pmitm.ddns.net" # uno dei domini elencati nella regola $c2Port = 50240 try { # Risolvi il dominio in IP (aggiunge telemetria query DNS) $ip = [System.Net.Dns]::GetHostAddresses($c2Domain) | Where-Object { $_.AddressFamily -eq 'InterNetwork' } | Select-Object -First 1 if (-not $ip) { throw "Impossibile risolvere $c2Domain" } Write-Host "Risolto $c2Domain a $($ip.IPAddressToString). Collegamento..." # Apri connessione TCP (genera log di uscita firewall) $client = New-Object System.Net.Sockets.TcpClient $client.Connect($ip, $c2Port) # Invia un semplice heartbeat (hex 0x01) $stream = $client.GetStream() $payload = [byte[]](0x01) $stream.Write($payload, 0, $payload.Length) Write-Host "Heartbeat inviato. Connessione mantenuta attiva per 30 secondi..." Start-Sleep -Seconds 30 $stream.Close() $client.Close() Write-Host "Connessione chiusa correttamente." } catch { Write-Error "Simulazione fallita: $_" } -
Comandi di Pulizia:
# Assicurati che eventuali socket rimanenti siano chiusi Get-NetTCPConnection -RemotePort 50240 -State Established | ForEach-Object { Stop-Process -Id $_.OwningProcess -Force } # Facoltativo: Svuota la cache DNS per rimuovere l'entry DDNS risolta ipconfig /flushdns Write-Host "Pulizia completata."