La campagne d'attaque découverte par des chercheurs de Cado Security, une entreprise spécialisée dans l'investigation du cloud et la réponse aux incidents, compromet les instances Jupyter Notebook et déploie un logiciel malveillant de cryptojacking. Cette opération malveillante utilise un serveur Discord à des fins de C&C (command and control) et du vol d'identifiants AWS et Google Cloud sur des serveurs compromis. « Relativement sophistiquée, la campagne de logiciels malveillants Qubitstrike se concentre particulièrement sur l'exploitation des services cloud », ont expliqué les chercheurs dans leur rapport. « Les instances Jupyter Notebooks sont couramment déployées dans les environnements cloud, chez des fournisseurs comme Google et AWS qui les proposent en tant que services managés ». Jupyter Notebook est une plateforme informatique dynamique basée sur le web qui prend en charge plus de 40 langages de programmation et est utilisée pour la visualisation de données, l'apprentissage machine, les transformations de données, les simulations numériques, la modélisation statistique et la gestion de divers autres résultats de calcul. Il s'agit d'une application open source qui peut être déployée sur des serveurs et a été utilisée comme point d'entrée pour d'autres campagnes d'attaques basées sur le cloud au cours de l'année écoulée, car elle expose des fonctionnalités puissantes, notamment l'exécution de commandes.
Cado Security a pu voir les attaquants de Qubitstrike se connecter à ses honeypots Jupyter Notebook volontairement non protégés et tirer parti de la fonction d'accès au terminal pour ouvrir une interface de ligne de commande Bash. Mais aussi exécuter manuellement une série de commandes de reconnaissance pour collecter des informations sur le processeur du système, l'utilisateur actuellement connecté, et voir si l'accès root était disponible via la commande su et si l'outil curl était installé. À la fin de cette première, ils ont exécuté une commande codée en base64 utilisant curl pour télécharger un script Bash appelé mi.sh à partir d'un compte sur codeberg.org, une plateforme d'hébergement Git similaire à GitHub. Enfin, le script a été enregistré dans un dossier temporaire, puis exécuté et finalement supprimé.
Un malware configuré pour persister
Le script mi.sh configure le système pour le déploiement d'outils supplémentaires, en particulier une version du programme de minage de crypto-monnaie XMRig. Dans un premier temps, le script renomme les utilitaires curl et wget dans le système pour éviter de déclencher des détections système. Il analyse également les processus en cours d'exécution à la recherche de cryptomineurs concurrents et les supprime, ainsi que les connexions à une liste codée en dur d'adresses IP associées à des opérations de minage de cryptomonnaies. Le script supprime aussi divers journaux système et met en place une persistance sur le système en enregistrant plusieurs tâches cron et en ajoutant la clé SSH de l'attaquant au système. Plus important encore, il télécharge et déploie un rootkit appelé Diamorphine. Ce rootkit fonctionne comme un module de noyau chargé avec la commande insmod et dont le but est de cacher les processus de l'attaquant sur le système.
Si la commande insmod échoue, les attaquants compilent Diamorphine à partir des sources sous la forme d'un fichier Linux Shared Object, puis utilisent la technique LD Preload pour l'enregistrer auprès de l'éditeur de liens dynamiques, ce qui entraîne l'exécution du fichier malveillant chaque fois qu'un nouvel exécutable est lancé sur le système. « Le rootkit Diamorphine est bien connu dans les milieux des logiciels malveillants Linux. Il a été observé dans les campagnes de TeamTNT et, plus récemment, de Kiss-a-dog », ont déclaré les chercheurs de Cado. « La compilation du logiciel malveillant à la livraison est courante et est utilisée pour échapper aux EDR et à d'autres mécanismes de détection. Enfin, le script mi.sh recherche dans les répertoires locaux des jetons d'accès à AWS et Google Cloud et exfiltre tous ceux qui sont trouvés vers un groupe Telegram. Les chercheurs de Cado ont intentionnellement placé un jeton AWS sur leur système honeypot et ont immédiatement observé une tentative d'utilisation du jeton pour accéder au compte AWS associé. Qubitstrike agit également comme un travail SSH, le script essayant de se connecter à toutes les adresses IP répertoriées dans le fichier hosts SSH du système et tentant de leur envoyer le script mi.sh.
D'autres implants découverts dans le dépôt Codeberg
En enquêtant sur le dépôt Codeberg qui hébergeait le script mi.sh, les chercheurs ont découvert d'autres scripts et charges utiles, notamment un implant écrit en Python, appelé kdfs.py. Une fois exécuté sur un système, cet implant agit comme un bot qui rejoint un serveur et un canal Discord et attend des commandes. Il permet également de télécharger et d'envoyer des fichiers par l'intermédiaire de la fonction d'attachement de Discord. Le nom du serveur utilisé est « NETShadow » et le canal sur lequel le bot se connecte s’appelle « victims » », ont encore expliqué les chercheurs. « Le serveur disposait aussi d'un autre canal intitulé « ssh ». Cependant, il était vide. Tous les canaux ont été créés exactement à la même heure, le 2 septembre 2023, ce qui suggère que le processus de création a été automatisé. Le nom d'utilisateur du bot est Qubitstrike (d'où le nom que nous avons choisi de donner au logiciel malveillant) ».
Les chercheurs de Cado supposent que le fichier kdfs.py pourrait être exécuté sur certains systèmes avant d'être utilisé pour déployer mi.sh. Toutefois, le bot kdfs.py n'a jamais été déployé sur le système honeypot. Si l'objectif final de l'attaque était de déployer un mineur XMRig sur les systèmes compromis, l'accès des attaquants n'est évidemment pas limité à cela et ils pourraient également adopter d'autres tactiques. « Cado conseille vivement aux lecteurs qui déploient des carnets Jupyter de vérifier la sécurité des serveurs Jupyter eux-mêmes, en accordant une attention particulière aux configurations des pare-feux et des groupes de sécurité », ont déclaré les chercheurs. « Idéalement, les notebooks ne devraient pas être exposés à l'Internet public. S’il est nécessaire de les exposer, il faut s’assurer que l'authentification pour ces notebooks n’a pas été activée ».