Les pirates informatiques utilisent l'environnement d'exécution JavaScript Bun pour diffuser NWHStealer

| 6 mai 2026
Les pirates informatiques utilisent l'environnement d'exécution JavaScript Bun pour diffuser NWHStealer

Dans nosrecherches précédentes, nous avons analysé un Windows que nous avons identifié sous le nom deNWHStealer. Les pirates à l'origine de ce programme ne cessent de trouver de nouvelles méthodes pour le diffuser. Au cours de nos activités de recherche, nous avons remarqué que les pirates utilisaient un moteur d'exécution JavaScript appelé Bun pour faciliter sa diffusion.

Bun est une suite d'outils JavaScript et TypeScript complète, fiable et rapide, conçue pour remplacer Node.js de manière moderne et performante. Elle a été entièrement développée pour simplifier le développement web moderne en intégrant plusieurs outils essentiels au sein d'un seul exécutable. 

Sa relative nouveauté le rend également attrayant pour les pirates. Bun n'a pas encore été largement utilisé dans les campagnes de logiciels malveillants, et il leur permet d'intégrer du code malveillant dans des fichiers exécutables plus volumineux, qui risquent d'être moins faciles à détecter. 

Qu'est-ce que NWHStealer et de quoi est-il capable ? 

NWHStealer est unlogiciel malveillant de type « stealer » basé sur Rust, diffusé à l'aide de divers leurres et modes de distribution. Parmi ceux-ci figurent des scripts Node.js, des programmes d'installation MSI et, plus récemment, des chargeurs JavaScript développés avec le runtime Bun.  

Il est souvent hébergé sur des plateformes légitimes telles que GitHub, GitLab, MediaFire, Itch.io et SourceForge, ce qui lui permet de se fondre parmi les logiciels normaux et augmente les chances que les utilisateurs le téléchargent. Les pirates continuent de créer de nouveaux profils et de nouveaux leurres pour diffuser ce logiciel malveillant. 

Une fois installé sur votre PC, NWHStealer permet de : 

  • Recueillir des informations sur le système, notamment le système d'exploitation, le matériel, les logiciels de sécurité, les données utilisateur et les appareils connectés. 
  • Voler des données dans les navigateurs, les extensions et les portefeuilles cryptographiques. 
  • Voler des données provenant de différentes applications, notamment des clients FTP tels que FileZilla et CoreFTP, ainsi que des applications de messagerie comme Steam et Discord. 
  • Injecter du code malveillant dans les processus du navigateur et exécuter des charges utiles supplémentaires (par exemple, XMRig).
  • Tentative de contournement du Contrôle des comptes d'utilisateurs (UAC). 
  • Assurer la persistance grâce à des tâches planifiées. 
  • Obtenez les nouvelles adresses de commande et de contrôle (C2) auprès de Telegram. 

Comment rester en sécurité 

Les pirates adaptent sans cesse leurs techniques, et l'utilisation d'outils plus récents comme Bun montre à quel point ils s'efforcent de garder une longueur d'avance sur les systèmes de détection. 

NWHStealer est particulièrement préoccupant en raison de l'ampleur de sa diffusion et des types de données qu'il cible. Le vol de données de navigateur, de mots de passe enregistrés et d'informations relatives aux portefeuilles de cryptomonnaies peut rapidement entraîner la prise de contrôle de comptes, des pertes financières et d'autres compromissions. 

Voici quelques conseils simples pour rester en sécurité : 

  • Ne téléchargez des logiciels qu'à partir des sites web officiels. 
  • Soyez prudent lorsque vous téléchargez des fichiers depuis des plateformes telles que GitHub, SourceForge ou des sites de partage de fichiers, à moins que vous ne soyez sûr de la fiabilité de la source. 
  • Les pirates continuent de créer de nouveaux profils pour diffuser ce logiciel malveillant sur différentes plateformes. Lorsque vous téléchargez un fichier depuis des sites d'hébergement ou des blogs, vérifiez le profil du développeur ou de l'éditeur, sa réputation et depuis quand il existe. 
  • Vérifiez la structure de l'archive et assurez-vous que le contenu, les images et les fichiers texte correspondent bien à ce que vous avez téléchargé. Vérifiez également le nom de l'archive ; ceux-ci suivent généralement des schémas reconnaissables. 
  • Vérifiez l'éditeur et la signature du fichier avant de l'exécuter. 


Conseil de pro : Installez Malwarebytes Browser Guard pour bloquer les sites malveillants avant qu'ils ne s'affichent. 


Analyse technique

La nouvelle méthode de distribution : Bun JavaScript Runtime 

Selon son site officiel, Bun est une boîte à outils tout-en-un pour JavaScript, TypeScript et JSX. Il a été entièrement développé en Zig et s'appuie sur le moteur JavaScriptCore d'Apple, avec pour priorités un démarrage rapide et une faible consommation de mémoire.

