FritzFrog: P2P Botnet Hops Back on the Scene

Synthèse
FritzFrog est une campagne botnet de cryptomoning, peer-to-peerdécouverte par Guardicore Labs (aujourd'hui Akamai Threat Labs) en août 2020
Le botnet décentralisé cible tout terminal qui expose un serveur SSH (instances cloud, serveurs de centre de données, routeurs, etc) et est capable d'exécuter toute charge utile malveillante sur les nœuds infectés
Son architecture peer-to-peer et son code propriétaire démontrent un haut niveau de sophistication
Il a récemment refait surface et affiché une croissance 10 fois plus rapide de son taux d'infection en un mois, compromettant des serveurs dans les secteurs de la santé, de l'éducation et du gouvernement
1 500 hôtes distincts ont été infectés depuis la réapparition du botnet, dont la plupart se trouvent en Chine
Le logiciel malveillant Golang qui se propage ajoute de nouvelles fonctionnalités au botnet, y compris l'utilisation d'un réseau proxy et le ciblage des serveurs WordPress
La récente série d'attaques fournit davantage de preuves quant aux origines de FritzFrog, indiquant un lien possible avec un acteur opérant en Chine, ou un acteur se faisant passer pour chinois
Akamai Threat Labs a mis à jour l'outil de détection FritzFrog pour gérer la dernière version du logiciel malveillant

FritzFrog v1 — bref récapitulatif
FritzFrog est un botnet peer-to-peer, ce qui signifie que son serveur de commande et de contrôle n'est pas limité à une seule machine centralisée, mais peut être fait à partir de chaque machine de son réseau distribué. En d'autres termes, chaque hôte exécutant le processus malveillant devient partie intégrante du réseau et est capable d'envoyer, de recevoir et d'exécuter les commandes pour contrôler les machines du réseau.
FritzFrog se propage sur SSH. Après avoir trouvé les informations d'identification d'un serveur à l'aide d'une technique de force brute simple (mais agressive), il établit une session SSH avec la nouvelle victime et dépose l'exécutable du logiciel malveillant sur l'hôte. Le logiciel malveillant commence alors à écouter et à attendre les commandes. Ces commandes incluent l'échange de cibles, le partage des détails des machines compromises et le transfert de fichiers, ainsi que l'exécution de scripts et de charges utiles binaires. La liste complète des commandes est disponible sur notre précédent billet de blog.
Nous considérons FritzFrog comme un botnet « nouvelle génération » en raison d'une combinaison de propriétés qui le rendent unique dans l'écosystème des menaces :
Mise à jour constante : les bases de données des cibles et des machines violées sont échangées de manière transparente
Agressif : la force brute est basée sur un dictionnaire étendu ; par comparaison, DDG, un autre botnet P2P récemment découvert, n'utilisait que le nom d'utilisateur « racine »
Efficace : les cibles sont réparties uniformément entre les nœuds
Propriétaire : le protocole P2P est entièrement propriétaire, ne reposant sur aucun protocole P2P connu tel que μTP
FritzFrog v2
Juste après avoir publié les détails de FritzFrog en août 2020, l'équipe Guardicore Labs (aujourd'hui Akamai Threat Labs) a remarqué une baisse du nombre d'attaques. Cependant, au début du mois de décembre 2021, nous avons commencé à observer une augmentation des attaques contre notre réseau mondial de capteurs.
Une attaque FritzFrog commence par une force brute SSH, et continue avec un fichier déposé et exécuté. Ce fichier commence immédiatement à écouter sur le port 1234 et à analyser des milliers d'adresses IP Internet sur les ports 22 et 2222.
Une différence entre les anciennes attaques FritzFrog et les nouvelles attaques est le nom du processus malveillant. Dans la première série d'attaques, le processus malveillant était nommé ifconfig ou nginx ; cette fois, les opérateurs FritzFrog ont choisi le nom apache2.
Nous avons commencé à surveiller la nouvelle variante et avons constaté une augmentation surprenante du nombre d'attaques FritzFrog, culminant à 500 incidents par jour.

Analyse des victimes
Dans le cadre de notre enquête sur la première campagne de FritzFrog, nous avons développé un outil appelé Frogger. Frogger nous permet de recueillir des informations sur les hôtes infectés, y compris leur disponibilité, leur hashrate, leurs pairs et leur hasrate, si un cryptomineur est en cours d'exécution. Ce programme prend l'adresse IP d'un nœud infecté et interroge l'hôte sur un canal de communication chiffré afin de recevoir des informations sur son état. Ce faisant, nous pouvons en savoir plus sur le nœud et les autres nœuds auxquels il est connecté. Ce processus tire parti de l'infrastructure du botnet pour ce faire.
Notre analyse des victimes était basée sur deux sources : les adresses IP des machines qui ont attaqué nos capteurs et les informations obtenues par Frogger. À savoir, nous avons commencé avec la liste des adresses IP des attaquants vues par nos capteurs, puis nous avons étendu cette liste en interrogeant chacun d'eux pour ses pairs, en utilisant Frogger, de manière récursive.
Les graphiques ci-dessous montrent le nombre quotidien d'adresses IP qui ont attaqué nos capteurs et la différence en termes de nombre d'attaquants entre des jours consécutifs. L'augmentation du nombre de nœuds attaquants (les machines victimes exécutant le logiciel malveillant) est inquiétante.


