Il malware ZuoRAT rappresenta una minaccia concreta alla sicurezza delle reti. I malintenzionati, infatti, sfruttando l’accesso a router SOHO (small-office, home-office) non aggiornati alle più recenti patch di sicurezza o non opportunamente configurati, possono accedere alle reti LAN domestiche e infettare i dispositivi ad essa collegati.
Sono stati individuati diversi modelli di router destinati ai mercati consumer prevalentemente di Stati Uniti ed Europa, tra cui almeno 80 prodotti da Asus, Cisco e Netgear, il cui firmware è risultato vulnerabile a ZuoRAT.
L’attività di infezione è iniziata già nel 2020 tramite una campagna di phishing che ha coinciso con l’inizio della pandemia e conseguente accelerazione nelle pratiche di smart working.
Indice degli argomenti
I dettagli tecnici del malware ZuoRAT
ZuoRAT è un sofisticato trojan customizzato per architetture MIPS (Microprocessor without Interlocked Pipeline Stages, un’architettura per microprocessori con un instruction set ridotto, alla base delle più evolute architettura RISC – Reduced Instruction Set Computer), in modo che una volta entrato tramite il router nella rete locale, è in grado di enumerare i dispositivi ad esso collegati.
Inoltre, sfruttando tecniche di DNS e HTTP hijacking, ovvero il dirottamento delle richieste effettuate verso domini fraudolenti o il furto di sessioni autenticate della vittima, riesce a installare altri malware tra cui Cbeacon, GoBeacon e Cobalt Strike.
CBeacon e GoBeacon sono due malware realizzati esplicitamente per questa campagna: il primo è scritto in C++ e destinato ad infettare macchine Windows, mentre il secondo è scritto in Go ed ha come target i sistemi Unix based quindi Linux e macOS.
Le vulnerabilità note sfruttate per accedere ai router per diffondere il RAT sono: CVE-2020-26878 e CVE-2020-26879, entrambe permettono di iniettare comandi arbitrari che verranno eseguiti come utente root tramite web.py, un framework per python o meglio un anti-framework come è stato definito dai suoi creatori.
In particolare, i malintenzionati hanno utilizzato un file PE (Portable Executable) compilato in Python facente riferimento a un proof of concept chiamato ruckus151021.py per ottenere le credenziali di accesso al router e installare ZuoRAT.
Così ZuoRAT dirotta il traffico di rete
L’agent di ZuoRAT permette di eseguire una scansione approfondita della rete al fine di raccogliere informazioni sul traffico passante ed effettuare il dirottamento (hijacking) del traffico stesso.
Possiamo immaginare ZuoRat composto da due parti:
- la prima contenente un insieme di funzioni che vengono eseguite automaticamente all’apertura del file suddetto;
- la seconda contenente un set di istruzioni che non vengono invocate in maniera automatica all’avvio ma che possono essere utilizzate on demand da remoto. Questo tipo di architettura ha reso simile ZuoRAT a Mirai di cui ZuoRAT sembra esserne una evoluzione arricchita.
Il primo componente permette all’attaccante di eseguire una ricognizione completa della rete target, allo scopo di decidere se portare avanti l’attacco o meno.
In questa fase sono state trovate funzioni avanzate per verificare che una sola istanza dell’agent fosse in esecuzione. L’obiettivo è quello di estrarre informazioni su tabelle di routing, indirizzi IP e credenziali di accesso salvate nel dispositivo.
L’agente interroga inoltre servizi esterni (quali http://whatsismyip.akamai.com, http://ident.me, http://ipecho.net) per recuperare l’IP pubblico del router e qualora non dovesse riuscire a recuperarlo procede alla cancellazione del file infetto probabilmente sospettando di trovarsi in esecuzione in una in una sandbox e quindi temendo di essere scoperto e analizzato.
Successivamente procede connettendosi alla console C&C restando in ascolto sulla porta 48101. Anche in questo caso verifica che la porta non sia già in uso, altrimenti procede all’interruzione del processo al fine di garantire che una sola istanza del trojan sia in esecuzione.
La tecnica usate per rilevare gli indirizzi IP della rete
ZuoRAT sfrutta una funzione di scansione progettata ad hoc per rilevare gli indirizzi IP all’interno di una rete LAN. In particolare la scansione si concentra su una serie di porte aperte riportate in tabella.
Porte scansionate | 21, 22, 23, 80, 135, 139, 443, 445, 808, 902, 912, 1723, 2323, 3306, 5222, 5269, 5280, 5357, 8080, 8443 e 9001 |
Terminata la prima fase di reconnaissance condivide le informazioni ottenute con la console C&C sulla porta 55556 usando i seguenti accorgimenti: se la connessione veniva refreshata (cioè era già stata stabilita una prima volta) allora la connessione veniva commutata sulla porta 39500 e si procede all’invio delle informazioni raccolte. Nel caso di errori il programma andava in sleep per poi essere rieseguito in un secondo momento.
Utilizzando una delle seguenti funzioni il malintenzionati possono recuperare informazioni relative al traffico di rete su protocolli UDP, DNS e TCP sui quali i dati potrebbero transitare in chiaro.
Funzioni | init_http_proto_match_rule, init_https_proto_match_rule, init_dns_proto_match_rule, init_ftp_proto_match_rule init_socks_proto_match_rule, init_scan_flag, init_http_hij_info, init_dns_hij_rule_list, init_catch_file_match_info, init_ip_port_record_list, init_banner_record_list, dns_plug_init, udp_pcap_init, pcap_platform_init, netbroker_init |
Le funzioni consentivano di filtrare il traffico da catture e inoltrare alla console C&C remota.
Come ultimo atto, viene utilizzata una funzione per raccogliere i dati TCP che fluiscono sulle porte: 20, 21, 80, 8080, 443 e 8443 per consentire all’attaccante di ottenere qualsiasi credenziale che potrebbe essere transitata in chiaro e anche per ottenere informazioni dettagliate sull’attività di navigazione eseguita dall’utente finale dietro il router compromesso.
Le funzioni malevoli di ZuoRAT
In totale sono state osservate circa 2.500 funzioni integrate, che includono moduli che spaziano dagli attacchi di password spray all’enumerazione di dispositivi connessi via USB e all’iniezione di codice malevolo.
I suoi ideatori si sono concentrati nel potenziare il malware sulla capacità di enumerazione dei dispositivi nella LAN, che ha fornito loro informazioni preziose sul target e sulla capacità di dirottamento DNS e HTTP. Queste ultime hanno il vantaggio di essere tipicamente piuttosto difficili da rilevare per i difensori.
Diversi comandi secondari supportavano l’enumerazione LAN aggiuntiva e la raccolta di informazioni riguardanti la configurazioni DNS del sistema infetto. Una funzione invierebbe queste informazioni a un indirizzo IP individuato come 202.178.11.78. Tuttavia, non è stato rilevato traffico in uscita dai router compromessi verso questo indirizzo IP.
Ciò può far pensare che l’indirizzo IP fosse stato dismesso e quindi non più utilizzato al momento dell’analisi.
Un’altra funzione raccoglierebbe le impostazioni DNS e Wi-Fi basate sull’host come le informazioni BSSID (Basic Service Set Identifier) e SSID (Service Set Identifier). E l’agente raccoglierà gli indirizzi IP interni e gli indirizzi MAC dei dispositivi dalla tabella ARP (Address Resolution Protocol), il che può aiutare un attore a condurre una valutazione molto dettagliata di una LAN.
Una volta che l’attore della minaccia ha ottenuto informazioni sulle impostazioni DNS e sugli host interni alla LAN locale, ha a disposizione diverse funzioni progettate per eseguire il dirottamento del DNS.
Queste funzioni prendono in esame le richieste DNS che vengono trasmesse dal router e sfruttando un parser DNS customizzato, fornisce statistiche domini richiesti dalla vittima. Altre funzioni consentono all’attore di aggiornare le regole di dirottamento DNS specificando quali domini dirottare, l’indirizzo IP malevolo su cui effettuare il redirect e il numero di volte in cui la regola deve essere eseguita.
In un campione del malware è stato individuato un elenco parziale di domini e indirizzi IP hardcoded nel trojan. Tale lista include indirizzi IP sia pubblici che privati tra cui.
Indirizzi IP e domini fraudolenti | 91.196.70.49 077d.kse.com 192.168.100.30 202.178.11.78 www.baidu.com 172.230.88.99 2001::A12C 2001::A12D www.sina.com |
La tecnica per nascondere l’infrastruttura malware
Anche il modo in cui i suoi creatori si sono impegnati nel nascondere l’infrastruttura di C&C merita attenzione.
Infatti, per evitare sospetti l’attore della minaccia ha distribuito l’exploit iniziale da un VPS (Virtual Private Server) dedicato che ospitava contenuti legittimi. Hanno anche sfruttato router di terze parti, che venivano periodicamente cambiati, per proxare le richieste dirette alla C&C allo scopo di rendere più difficile l’eventuale rilevamento.
Soluzioni di mitigazione
ZuoRAT, come accade nella maggior parte dei casi con malware simili, non ha capacità di persistenza se si riavvia il router.
Al riavvio, infatti, verrà cancellata la directory temporanea contenente i file infetti. È consigliabile, oltre al riavvio, procedere al reset delle impostazioni di fabbrica e all’aggiornamento del firmware più recente non appena messo a disposizione dal vendor.
Purtroppo non è altrettanto facile rimuovere gli eventuali malware installati sui dispositivi connessi ed è necessario pertanto ricorrere a soluzioni antimalware opportunamente aggiornate.