Un package NPM vole les mots de passe Chrome via un outil de récupération

0

Un nouveau malware npm a été surpris en train de voler les informations d’identification du navigateur Web Google Chrome en utilisant des outils de récupération de mot de passe légitimes sur les systèmes Windows.

De plus, ce malware écoute les connexions entrantes du serveur C2 de l’attaquant et fournit des fonctionnalités avancées, telles que l’accès à l’écran et à la caméra, la liste des répertoires, la recherche de fichiers, le téléchargement de fichiers et l’exécution de commandes shell.

Les packages identifiés se trouvent dans le registre npm depuis 2018 et ont enregistré plus de 2 000 téléchargements au total au moment de la rédaction.

Utilise l’utilitaire ChromePass pour « récupérer » les mots de passe Chrome

Récemment, les chercheurs de ReversingLabs ont divulgué leurs découvertes concernant deux packages npm malveillants qui volent secrètement les mots de passe de votre navigateur Web Chrome.

Ces packages s’appellent:

  • nodejs_net_server – plus de 1 300 téléchargements au total
  • temptesttempfile – plus de 800 téléchargements au total

Ces packages ont été découverts par le moteur d’analyse statique de la plate-forme Titanium de ReversingLabs qui utilisait des algorithmes d’apprentissage automatique.

Mais, l’objectif principal du rapport est sur nodejs_net_server qui contient la fonctionnalité de base des logiciels malveillants.

Le malware cible les machines Windows pour voler les informations d’identification des utilisateurs et met également en place une porte dérobée à distance persistante pour que l’attaquant mène des activités de surveillance.

Pour faciliter ses activités de vol d’informations d’identification, le logiciel malveillant, en particulier « nodejs_net_server », utilise l’utilitaire gratuit ChromePass légitime pour Windows.

ChromePass est un outil de récupération de mot de passe pour les systèmes Windows visant à extraire les mots de passe du navigateur Web Chrome de l’utilisateur :

chromepass npm
Utilitaire de récupération de mot de passe ChromePass (NirSoft)

Cet utilitaire est emballé dans le package npm avec des noms cryptiques ou trompeurs, tels que a.exe.

Quoi qu’il en soit, ces exécutables ChromePass ont déjà été signalés par VirusTotal comme malveillants.

Le « nodejs_net_server » a eu 12 versions publiées à ce jour, la dernière 1.1.2 mesurant environ 40 Mo de taille non compressée.

Dans les versions ultérieures, cependant, le malware est lance TeamViewer.exe pour éviter de déclencher des alertes.

Abus des options de configuration npm pour gagner en persistance

La plupart des packages npm malveillants détectés jusqu’à présent reposent sur le typosquattage ou la confusion des dépendances pour infecter les développeurs.

Mais ce n’est pas le cas avec ces packages, et on ne sait pas encore comment ces packages ont réussi à obtenir autant de téléchargements.

npm
page de téléchargement nodejs_net_server sur le registre npm

« Nous n’avons trouvé aucune cible de typosquattage évidente en analysant le nom du package. »

« Nous ne savons pas comment l’auteur avait l’intention d’inciter les utilisateurs à installer le package. Nous pouvons cependant voir l’activité de téléchargement sur la page des statistiques du package. »

« Nous avons contacté NPM pour retirer le package. Nous attendons toujours la réponse de leur équipe de sécurité », a déclaré Tomislav Pericin, architecte logiciel en chef et co-fondateur de ReversingLabs,dans une interview.

npm a répondu:

« Nous avons supprimé le package conformément à la politique d’utilisation acceptable de npm concernant les logiciels malveillants, comme indiqué dans ses conditions Open Source« , a déclaré un porte-parole de GitHub.

Fait intéressant, dès que le package est installé par le développeur, il tente de gagner en persistance sur la machine Windows en abusant de l’option de configuration bien connue de npm, « bin« .

L’option « bin » dans le fichier manifeste du package, package.json, vise à détourner le populaire package « jstest », s’il est pré-installé sur la machine d’un développeur.

« jstest » est un framework de test JavaScript multiplateforme téléchargé plus de 36 000 fois à ce jour, ce qui signifie qu’il y a de fortes chances qu’un développeur NodeJS l’ait.