Au cours de la deuxième campagne, FritzFrog a réussi à infecter plus de 1 500 hôtes distincts. Il s'agissait de serveurs appartenant à des organisations de tailles et de secteurs divers, notamment la santé, l'enseignement supérieur et le gouvernement. Nous avons trouvé des machines infectées dans un réseau de chaînes de télévision européen, un fabricant russe de matériel de santé et plusieurs universités en Asie de l'est. Comme le montre la carte, une grande concentration de machines victimes a été trouvée en Chine.

Nouvelles fonctionnalités du programme malveillant
Le binaire FritzFrog est écrit en Golang et peut être compilé pour fonctionner sur de nombreuses architectures différentes. Il est empaqueté en utilisant UPX et est généralement exécuté sous l'un des quatre noms de processus suivants : ifconfig, nginx, apache2 ou php-fpm. Nous avons fourni une analyse approfondie du logiciel malveillant dans notre publication précédente, et nous nous concentrerons donc sur les nouveaux échantillons et les ajouts qu'ils apportent.
FritzFrog est mis à jour quotidiennement, parfois plusieurs fois par jour. La plupart des nouvelles versions impliquent des corrections de bogues, mais certaines versions ajoutent de nouvelles capacités au logiciel malveillant.
Préparation pour le ciblage WordPress
FritzFrog a publié une nouvelle version qui implémente l'infrastructure pour le suivi des serveurs WordPress. Il contient des fonctions responsables de l'ajout et de la suppression d'entrées de listes intitulées WordPress et WordpressTargetsTTL. L'extrait de code désassemblé ci-dessous montre l'implémentation d'une nouvelle commande P2P, put wordpress, qui ajoute une nouvelle entrée à la liste de cibles WordPress. Au moment de la rédaction de ce rapport, ces listes, qui sont enregistrées sur tous les nœuds infectés, sont encore vides.

