Au-delà des apparences : Analyse d’un malware dissimulé dans un add-on

Au-delà des apparences : Analyse d’un malware dissimulé dans un add-on

Le 5 avril 2024, un utilisateur a partagé un lien sur le serveur Discord d’OSINT-FR, prétendant qu’il s’agissait d’un add-on OSINT pour Firefox : OsintX. Bien que ce plugin semblait légitime en apparence, il cachait en réalité un malware qui s’approprie les données des utilisateurs qui l’installent, les envoyant ensuite vers le serveur Discord de l’opérateur du logiciel malveillant.

Dans cet article, une analyse approfondie de l’add-on sur Firefox a été réalisée afin de mettre en lumière les éléments suspects identifiés avant l’installation de l’outil. Nous avons ensuite procédé à une analyse approfondie du logiciel malveillant ainsi que de son code source.

OsintX : Décryptage des indices avant l'installation

En premier lieu, on remarque le site web « officiel » de l’extension qui apparaît sur la page de l’outil sur le marketplace officiel de Firefox. Cette extension est présentée comme étant capable d’automatiser les tâches de recherche, mais nécessitant néanmoins certaines compétences en OSINT.

Les fonctionnalités mises en avant par OsintX sont les suivantes :

  • La collecte d’informations ouvertes,
  • L’automatisation des recherches d’adresses électroniques,
  • La localisation d’adresses IP,
  • Les recherches dans des bases de données,
  • L’utilisation des ressources d’Intelligence X.

Les premiers doutes surgissent lors de l’examen des permissions requises par l’extension :

L’extension demande les autorisations suivantes :

  • Télécharger des fichiers, ainsi que lire et modifier l’historique des téléchargements du navigateur,
  • Accéder à l’historique de navigation,
  • Accéder aux onglets ouverts,
  • Accéder à vos données sur tous les sites web.

Ces permissions sont excessives pour un outil qui prétend être simplement dédié à l’automatisation de recherches en ligne, ce qui interroge quant à ses véritables intentions.

Nous avons ensuite examiné les avis sur l’extension. Depuis sa mise en ligne le 9 avril 2023, OsintX a accumulé 44 avis.

On observe que les avis les plus récents sont positifs et sont rédigés dans plusieurs langues. Cependant, il semble qu’il y ait une activité significative de faux commentaires. En effet, une fois traduits, ces avis révèlent des répétitions suspectes. De plus, la structure des commentaires porte à croire que leur rédaction a été réalisée par des intelligences artificielles génératives comme ChatGPT.

Cependant, certains avis paraissant plus authentiques commencent à faire surface.

Par ailleurs, des membres de la communauté OSINT-FR ont signalé des incidents de plantage de leur navigateur lors de l’utilisation de l’outil. Cette observation est en accord avec certains avis négatifs qui soulèvent ce problème, mais qui semblent être noyés parmi les commentaires positifs.

Nous avons ensuite brièvement examiné le profil du développeur. Grâce à une recherche d’image inversée, nous avons rapidement découvert que la photo utilisée n’est pas celle du développeur, mais celle d’une influenceuse sud-coréenne suivie par plus de 1,3 million de personnes sur Instagram.

La section « Plus d’informations » nous donne accès au site web et à une adresse mail de support. Le site web, hébergé sur Netlify, contient un bouton qui redirige vers la page de l’extension sur le marketplace de Firefox. Quant à l’adresse email, elle renvoie à un compte ProtonMail.

Pour conclure ce recueil de premiers indices, nous avons cherché à savoir si ce prétendu développeur possède un compte GitHub, où ses projets seraient hébergés et qui pourraient nous permettre d’en savoir plus sur OsintX ou encore d’explorer d’autres projets similaires.

La seule activité enregistrée sur le compte date du 14 décembre 2023, le jour de sa création. Nous n’avons trouvé aucune information pertinente.

Nous allons maintenant procéder à l’analyse du malware.

Il est à noter que lors de notre tentative de téléchargement du code source sur notre machine, Windows Defender l’a immédiatement détecté lorsque nous avons extrait le code de l’archive.

Analyse du fonctionnement d'OsintX

