La société Guardicore, spécialisée dans la protection des centres de données et des systèmes cloud, un nouveau logiciel malveillant de haute technologie nommé FritzFrog, qui cible les serveurs Linux. FritzFrog combine un ver qui se propage par une attaque par force brute contre les serveurs avec un port SSH ouvert, et des composants pour construire un botnet décentralisé, opérant sans nœuds de commande et sans point de défaillance unique.
Pour construire le botnet, un protocole P2P propriétaire est utilisé, dans lequel les nœuds interagissent entre eux, coordonnent l'organisation des attaques, maintiennent le fonctionnement du réseau et contrôlent l'état les uns des autres. De nouvelles victimes sont trouvées par le biais d'attaques par force brute sur les serveurs acceptant les requêtes SSH. Lorsqu'un nouveau serveur est découvert, une recherche par dictionnaire de combinaisons standard de noms d'utilisateur et de mots de passe est effectuée. La gestion peut se faire à partir de n'importe quel nœud, ce qui complique l'identification et le blocage des opérateurs du botnet.
Selon des chercheurs, le botnet compte déjà environ 500 nœuds, parmi lesquels se trouvent des serveurs de plusieurs universités et d'une grande entreprise ferroviaire. Il est noté que l'objectif principal des attaques concerne les réseaux d'établissements éducatifs, de centres médicaux, d'entités gouvernementales, de banques et de sociétés de télécommunications. Après la compromission d'un serveur, un processus de minage de la cryptomonnaie Monero est organisé. L'activité du logiciel malveillant en question est suivie depuis janvier 2020.
Une particularité de FritzFrog est qu'il garde toutes les données et le code exécutable uniquement en mémoire. Les modifications sur le disque se limitent à l'ajout d'une nouvelle clé SSH dans le fichier authorized_keys, qui est ensuite utilisée pour accéder au serveur. Les fichiers système ne sont pas modifiés, ce qui rend le ver indétectable pour les systèmes vérifiant l'intégrité par des sommes de contrôle. En mémoire, se trouvent également des dictionnaires pour le craquage des mots de passe et des données de minage, qui sont synchronisées entre les nœuds à l'aide du protocole P2P.
Les composants malveillants se camouflent sous les processus «ifconfig», «libexec», «php-fpm» et «nginx». Les nœuds du botnet surveillent l'état des voisins et, en cas de redémarrage du serveur ou même de réinstallation du système d'exploitation (si un fichier authorized_keys modifié a été transféré dans le nouveau système), réactivent à nouveau les composants malveillants sur l'hôte. Pour la communication, un SSH standard est utilisé — le logiciel malveillant lance en outre un «netcat» local, qui se lie à l'interface localhost et écoute le trafic sur le port 1234, auquel les nœuds externes accèdent via un tunnel SSH, utilisant pour la connexion la clé dans authorized_keys.
Le code des composants FritzFrog est écrit en Go et fonctionne en mode multithread. Le logiciel malveillant comprend plusieurs modules, exécutés dans différents threads :
- Cracker — exécute le craquage de mots de passe sur les serveurs attaqués.
- CryptoComm + Parser — organise une connexion P2P chiffrée.
- CastVotes — mécanisme de sélection conjointe des hôtes cibles pour l'attaque.
- TargetFeed — récupère la liste des nœuds à attaquer depuis les nœuds voisins.
- DeployMgmt — mise en œuvre d'un ver qui propage le code malveillant sur le serveur compromis.
- Owned — responsable de la connexion aux serveurs sur lesquels le code malveillant est déjà en cours d'exécution.
- Assemble — assemble le fichier en mémoire à partir de blocs transmis séparément.
- Antivir — module de suppression des programmes malveillants concurrents, identifie et termine les processus contenant la chaîne «xmr», consommant des ressources CPU.
- Le protocole P2P utilisé dans FritzFrog prend en charge environ 30 commandes responsables de la transmission de données entre nœuds, du lancement de scripts, de la transmission de composants malveillants, de la vérification de l'état, de l'échange de journaux, du démarrage de proxies, etc. Les informations sont transmises par un canal chiffré séparé avec sérialisation au format JSON. Un chiffrement asymétrique AES et un codage Base64 sont utilisés pour le chiffrement. Le protocole DH (
Diffie-Hellman). Pour déterminer l'état, les nœuds échangent constamment des requêtes ping.
Tous les nœuds du botnet supportent une base de données distribuée contenant des informations sur les systèmes attaqués et compromis. Les cibles d'attaque sont synchronisées à travers le botnet — chaque nœud attaque une cible distincte, c'est-à-dire que deux nœuds différents du botnet n'attaqueront pas le même hôte. Les nœuds collectent également et transmettent à leurs voisins des statistiques locales, telles que la taille de la mémoire disponible, le temps de fonctionnement, la charge CPU et l'activité des connexions SSH. Ces informations sont utilisées pour décider de lancer le processus de minage ou d'utiliser le nœud uniquement pour attaquer d'autres systèmes (par exemple, le minage n'est pas lancé sur des systèmes chargés ou des systèmes avec une connexion fréquente de l'administrateur).
Pour identifier FritzFrog, les chercheurs ont proposé une méthode simple . Pour déterminer la compromission du système
des indicateurs tels que la présence d'une connexion en écoute sur le port 1234, la présence de dans authorized_keys (le même clé SSH est installé sur tous les nœuds) et la présence dans la mémoire des processus actifs «ifconfig», «libexec», «php-fpm» et «nginx», qui n'ont pas de fichiers exécutables associés («/proc//exe» indique un fichier distant). Un autre indicateur peut être la présence de trafic sur le port réseau 5555, qui apparaît lors de l'interaction du logiciel malveillant avec le pool standard web.xmrpool.eu dans le cadre du minage de la cryptomonnaie Monero.
Source : opennet.ru