Le logiciel malveillant ne contient aucun module capable de craquer ou d'identifier les cibles WordPress. Sur cette base, nous supposons que le code est une préparation pour de nouvelles versions qui seront capables de compromettre ces cibles et de les utiliser à des fins autres que le minage, telles que des fuites d'informations, des ransomwares, etc.
Chaîne proxy Tor
FritzFrog peut mandater les connexions SSH sortantes en utilisant la chaîne proxy Tor et en définissant le proxy pour les connexions SSH sur le port local 9050. La chaîne proxy Tor est un réseau de nœuds qui fournit à ses utilisateurs une meilleure confidentialité et un meilleur masquage en créant un chemin basé sur l'encapsulation de la source à la destination ; chaque nœud ne connaît que ses nœuds voisins directs.
En envoyant des requêtes au port local 9050, FritzFrog utilise la chaîne proxy Tor pour se connecter aux terminaux SSH qui lui appartiennent. Un terminal propriétaire verrait la demande entrante comme provenant du dernier nœud de la chaîne proxy. Cela peut être utilisé pour dissimuler l'adresse des nœuds infectés actuels. À ce jour, bien que la fonctionnalité existe, nous n'avons pas encore vu cette fonctionnalité être utilisée par le logiciel malveillant.
SCP
FritzFrog utilise maintenant SCP pour se copier sur un serveur distant compromis. Ceci est différent de la première version, où l'exécutable du logiciel malveillant était déposé sur une nouvelle victime à l'aide de la commande cat sur une session SSH établie. La nouvelle implémentation utilise une bibliothèque SCP publique écrite en Golang dans GitHub. Nous n'avons pu déterminer aucun avantage significatif d'une méthode par rapport à l'autre. Il est cependant à noter que les auteurs de la bibliothèque SCP sont situés en Chine.
Liste de blocage
La première version de FritzFrog implémentait une liste de blocage pour exclure des machines spécifiques d'être violées par le module du pirate (force brute). Alors qu'une commande P2P spéciale, putblentry, permet l'insertion dynamique d'entrées dans cette liste, les nouvelles versions codent en dur plusieurs entrées à l'avance.
Certaines de ces entrées spécifient un nom Unix, et d'autres une adresse IP — mais jamais les deux.
Entrées de liste de blocage codées en dur dans les nouveaux échantillons FritzFrog
[ {"Address": "",
"Uname_match": "[redacted]dddz.me 3.10.0-693.2.2.el7.x86_64 #1 SMP Tue Sep 12 22:26:13 UTC 2017"},
{"Address": "",
"Uname_match": "[redacted]-1 4.4.0-151-generic #178-Ubuntu SMP Tue Jun 11 08: 30: 22 UTC 2019"},
{"Address": "",
"Uname_match": "[redacted].amzn2.x86_64 #1 SMP Mon Jun 18 22: 33: 07 UTC 2018 x86_64 GNU/Linux"},
{"Address": "",
"Uname_match": "[redacted]-generic #113-Ubuntu SMP Thu Jul 9 23: 41: 39 UTC 2020"},
{"Address": "",
"Uname_match": "[redacted] raspberrypi 4.4.32-v7+ #924 SMP Tue Nov 15 18: 11: 28 GMT 2016 armv7l GNU/Linux"},
{"Address": "",
"Uname_match": [redacted] 3.10.0-123.4.4.el7.x86_64 #1 SMP Fri Jul 25 05: 07: 12 UTC 2014 x86_64 x86_64 x86_64 GNU/Linux"},
{"Address": "",
"Uname_match": [redacted] 4.18.0-193.28.1.el8_2.x86_64 #1 SMP Thu Oct 22 00: 20: 22 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux"},
{"Address": "[redacted].24: 22",
"Uname_match": ""},
{"Address": "[redacted].88: 22",
"Uname_match": ""},
{"Address": "[redacted].26: 22",
"Uname_match": ""}]
Les entrées suggèrent que les opérateurs cherchent à éviter d'infecter les systèmes bas de gamme disposant de faibles ressources, tels que les terminaux Raspberry Pi ou les images EC2 à faible ressource sur AWS.
Une adresse IP dans la liste de blocage vient de Russie. Elle a plusieurs ports ouverts et une longue liste de vulnérabilités non corrigées, il peut donc s'agir d'un pot de miel. En outre, une deuxième entrée pointe vers un gouffre de botnet open-source. Ces deux entrées suggèrent que les opérateurs tentent d'échapper à la détection et à l'analyse.
Deux des adresses IP sont géo-basées aux États-Unis. Une entrée bloque l'Université du Maryland, pour des raisons qui ne sont pas claires, et la seconde affiche une blague pratique, ou un avertissement lorsque vous naviguez, apparemment conscient d'une enquête potentielle sur le logiciel malveillant.

Origines et attribution
Les modifications et ajouts récents à cette campagne nous ont permis d'examiner les origines possibles de ce logiciel malveillant. Bien que nous ne puissions pas être certains de sa véritable origine, nous croyons que le partage de cette information peut être précieux.
La première preuve provient de l'une des bibliothèques nouvellement ajoutées compilées dans le logiciel malveillant FritzFrog nommé scp, qui implémente le protocole Secure Copy pour les transferts de fichiers via SSH. La bibliothèque est écrite en Go et son code est partagé sur GitHub, dans un référentiel par un utilisateur situé à Shanghai. Une duplication, qui a été fait par un deuxième individu situé à Shanghai, existe dans ce référentiel .
Un autre élément de preuve lié à la Chine provient de l'activité de cryptominage de FritzFrog. Notre équipe de recherche a réussi à trouver de nouvelles adresses de portefeuille ainsi que de nouveaux pools de minage utilisés dans le processus de cryptominage. L'une des adresses de portefeuilles nouvellement observées (indiquées ci-dessous) a également été utilisée dans le cadre de la campagne du botnet Mozi , dont les auteurs ont été récemment arrêtés en Chine.
Adresse du portefeuille FritzFrog Monero connecté à Mozi
47BD6QNfkWf8ZMQSdqp2tY1AdG8ofsEPf4mcDp1YB4AX32hUjoLjuDaNrYzXk7cQcoPBzAuQrmQTgNgpo6XPqSBLCnfsjaV
Ces éléments de preuve, sans être accablants, nous amènent à croire qu'il existe un lien possible avec un acteur opérant en Chine, ou un acteur se faisant passer pour chinois. Enfin, la surveillance des données d'attaque a démontré un niveau élevé d'activité en Chine et autour de la Chine tout au long de la durée de la campagne. À ce jour, environ 37 % des nœuds infectés semblent être situés en Chine.
Prévention et atténuation
Outil de détection de FritzFrog
Akamai fournit un script de détection de FritzFrog à exécuter sur des serveurs SSH. Il recherche les indicateurs FritzFrog suivants :
Processus en cours d'exécution nommés nginx, ifconfig, php-fpm, apache2 ou libexec, dont le fichier exécutable n'existe plus sur le système de fichiers (comme indiqué ci-dessous)
Port d'écoute 1234

En outre, le trafic TCP sur le port 5555 peut indiquer un trafic réseau vers le pool Monero.
Recommandations
Veillez à ce que les systèmes soient toujours à jour et corrigés
Implémentez la connexion sans mot de passe en utilisant un système de gestion et de rotation de clés fort
Activez l'audit de connexion système avec alertes
Surveillez le fichier authorized_hosts sous Linux
Configurez la liste d'autorisation explicite de connexion SSH
Désactivez l'accès à l'SSH racine
Activez la protection DNS basée sur le cloud d'Akamai avec les menaces et les applications professionnelles indépendantes telles que le blocage des logiciels malveillants de minage de monnaies