Falsi recruiter distribuiscono NodeRabbit e PollCat: i nuovi RAT multipiattaforma di Nimbus Manticore
APT

Image d’illustration générée par IA

De faux recruteurs distribuent NodeRabbit et PollCat : les nouveaux RAT multiplateformes de Nimbus Manticore

Nimbus Manticore cible des développeurs via de faux recruteurs LinkedIn : tests techniques piégés installent les RAT multiplateformes NodeRabbit et PollCat

Texte généré par intelligence artificielle, publié sans relecture humaine. Transparence IA

Une campagne de cyberespionnage attribuée au groupe iranien Nimbus Manticore, également connu sous le nom Iranian Dream Job, cible des développeurs via LinkedIn et d’autres plateformes d’emploi. Révélée le 1er septembre 2026, l’opération transforme de simples tests de programmation en vecteurs d’attaque pour deux chevaux de Troie d’accès à distance jusqu’alors non documentés : NodeRabbit et PollCat.

Kaspersky a attribué les deux malwares à cet acteur iranien. Les victimes reçoivent des archives apparemment préparées par des recruteurs de grandes entreprises technologiques et sont invitées à exécuter localement des projets logiciels dans des délais très courts. Le code malveillant est dissimulé dans les fichiers de l’application, dans des dépendances npm déjà intégrées ou dans des composants de démarrage.

Aucun correctif ne peut être installé : il ne s’agit pas d’une vulnérabilité affectant un produit, mais d’une chaîne d’ingénierie sociale qui convainc le candidat d’exécuter le malware.

Le test technique devient la première étape de l’intrusion

Nimbus Manticore s’appuie sur une procédure conçue autour d’activités familières pour un ingénieur logiciel. Un prétendu recruteur contacte le candidat, lui présente une opportunité professionnelle et lui attribue un test technique crédible.

Dans le cas observé en Afghanistan, l’archive Front-Technical-Challenge.zip, hébergée sur AWS, contenait le code source d’un outil de gestion de projets appelé Taskflow. Les instructions accordaient trois heures pour corriger les bugs du frontend et interdisaient l’utilisation d’assistants basés sur l’intelligence artificielle.

L’une des consignes demandait expressément de ne pas modifier server.js, présenté comme déjà fonctionnel. Il s’agissait pourtant du point d’activation de l’infection.

La première ligne du fichier importait colorized_terminal version 2.1.0, un paquet npm contrefait. La dépendance ne provenait pas du registre npm : elle avait été placée directement dans le répertoire node_modules distribué avec l’archive. Une fois importé, le paquet lançait en arrière-plan :

node_modules/.cache/.320697f1/index.js

Ce fichier contient NodeRabbit. Cette technique évite de présenter à la victime un exécutable manifestement suspect et exploite le déroulement normal du test : installer ou examiner le projet, démarrer le serveur et tester l’application.

D’autres échantillons de la même famille ont été identifiés sur deux systèmes en Égypte et en Éthiopie. Dans ces variantes, le paquet servant d’appât est pretty-log version 2.1.0, lui aussi intégré au projet comme dépendance trojanisée.

NodeRabbit contrôle les fichiers, les processus et la configuration réseau

NodeRabbit est un RAT basé sur Node.js, conçu pour fonctionner sous Windows, Linux et macOS. La première variante analysée communique avec trois applications hébergées sur Azure :

  • plugplay.azurewebsites[.]net
  • rgbteller.azurewebsites[.]net
  • wslwebui.azurewebsites[.]net

Le protocole de commande et de contrôle sépare l’enregistrement, la récupération des tâches et l’envoi des résultats. Les points de terminaison sont respectivement /api/rabbit/checkin, /api/rabbit/task et /api/rabbit/result.

Les 11 commandes prises en charge permettent aux opérateurs de recueillir des informations sur l’hôte, d’énumérer les processus, d’exécuter des instructions via un shell et d’explorer les répertoires. Le malware peut également lire des fichiers par blocs, les renvoyer en Base64, écrire du contenu décodé à des emplacements arbitraires et supprimer des fichiers ou des répertoires entiers.