Pour comprendre le fonctionnement du malware, un environnement adapté est nécessaire. Nous avons opté pour une sandbox, un espace virtuel isolé utilisé pour exécuter et tester des logiciels en toute sécurité sans affecter le système principal. Notre choix s’est porté sur ANY.RUN, un service offrant un accès à une sandbox interactive en ligne pour l’analyse de logiciels malveillants, donnant à l’utilisateur un contrôle total sur le processus d’analyse. Cette sandbox est équipée de plusieurs outils permettant d’analyser le comportement du logiciel sur la machine, que ce soit au niveau du système d’exploitation, des processus ou du flux réseau.

Nous avons commencé par créer une nouvelle tâche dans la sandbox, en y ajoutant le lien de téléchargement de l’add-on, et en spécifiant dans les paramètres que nous souhaitions l’ouvrir avec Firefox. Une fois la sandbox lancée, nous avons d’abord tenté de télécharger la dernière version de l’add-on malveillant, mais celle-ci ne fonctionnait pas correctement. Cette anomalie pourrait être provoquée par la sandbox fonctionnant sous Windows 7, mais elle pourrait également résulter d’erreurs commises par le développeur malveillant dans son code. Nous avons donc répété notre analyse, cette fois-ci avec la version 2.0 de l’add-on. Cette fois-ci, le plugin fonctionnait correctement.

À la fin de notre test de l’add-on, ANY.RUN a détecté plusieurs éléments suspects. Le logiciel malveillant a initié des connexions vers des sites de recherche d’IP. De plus, des connexions vers discord.com ont également été détectées, alors même que la sandbox ne possède pas Discord.

En effet, les requêtes TCP émises depuis la machine révèlent que le logiciel malveillant commence par obtenir l’adresse IP publique de la machine en utilisant ipify. Ensuite, il récupère des informations détaillées sur cette dernière à l’aide de ipapi, avant d’initier diverses requêtes avec Discord.

Étant donné que le trafic HTTPS est chiffré, nous ne pouvons pas visualiser le contenu des requêtes vers Discord dans la sandbox (Edit : On nous a fait savoir qu’il y a bien une option pour pouvoir intercepter le trafic HTTPS, mais elle n’est pas disponible avec un compte gratuit). Au niveau des processus créés, aucun comportement suspect n’a été observé a priori. Concernant l’analyse comportementale effectuée via la sandbox, nous nous en arrêterons là. Il convient de noter que la sandbox est limitée à 60 secondes de temps d’exécution avec les comptes gratuits sur ANY.RUN, ce qui restreint les analyses pour certains logiciels malveillants qui peuvent nécessiter plus de 60 secondes avant de commencer à exécuter des actions malveillantes.

Analyse du code source

Passons à l’analyse du code d’OsintX. Une arborescence classique d’un add-on Firefox, sans anomalies apparentes, est constatée :

  • Un dossier contenant les images utilisées dans le plugin.
  • Un dossier metadata qui contient normalement des informations sur l’add-on, telles que son nom, sa version, etc.
  • Un fichier background.js, qui gère normalement les tâches en arrière-plan de l’add-on, telles que les requêtes réseau.
  • Un fichier content.js, qui injecte normalement du code JavaScript dans les pages web chargées par l’utilisateur.
  • Le fichier de la bibliothèque jQuery, utilisé pour simplifier la manipulation du DOM HTML (structure hiérarchique d’un document web HTML).
  • Le manifest.json, qui décrit normalement les propriétés de l’add-on, telles que ses permissions, ses scripts à exécuter, etc.
  • Un fichier script.js, qui contient normalement des scripts JavaScript spécifiques à l’add-on.
  • Un fichier worker.js, qui crée normalement un processus de travail distinct pour effectuer des tâches en arrière-plan de manière asynchrone.

Ces fichiers et dossiers remplissent chacun un rôle spécifique dans le fonctionnement d’un add-on Firefox, contribuant à sa fonctionnalité et à son intégration avec le navigateur. 

Des fonctions très suspectes sont repérées immédiatement dans le fichier background.js. Les noms de ces fonctions n’ont clairement pas été obfusqués. À partir de ces noms, nous constatons que le malware envoie l’historique du navigateur à un serveur Discord à des intervalles de 3 minutes. Cette transmission de données débute dès l’installation de l’add-on et se répète à chaque démarrage de celui-ci.

Attardons-nous sur la fonction asynchrone sendFullHistoryToDiscord(). Cette fonction commence par récupérer le nom du processeur de la machine de la victime. Ensuite, elle récupère la liste des périphériques USB connectés. Elle obtient également la liste des onglets ouverts de la victime. Ensuite, on retrouve la requête vers ipapi, vue précédemment, afin de récupérer des informations sur l’adresse IP publique de la machine. L’extension récupère également l’ensemble des cookies stockés dans le navigateur de la victime, ainsi que l’intégralité de l’historique de recherche et tous les liens sauvegardés en favoris sur le navigateur de la victime.