Le Bun se compose de quatre éléments principaux : 

  • Moteur JavaScript :un moteur JavaScript conçu pour remplacer directement Node.js. 
  • Package Manager : unealternative rapide à npm. 
  • Test Runner : unexécuteur intégré compatible avec Jest qui exécute les tests bien plus rapidement que les exécuteurs standard. 
  • Bundler : remplacedes outils tels que Webpack, Vite ou esbuild pour la compilation du code. 

Au cours de récentes campagnes, nous avons constaté que NWHStealer était diffusé via un paquet Bun JavaScript Runtime.  

Comme nous l'avons vu dans nos recherches précédentes, des leurres liés aux jeux vidéo et à d'autres logiciels sont utilisés pour déclencher la chaîne d'infection. Parmi les noms de fichiers ZIP détectés dans ces campagnes récentes, on trouve notamment : 

  • Logiciels et astuces liés aux jeux, tels que : 
    • MOUSE_PI_Trainer_v1.0.zip
    • FiveM Mod.zip
    • VampireCrawlers_Trainer_v1.0.zip
    • MagicalPrincess_Trainer_v1.0.zip 
    • TerraTechLegion_Trainer_v1.0.zip 
  • D'autres logiciels tels que : 
    • TradingView-Activation-Script-0.9.zip 
    • AutoTune 2026.zip
    • Metatune by Slate Digital 2026.zip
    • GoGoTv_Plus.zipAutodesk.zip

Dans le cas analysé dans cet article, la chaîne d'infection commence par une archive contenant Installer.exe, qui intègre du code JavaScript fourni avec le moteur d'exécution Bun. 

Le dossier « DW » contient un autre programme de chargement, appelé dw.exe. Ce chargeur à auto-injection est similaire à celui analysé précédemment, mais il utilise une routine de déchiffrement différente. Ce chargeur n'est pas présent dans tous les fichiers ZIP analysés. 

Le fichier ZIP malveillant contient deux chargeurs
Le fichier ZIP malveillant contient deux chargeurs 

Le Readme.txt Le fichier invite l'utilisateur à le lancer manuellement dw.exe si le principal .exe le fichier ne s'exécute pas correctement. Cela offre à l'attaquant deux moyens de diffuser le logiciel de vol de données si le serveur de commande et de contrôle (C2) du chargeur principal Bun est hors ligne. Le chargeur dans dw.exe fonctionne indépendamment du chargeur JavaScript Bun. 

Le fichier Lisez-moi contenu dans l'archive ZIP
Le fichier Lisez-moi contenu dans l'archive ZIP
La fausse configuration des outils de compilation qui s'affiche lorsque dw.exe est lancé
La fausse configuration des outils de compilation s'affiche si dw.exe est lancé

Dans cet article, nous n'analysons pas dw.exe, puisqu'il s'agit d'une variante des chargeurs précédents. Nous nous concentrons plutôt sur le chargeur JavaScript exécuté avec le moteur d'exécution JavaScript de Bun. 

Analyse du chargeur JavaScript  

Le code JavaScript exécuté par le moteur d'exécution Bun JavaScript se trouve à l'intérieur du .bun section et est obscurci.  

La section .bun contenant le code JavaScript obscurci
Le .bun section contenant le code JavaScript obscurci 

Le code malveillant est implémenté dans deux parties du code : 

  • sysreq.js: effectue les contrôles anti-virtualisation à l'aide d'un système de notation. 
  • memload.js: communique avec le serveur C2, procède au déchiffrement et charge la phase suivante. 
Point d'entrée du chargeur JavaScript

Le chargeur exécute plusieurs commandes PowerShell CIM (Common Information Model) et WMI (Windows Instrumentation) afin de détecter les environnements virtuels. Il existe différents contrôles liés au nombre de processeurs, à l'espace disque, à la résolution d'écran, aux périphériques USB, aux fabricants et produits matériels, au nombre de logiciels installés, à la présence de dossiers spécifiques tels que les dossiers du navigateur, au nombre de processus en cours d'exécution et au nom d'utilisateur. Un système de notation est mis en place et, en fonction de ce score, le chargeur décide de poursuivre l'infection ou de l'interrompre.

Pour détecter un environnement virtuel, le chargeur exécute plus de 10 commandes PowerShell, telles que : 

  • Get-CimInstance -ClassName Win32_DiskDrive | Select-Object Model  
  • Get-CimInstance -ClassName Win32_PhysicalMemory | Select-Object Manufacturer,Speed  
  • Get-CimInstance -ClassName Win32_BIOS | Select-Object Manufacturer  
  • Get-CimInstance -ClassName Win32_BaseBoard | Select-Object Manufacturer,Product  
  • Get-CimInstance -ClassName Win32_DiskDrive | Select-Object PNPDeviceID 
  • (Get-Process -ErrorAction SilentlyContinue).Count 