La reconnaissance porte notamment sur les adaptateurs réseau, les adresses MAC et IP ainsi que les configurations DNS. Le serveur peut aussi modifier la fréquence des signaux de beaconing afin d’adapter le trafic C2 aux besoins de l’opération.

Une fonction permet de recevoir un script Node.js encodé en Base64, de l’enregistrer sous un nom aléatoire avec l’extension .tmp, de l’exécuter puis de le supprimer immédiatement. L’attaquant peut ainsi étendre dynamiquement les capacités de l’implant tout en laissant moins de fichiers persistants sur le système.

Les variantes les plus récentes intègrent des contrôles visant les environnements d’analyse ainsi qu’une prise en charge partielle des proxys d’entreprise. L’une d’elles utilise des points de terminaison déguisés en services logiciels :

  • /sdk/v2/ready
  • /sdk/v2/config
  • /sdk/v2/events

La persistance varie selon le système d’exploitation : clé Run du registre sous Windows, entrée cron sous Linux et Launch Agent sous macOS. Certains échantillons se présentent comme des mises à jour de Microsoft Edge ou des composants d’Intel Driver & Support Assistant.

WSL, VS Code et les hooks Git renforcent la persistance

La troisième variante de NodeRabbit contient des fonctionnalités ciblant Windows Subsystem for Linux. Elle crée une tâche Windows exécutée chaque jour à 10 h, depuis laquelle un script Visual Basic est lancé via wscript.exe et wsl.exe.

Elle ajoute également 12 commandes dédiées à la gestion des processus, à la persistance et aux environnements de développement. Elle peut énumérer les lecteurs Windows visibles depuis WSL, terminer des processus, modifier le serveur C2 et vérifier l’adresse actuellement configurée.

Les fonctions destinées aux outils utilisés par les développeurs sont particulièrement importantes. Le RAT peut rechercher des dépôts Git dans les répertoires courants ou récemment utilisés, puis insérer un lanceur dans les hooks Git. L’exécution d’opérations normales sur le dépôt peut ainsi réactiver le malware.

NodeRabbit peut également installer une fausse extension Visual Studio Code appelée « GitHub Copilot Helper », contrôler sa persistance et la supprimer sur commande. Une autre fonctionnalité extrait les adresses de comptes à partir d’archives Outlook OST et PST.

Ces fonctionnalités montrent que l’objectif ne se limite pas à maintenir l’accès à la station de travail. Les dépôts, identifiants, contacts professionnels et outils de développement peuvent fournir des éléments utiles à de nouvelles intrusions.

PollCat exploite les OTP et l’urgence comme éléments de mise en scène

La seconde chaîne utilise l’archive RankChallenge-react-6uJSX3-main.zip, présentée comme une évaluation technique chronométrée. Le projet contient plusieurs références incohérentes à des exercices de type CTF : le paquet principal s’appelle ctf-server, le backend affiche CTF server running et le frontend utilise des clés préfixées par ctf-.

Ces éléments laissent penser que l’application est dérivée d’un modèle ou générée avec l’aide d’un outil automatisé. Kaspersky n’exclut pas que les opérateurs aient demandé à un assistant d’IA de créer une plateforme React de type CTF, avant d’y ajouter le malware.

Un tutoriel au format PDF invite le candidat à cliquer sur Continue, à saisir un code OTP à six chiffres renouvelé toutes les 30 secondes et à terminer l’exercice en moins d’une heure. La procédure crée un sentiment d’urgence, mais ne protège pas réellement le test.

PollCat fonctionne indépendamment de l’OTP. Une erreur de validation empêche l’accès à certaines fonctions de l’exercice, sans interrompre l’infection. Si la vérification réussit, l’application génère un JWT et lance même une seconde instance du RAT.

