Sommario
Nel gennaio 2025, un attore identificato da Cisco Talos come UAT-6382 ha condotto una campagna di intrusione contro enti governativi locali negli Stati Uniti, sfruttando una vulnerabilità di tipo remote code execution (RCE) nel software Cityworks. La falla, tracciata come CVE-2025-0994, è stata rapidamente utilizzata per ottenere accesso iniziale e installare web shell, backdoor in Rust, e strumenti come Cobalt Strike e VShell.
La campagna si distingue per l’uso di strumenti recenti scritti in lingua cinese, un’elevata velocità di compromissione post-intrusione e una chiara intenzione di mantenere accesso persistente e invisibile ai sistemi colpiti.
CVE-2025-0994: la falla zero-day in Cityworks come punto d’ingresso
La vulnerabilità in Cityworks, un prodotto sviluppato da Trimble, consente l’esecuzione remota di comandi su sistemi che eseguono il componente vulnerabile all’interno di un web server IIS. Secondo i dettagli tecnici, il software permette l’inserimento di input arbitrari in comandi eseguiti dal sistema operativo, consentendo così all’attaccante di eseguire shellcode o script malevoli tramite cmd.exe o PowerShell.
Cisco ha osservato che l’exploit è stato utilizzato sin dal gennaio 2025 e che le attività malevole coincidono con quelle documentate da Trimble e CISA.
Recon immediata e impianto di backdoor: l’inizio dell’offensiva
Dopo l’exploit iniziale, gli attaccanti eseguono una fase di ricognizione interna per identificare l’ambiente operativo, utilizzando comandi standard come ipconfig
, dir
, tasklist
e interrogazioni specifiche su directory inetpub/wwwroot, in cui risiede la piattaforma CityworksServer. Subito dopo vengono collocate web shell come AntSword, Chopper, Behinder e uploader ASP, contenenti stringhe in lingua cinese semplificata, segno inequivocabile dell’origine linguistica degli operatori.
I file di configurazione, i backup e le directory sensibili vengono elencati e copiati in cartelle facilmente accessibili dalle shell web. Questo comportamento permette sia l’esfiltrazione rapida, sia l’impianto invisibile di ulteriori strumenti di controllo remoto.
TetraLoader: il caricatore Rust costruito con MaLoader
Una delle peculiarità più rilevanti dell’operazione UAT-6382 è l’uso di TetraLoader, un loader scritto in Rust che funge da contenitore per shellcode e payload più avanzati. Questo modulo è stato costruito tramite MaLoader, un builder pubblicato su GitHub nel dicembre 2024 e scritto anch’esso in lingua cinese.
TetraLoader è progettato per decodificare un payload embedded, spesso cifrato, e iniettarlo in un processo legittimo (come notepad.exe
o dllhost.exe
) tramite metodi come CreateRemoteThread
, NtQueueApcThread
o VirtualAllocEx
.
Una volta attivo, il loader può eseguire due tipi principali di payload:
- Cobalt Strike Beacon, configurato per comunicare via HTTPS con un dominio mascherato (es.
cdn.lgaircon.xyz
,www.roomako.com
) - VShell, una backdoor in Go che utilizza socket per stabilire una connessione con server remoti come
192.210.239.172:2219
Cobalt Strike Beacon: configurazioni avanzate e mimetismo HTTP
Talos ha identificato più istanze del beacon di Cobalt Strike, ciascuna con configurazioni sofisticate: comunicazioni cifrate via HTTPS sulla porta 443, jitter per rendere irregolare il beaconing, uso di intestazioni HTTP modificate, e utilizzo di dllhost.exe
o gpupdate.exe
come processo host.
I beacons contengono riferimenti a URI come /jquery-3.3.1.min.js
o /owa/idQ0RKiA2...
, simulando traffico legittimo di librerie JavaScript e portali Outlook Web Access. Le intestazioni HTTP includono cookie e fingerprint falsi, contribuendo a eludere l’analisi comportamentale.
In alcuni casi, i beacon utilizzano intestazioni di tipo NetBIOS, sessionId e tecniche di payload injection via header per massimizzare l’ambiguità semantica della comunicazione C2.
VShell: la controparte Go-based per l’accesso remoto persistente
L’altro componente distribuito tramite TetraLoader è VShell, una backdoor scritta in GoLang, utilizzata per eseguire comandi, trasferire file, scattare screenshot e creare proxy dinamici attraverso NPS tunneling.
La variante impiegata in questa campagna si distingue per un C2 hardcoded e l’uso di payload XOR a singolo byte, inviati all’avvio per poi attivare l’implant completo. Il pannello di controllo VShell è scritto in cinese, suggerendo che anche l’interfaccia di comando è pensata per un pubblico asiatico madrelingua.
Persistenza nei sistemi pubblici e implicazioni strategiche dell’exploit Cityworks
L’operazione UAT-6382, condotta da attori con proficienza linguistica cinese, rappresenta un caso esemplare di come una vulnerabilità poco nota in un software di nicchia — in questo caso, Cityworks — possa essere sfruttata in modo chirurgico per stabilire accesso persistente, esfiltrare dati sensibili e predisporre una infrastruttura secondaria invisibile.
Obiettivi e finalità dell’attacco: pivot verso infrastrutture critiche
Secondo quanto riportato da Cisco Talos, l’attività post-compromissione mostra una forte intenzione di eseguire pivot laterale verso sistemi di gestione delle utilities.
Questo include server coinvolti nella manutenzione di:
- reti idriche
- trasporti locali
- gestione delle emergenze ambientali
- archiviazione digitale di atti pubblici
Il comportamento è coerente con obiettivi di lungo termine, compatibili con strategie statali o paramilitari, dove l’obiettivo non è l’impatto immediato, ma la persistenza strategica in reti istituzionali debolmente difese.
Tecniche di persistenza: injection silente e file staging
Una volta ottenuto l’accesso iniziale, UAT-6382 impiega web shell ASP personalizzate per caricare e archiviare i file rubati in cartelle normalmente accessibili dal front-end, riducendo la necessità di stabilire canali esfiltrativi separati.
I payload secondari vengono depositati nei tempi morti, con cicli di polling C2 configurati a intervalli superiori ai 30 secondi (SleepTime: 35000–45000 ms) e jitter variabile. Le tecniche di injection usano NtMapViewOfSection
, CreateRemoteThread
, LoadLibraryA
e altri metodi low-profile per evitare allarmi nei sistemi EDR.
MaLoader e il malware-as-a-framework: la nascita di strumenti modulari
Uno degli aspetti più rilevanti è l’uso del builder MaLoader, un sistema che consente di creare loaders Rust-based personalizzati. Questa modularità, unita alla natura open source del framework, rende possibile l’adattamento del codice a più campagne e la produzione su larga scala di loader difficilmente riconoscibili.
MaLoader consente agli operatori di scegliere:
- tipo di payload (Cobalt Strike, VShell, Meterpreter)
- tipo di encoding
- processo di destinazione per l’injection
- modalità di persistenza
Il risultato è un ecosistema malware personalizzabile, flessibile, e resistente alle signature statiche.
Indicatori e IoC condivisi: dominio, hash e IP
Talos ha condiviso una serie di indicatori di compromissione rilevanti. Tra questi figurano domini C2 come cdn.phototagx.com
, roomako.com
, lgaircon.xyz
e indirizzi IP statici, tra cui 192.210.239.172
.
Questi servono sia per il download dei payload (LVLWPH.exe
, z44.exe
, ecc.) sia per il controllo remoto attraverso beacon HTTP/S configurati come librerie JavaScript.
Gli hash SHA256 dei moduli TetraLoader e dei beacon sono noti e possono essere utilizzati per creare regole YARA e Snort dedicate.
Considerazioni strategiche: vulnerabilità verticali e targeting amministrativo
L’attacco a Cityworks mostra come i gruppi avanzati non cerchino solo vulnerabilità in software mainstream, ma mirino a piattaforme verticali meno aggiornate e scarsamente monitorate.
La scelta di Cityworks non è casuale: si tratta di un sistema critico per i comuni e le contee statunitensi, spesso installato su server legacy Windows con scarsa segmentazione di rete.
La possibilità di eseguire comandi via PowerShell o cmd.exe
senza sollevare allarmi è sintomo di assenza di logging avanzato, configurazioni permissive e scarsa integrazione con SIEM e sistemi di detection comportamentale.
Prevenzione e mitigazione: cosa fare subito
Le organizzazioni pubbliche e private che utilizzano Cityworks o componenti IIS simili devono:
- applicare immediatamente la patch rilasciata da Trimble per CVE-2025-0994
- disabilitare script remoti e upload non autenticati in
wwwroot
- rimuovere qualsiasi istanza sospetta di AntSword, Behinder o chinatso
- monitorare le chiamate PowerShell da sottodirectory temporanee
- implementare network segmentation tra applicazioni web e database
Strumenti come Cisco Secure Endpoint, Umbrella, Secure Firewall e Duo MFA offrono copertura specifica contro questa campagna, ma la difesa più efficace resta l’integrazione di visibilità, logging e reazione rapida.
TetraLoader come nuova frontiera del malware accessibile
Il caso UAT-6382 non è solo un attacco riuscito. È il manifesto di una nuova metodologia offensiva: loader Rust-based, builder pubblici, vulnerabilità in software trascurati e targeting amministrativo.
Le backdoor non entrano più dalla porta principale. Arrivano silenziose, ben mascherate da aggiornamenti legittimi, librerie JavaScript e configurazioni lasciate a marcire.
Il malware moderno non attacca per colpire. Attacca per restare.