Dans le fichier script.js, peuvent être remarquées des fonctionnalités liées à un keylogger très basique. En effet, le code semble récupérer les touches appuyées par l’utilisateur, les concaténer dans une variable, puis les envoyer via un webhook vers le serveur Discord malveillant. 

Donc, OsintX récupère :

  • Le nom du processeur.
  • La liste des périphériques USB connectés.
  • La liste des onglets ouverts.
  • L’adresse IP publique grâce à ipapi et ipify.
  • Plusieurs détails sur l’adresse IP grâce à ipapi, tels que la ville, la région, le pays, le continent, le code postal, les coordonnées, le fuseau horaire du pays de la victime, l’indicatif téléphonique du pays, la monnaie utilisée, les langues parlées dans le pays, la superficie et la population du pays de la victime, ainsi que l’ASN et le fournisseur d’accès Internet. Il est important de noter que toutes ces informations sont approximatives, car il est difficile d’obtenir autant de détails précis à partir d’une seule adresse IP, même en utilisant un outil comme ipapi.
  • L’ensemble des cookies stockés dans le navigateur.
  • L’intégralité de l’historique de recherche.
  • Les liens sauvegardés en favoris.
  • Les touches appuyées par la victime (keylogger).

Dans le code, on retrouve également la signature de l’acteur malveillant. Il est évident qu’il ne s’agit pas du même pseudonyme que celui que l’on trouve sur la page Firefox de l’add-on.

On retrouve à plusieurs endroits dans le code source des liens webhook Discord. Ces liens sont utilisés afin d’exfiltrer les données depuis la machine de la victime vers le serveur Discord de l’acteur malveillant. Plusieurs webhooks sont présents dans trois fichiers : plusieurs dans le fichier background.js, un dans le fichier worker.js et un dans le fichier script.js.Tous les webhooks trouvés sont différents. Les webhooks retrouvés dans script.js, worker.js ainsi que deux des trois qui étaient dans background.js ne fonctionnaient plus au moment de l’écriture de cet article. Cependant, nous avions effectué des tests avant la sortie du communiqué d’OSINT-FR, ce qui nous a permis de trouver les noms donnés à certains webhooks :

  • « Ah Ouais ? M-échant 😉 »
  • « History-OsintX »
  • « Spidey Bot »

En effectuant une requête GET sur un webhook Discord, on peut obtenir quelques informations à son sujet.

Dans le code source, on retrouve également un gif hébergé sur le CDN (Content Delivery Network) de Discord. Il est utilisé dans le corps du message posté à travers le webhook sur le serveur Discord de l’acteur malveillant.

On retrouve également dans les fichiers du code source le logo de l’add-on. Ce logo correspond à celui que l’on retrouve sur la définition de l’OSINT sur Wiktionary. Une simple recherche par image inversée nous permet de constater que le logo a été pris sur internet et n’est pas propre à OsintX.

Dans les versions précédentes d’OsintX, plus précisément dans la v1.0, nous sommes également tombés sur une image qui a attiré notre attention : le logo de la brigade de lutte contre la cybercriminalité. Cette présence dans le code source pourrait être interprétée comme une provocation envers les forces de l’ordre.

Comme remarqué dans les captures d’écran précédentes, l’acteur malveillant a ajouté sa signature à plusieurs reprises. Cette marque d’identification peut prendre différentes formes, telles que des ASCII art ou simplement une signature plus directe avec son pseudo. Il est courant pour les acteurs malveillants de laisser leur empreinte dans le code source ou dans les données qu’ils manipulent, parfois dans le but de se vanter de leurs actions ou simplement pour semer la confusion. Cette pratique peut également servir à défier les autorités ou à créer une sorte de notoriété parmi les autres membres de la communauté cybercriminelle. En tout cas, la présence de ces signatures peut parfois aider les analystes CTI à suivre la piste d’un attaquant ou permettre aux forces de l’ordre de remonter jusqu’à l’identité de l’auteur s’il possède des failles dans son opsec.