Écrit en JavaScript obfusqué, PollCat établit une persistance quotidienne sous Windows, Linux ou macOS. Ses sept points de terminaison gèrent l’enregistrement, l’identification de l’hôte, la récupération des commandes, l’envoi des résultats et le transfert de fichiers. Ils comprennent notamment /beacon, /gate/hello, /gate/fetch, /gate/submit, /vault/<uuid>, /vault/push et /gate/track.

Le malware dispose de 22 commandes pour manipuler des fichiers, exécuter des commandes shell et du JavaScript, transférer des données, charger des DLL et gérer des archives ZIP. Il peut également énumérer les processus, les lecteurs, les volumes et les points de montage. Trois instructions — WS_DOWNLOAD, REQUEST_ELEVATION et PERSIST — sont présentes, mais non implémentées.

La reconnaissance recherche les logiciels d’entreprise et les produits de sécurité

PollCat vérifie la présence de répertoires associés à 24 entreprises et familles de produits, notamment Microsoft, Google, Cisco, VMware, Fortinet, Palo Alto Networks, CrowdStrike, SentinelOne, Kaspersky Lab, ESET et Bitdefender.

La recherche porte également sur les navigateurs et les outils d’accès à distance. Lorsqu’il trouve une correspondance, le RAT inventorie la racine du répertoire et envoie le résultat au format JSON vers /api/system-details/result.

L’analyse n’est pas récursive, mais elle fournit tout de même aux opérateurs un premier profil de la station de travail : défenses installées, applications d’entreprise, navigateurs et éventuels outils d’administration. Ces informations peuvent orienter les actions suivantes et aider à éviter certains contrôles.

L’attribution à Nimbus Manticore repose également sur les similitudes avec MiniFast, également connu sous les noms MiniUpdate ou Retrograde. PollCat partage avec cette porte dérobée des méthodes de beaconing, de récupération des commandes et des caractéristiques opérationnelles, ainsi que l’utilisation d’Azure Websites et de domaines protégés par Cloudflare.

La campagne marque une évolution par rapport aux outils en C, C++ et Go déjà associés au groupe. Une base JavaScript multiplateforme réduit le travail nécessaire pour cibler différents systèmes et se dissimule plus facilement au sein de projets destinés aux développeurs.

Comment détecter et contenir une attaque potentielle

Les organisations devraient considérer comme non fiables les coding challenges reçus d’un recruteur tant que l’identité de celui-ci et celle de l’entreprise n’ont pas été vérifiées via un canal indépendant. Les archives contenant un répertoire node_modules déjà rempli doivent faire l’objet d’une vigilance particulière.

Il convient de rechercher colorized_terminal 2.1.0, pretty-log 2.1.0, les fichiers JavaScript dissimulés sous .cache ainsi que les extensions VS Code non autorisées. La présence de « GitHub Copilot Helper » doit notamment être vérifiée.

Les opérations de réponse devraient inclure des contrôles portant sur :

  • les clés Run du registre ;
  • les tâches planifiées et les lancements quotidiens à 10 h ;
  • cron et les Launch Agents ;
  • les hooks Git modifiés ;
  • les exécutions inhabituelles de node, wscript.exe et wsl.exe ;
  • les accès inattendus à des fichiers Outlook OST ou PST ;
  • les connexions vers les hôtes Azure associés à NodeRabbit ;
  • le trafic vers les points de terminaison C2 décrits.

Les dépendances doivent être réinstallées depuis des registres vérifiés, plutôt que d’utiliser celles fournies dans l’archive. Les tests externes doivent être exécutés dans des sandbox ou des machines virtuelles isolées, sans identifiants d’entreprise, dépôts sensibles ni accès aux systèmes de production.

Aucun score CVSS n’est connu et aucune mise à jour corrective n’est disponible. La défense repose donc sur le contrôle des projets reçus, la séparation des environnements de développement et la surveillance des techniques de persistance utilisées par les deux RAT.

À lire aussi

Sources

Cet article est une réécriture originale fondée sur les sources ci-dessous.

Sujets liésNimbus ManticoreNodeRabbitPollCatRAT multiplateformefaux recruteurscyberespionnageLinkedIn
Retour à l'accueil