Les résultats sont comparés à différentes chaînes de caractères, par exemple :

  • Indicateurs de virtualisation : QEMU, SEABIOS, Bochs, VirtualBox, VMware, VirtualBox, KVM, Xen, Parallels, VirtIO, VMBus, Red Hat, EDK II
  • Nom d'utilisateur du bac à sable : sandbox, malware, virus, sample, vmuser, wdagutilityaccount, defaultuser0
  • MAC à des environnements virtuels

Les chaînes sont déchiffrées à l'aide d'une opération XOR et d'un décodage Base64 ; il existe des tableaux de tuples, chacun contenant les chaînes chiffrées ainsi qu'une clé utilisée pour le déchiffrement par XOR. 

Données chiffrées à l'aide de clés XOR
Données chiffrées à l'aide de clés XOR 

Plusieurs fonctions gèrent le déchiffrement des chaînes de caractères, dont une qui déchiffre la configuration utilisée dans la communication C2. Extrait de la configuration : 

C2 server: https://silent-harvester.cc
BUILD_ID: 0ddbfec60307
C2 Path: /api/status, /api/update

Le chargeur récupère et envoie une requête initiale au point de terminaison https://C2-server/api/report contenant des données chiffrées relatives au système compromis : 

  • Adresse IP publique obtenue via une requête adressée à api.ipify.org. 
  • Informations système 
  • Résultat anti-VM 
  • Capture d'écran encodée en Base-64 
  • Horodatage 

Il effectue ensuite deux requêtes HTTP de type GET : 

  • https://C2-server/api/status?v={BUILD_ID}, afin d'obtenir la graine utilisée pour la dérivation de la clé AES. 
  • https://C2-server/api/update?v={BUILD_ID}, afin d'obtenir la charge utile chiffrée avec le nonce AES et la balise d'authentification. 

L'étape suivante est déchiffrée à l'aide de l'algorithme AES-256-CBC, les données AES étant renvoyées par le serveur C2 et chargées via un chargeur à auto-injection à l'aide des API suivantes : 

  • VirtualAlloc 
  • VirtualProtect 
  • LoadLibraryA 
  • GetProcAddress 
  • RtlAddFunctionTable
  • CreateThread 
  • SearchPathA 

Ces API Win32 sont exécutées via le module Bun bun:ffi, qui permet à JavaScript d'appeler des bibliothèques natives. 

À l'issue de ce processus, NWHStealer a été déployé dans les cas analysés. 

Indicateurs de compromis (IOC) 

Domaines 

whale-ether[.]pro: Serveur C2 de NWH Stealer 

cosmic-nebula[.]cc: Serveur C2 de NWH Stealer 

silent-harvester[.]cc: Serveur Bun Loader C2 

silent-orbit[.]cc: Serveur Bun Loader C2 

support-onion[.]club: Serveur Bun Loader C2 

Hachage 

d3a896f450561b2546b418b469a8e10949c7320212eb1c72b48e2b1e37c34ba5 

96fe4ddfe256dc9d2c6faea7c18e2583cd9d9c0099a4ad2cf082f569ee8379f4 

3710fb27d2032ef1eb1252ebf5c4dd516d2b2c0a83fb82c664c89e504b990fa9 

33d07aa24b217f27df6a483295c817da198e12511a6989bcc6b917feaf8e491d 

5427b4cefb329ed0e9585b3ce58a2788baf87e3b0c7221373f9bbd5f32c85b62 

308da9f49ffa1d1744e428b567792ab22712159974e9da8d8e0414ecd81de93e 

021838f30a43026084978bce187c165c6b640d8d474ec009d48078d21ec62025 

c8e96b55f13435c4b43b7209d2403f1a0e0f9deb05edc50e0f777430be693b07 

0614c4cc6375ab6bdcdd2dfa913a67d32c3e8be9b95a4a2aa09bb131b98191c8 

0020999b2e3e4d1b2cfb69e4df9440d3ce05d508573889fdc12b724ce75a0cd8 

0fa42df08cc467ec52b2d388b5575114a8ec067d13f6b1a653ec33fe879f88ca 

15f79980650393d182f81cd6e389210568aa1f5f875e515efe6cb9485d64b7fb 

20454ba58d509300fd694ae6159db4efa1b7ff965f98c29e7d087e20f96578c1 


Prix « Choix de la rédaction » de CNET 2026

D'après CNET.Lire leur critique


À propos de l'auteur

Gabriele est ingénieur en recherche sur les logiciels malveillants et adore lutter contre ces derniers. Lorsqu'il ne s'occupe pas de cela, il aime profiter de la nature, de l'art et des animaux.