Concernant l’historique du développement d’OsintX, il était malveillant depuis sa v1.0. À sa première version, l’outil possédait la fonctionnalité de vol des cookies et d’obtention d’informations sur l’adresse IP publique. Puis, à la v1.2, la fonctionnalité de keylogger fut ajoutée. Un changement de fichier du keylogger est observé dans le passage de la v1.5 à v1.7, passant de background.js à script.js. De nouvelles fonctionnalités sont ajoutées entre la v1.7 et v1.8, telles que l’obtention du nom du processeur, la récupération de la liste des périphériques USB connectés, la liste des onglets ouverts, l’historique de recherche et les liens favoris. Des permissions supplémentaires permettant de récupérer les données voient le jour. Entre la v1.8 et la v2.0, la fonctionnalité de vol de cookies a été recodée et des permissions supplémentaires ont été ajoutées. Enfin, dans la v2.1, worker.js et jQuery ont été ajoutés, sachant que worker.js est censé récupérer des identifiants de connexion à partir d’un formulaire, puis les envoyer via le webhook vers Discord.

Dans toutes les versions de l’extension, de nombreux commentaires sont rédigés en français. Des fautes d’orthographe sont présentes dans les premières versions, mais pas dans les dernières où il y a beaucoup plus de commentaires. De plus, la structure du code et la formulation de certains commentaires, tels que « remplacer par votre logo » ou « remplacer par votre avatar », renforcent l’hypothèse que l’auteur a abusivement utilisé des intelligences artificielles génératives pour réaliser ou l’aider dans ce travail.

Conclusion

OsintX ne semble pas être l’œuvre d’un grand cybercriminel ou d’un acteur étatique, mais plutôt celle d’un simple script kiddie francophone accompagné d’une IA générative telle que ChatGPT. Après avoir réalisé des investigations plus approfondies, le jeune programmeur semble avoir déjà participé au développement d’outils malveillants par le passé. Ces recherches ont permis de découvrir des traces de ses activités antérieures dans ce domaine.

SearchTools

Le premier outil se faisait aussi passer pour un outil OSINT, présentant des fonctionnalités similaires à celles que l’on retrouve aujourd’hui dans OsintX. Toutefois, contrairement à OsintX qui est codé en JavaScript, ce projet avait été développé en batch. Le code batch récupérait en réalité un exécutable nommé « AnonymousStealer », un infostealer, exécuté sur la machine.

AnonymousStealer

Le deuxième dépôt contient l’infostealer mentionné précédemment destiné au vol de données Discord et à l’extraction d’informations d’utilisateurs à partir de navigateurs. Certaines de ces fonctionnalités semblent être discrètement intégrées dans OsintX.

À la suite de la découverte de ce logiciel malveillant, une plainte a été déposée par OSINT-FR auprès des autorités compétentes.

Concernant le cadre de cet article, il n’est pas nécessaire de poursuivre plus loin, car la poursuite des acteurs mal intentionnés relève de la responsabilité des forces de l’ordre. 

De notre côté, nous avons pris l’initiative de signaler cet outil malintentionné à Firefox.

En conclusion, avec l’évolution de la discipline OSINT et la prolifération de ses outils, y compris ceux développés grâce aux technologies d’intelligence artificielle générative comme OsintX, il est essentiel de procéder à une vérification minutieuse avant leur utilisation, qu’ils soient accessibles en ligne ou téléchargeables. Une vigilance accrue est nécessaire pour éviter de devenir victime d’incidents de sécurité. Cette précaution est vitale pour minimiser les risques d’exposition à des logiciels malveillants, prévenir les infections, ou éviter les fuites de données.

– Alb310 & Spidacr

IoCs

OsintX v1.0
7511c3093e61858920175fe88566d2bb665557bc18717e5e7d22f5553a00dd8e

OsintX v1.2
768fbbf8eb57e0c902a09886c309063d90a023876151c66223a510adaa59adeb

OsintX v1.5
55044846572dcd7ca1f10c678462050c5ad2a9414718dd7eef10c7a63f4c6325

OsintX v1.7
a26d2c6b03d5a9b9ffecb93bf8a917d51979646e312437d696ae5dda6d47eb7f

OsintX v1.8
1d37f913e000d53335eb7fcfbfe6cad83b0b83789ca09292fb0fd7000e0904fa

OsintX v2.0
dc09998ffc5fa2c1e5e9959667561f16f53a92c987d44e291bd460c81dc15b5c

OsintX v2.1
d7fad1e136b163a9b5ee65a1c96199182866956b3f26b4d313a0f65cd22d9a23