package.json
package.json pour nodejs_net_server

Mais, avoir « jstest » pré-installé n’est en aucun cas une condition préalable à l’exécution du package malveillant. Sa présence aide simplement le malware à atteindre la persistance sur les machines infectées :

« JSTest n’a pas besoin d’être installé pour que cette attaque fonctionne. L’installation du package détourne la commande ‘jstest’ si elle a déjà été attribuée. »

« L’exécution de cette commande garantirait la persistance des logiciels malveillants et l’exécution de la fonctionnalité de porte dérobée », a déclaré Pericin.

Le fichier « jstest » chargé par le malware tente d’écraser le contenu du lien symbolique « jstest » existant et ajoute en outre un autre fichier JS (« test.js ») en tant que service Windows qui s’exécuterait désormais de manière persistante.

persistence jstest
Logiciels malveillants tentent d’obtenir la persistance en ajoutant le script lib/test.js en tant que service Windows

Ce service Windows nouvellement ajouté ouvre le port 7353 auquel l’attaquant peut se connecter et effectuer diverses activités de surveillance, notamment:

  • inverser la configuration des hôtes et des ports
  • liste du contenu de l’annuaire
  • téléchargement et recherche de fichiers
  • exécution de la commande shell
  • accès à l’écran et à la caméra et enregistrement via l’exécutable ffmpeg fourni
  • vol de mot de passe du navigateur Chrome à l’aide de l’utilitaire de récupération ChromePass fourni

Quant à temptesttempfile, le package est minimal avec seulement deux fichiers et n’implémente que la fonctionnalité de shell distant de nodejs_net_server, ce qui le fait ressembler à un package de test comme son nom l’indique.

Oups! L’auteur de logiciels malveillants expose ses propres mots de passe

Dans une tournure inattendue, certaines versions de nodejs_net_server contiennent des fichiers texte avec les noms d’utilisateur et les mots de passe en clair de l’auteur du malware, extraits de Chrome.

ReversingLabs soupçonne qu’il s’agit d’un accident de la part de l’auteur :

« Le fait amusant lié aux versions qui contiennent l’outil de récupération de mot de passe est que l’auteur du package a accidentellement publié ses propres identifiants de connexion. »

« Il semble que les versions 1.1.1 et 1.1.2 du référentiel NPM incluent les résultats des tests de l’outil ChromePass sur l’ordinateur personnel de l’auteur. »

« Ces informations de connexion étaient stockées dans le fichier ‘a.txt’ situé dans le même dossier que l’outil de récupération de mot de passe nommé ‘a.exe' », a déclaré Karlo Zanki, ingénieur inverse de ReversingLabs, dans un article de blog.

L’observation de Zanki a également été confirmée par d’autres chercheurs lorsqu’ils ont remarqué deux fichiers, a.txt et b.txt avec des informations d’identification en clair, se trouvant dans les versions susmentionnées de « nodejs_net_server ».

Au cours des derniers mois, les attaques contre les écosystèmes open source, notamment npm, PyPI et RubyGems, n’ont cessé de croître.

Avec des rapports récents d’attaques de détournement de dépendance en cours inondant les dépôts open source, le problème ne disparaîtra pas de sitôt.

ReversingLabs pense que comprendre ce qu’il y a à l’intérieur de votre logiciel ou avoir une nomenclature logicielle (SBOM) est une étape critique pour se défendre contre ces attaques de la chaîne d’approvisionnement.

« Les référentiels de packages offrent des commodités pour le développement rapide d’applications, mais comportent également des risques. »

« La compréhension de l’arbre de dépendance des packages, ou de la nomenclature des logiciels, est devenue un élément essentiel de la défense contre les attaques de la chaîne d’approvisionnement logicielle. »

« Chaque composant doit être examiné attentivement avant l’installation, sinon un code malveillant risque de passer inaperçu. »

« Nous n’avons pas encore vu de package de référentiel malveillant s’intégrer dans l’image de la version finale, mais cela semble n’être qu’une question de temps avec l’état actuel des choses », a conclu Pericin.

Si cet article vous a plu, n’oubliez pas de jeter un œil à nos bons plans.

Laisser un commentaire