Analyse statique et extraction de charge utile de NWH Stealer. Plongée approfondie dans l'exécution sans fichier via le runtime JavaScript Bun, le vol d'images du presse-papiers en mémoire (image/png) et l'exfiltration vers un C2 cloud en abusant d'AWS/Cloudflare R2.
L'échantillon NWH Stealer chargé dans Binary Ninja révèle une technique surprenante : il utilise massivement des chaînes, des arguments CLI et des liens de documentation provenant de Bun (un environnement d'exécution JavaScript légitime). En intégrant du texte légitime comme « Learn more about Bun » et des liens d'invitation Discord, le malware tente de se faire passer pour un outil ou framework de développement bénin, tout en dissimulant sa véritable intention malveillante dans la section .rdata.
bun install --help / bun test --help / bun build --help – imite l'utilisation de la CLI de Bun https://bun.com/docs / Join our Discord community: https://bun.com/discord – intègre la documentation officielle de Bun et des liens communautaires. markdown / ToAsymmetricMatcher / Invalid regex: bunx – messages d'erreur standard de Bun et matchers de test. Obfuscation : Les chaînes sont entrecoupées de caractères de contrôle et de codes d'échappement ANSI (par ex. [1m, [0m, \n), rendant difficile l'analyse par signatures statiques.
Living off the Land (LotL) : En copiant des chaînes légitimes de l'environnement d'exécution Bun, NWH Stealer se fond dans les environnements de développeurs. Les solutions antivirus et les sandboxes sont moins susceptibles de signaler le trafic ou les appels API provenant d'un environnement d'exécution qui ressemble à « Bun ». Obfuscation de chaînes : L'intégration de chaînes légitimes aux côtés de tableaux de charges utiles chiffrées ou obfusquées (data_143aba5b8) rend beaucoup plus difficile l'isolement des véritables indicateurs malveillants. Évasion par conception : Les auteurs du malware ont spécifiquement choisi un outil de développement moderne et populaire (Bun) pour déguiser la présence du stealer dans les environnements de développeurs ou CI/CD.

Poursuivant l'analyse dans Binary Ninja, NWH Stealer révèle sa chaîne de dropper et d'exécution. Le malware ne se contente pas de se faire passer pour Bun ; il contacte activement le dépôt GitHub officiel pour télécharger l'archive légitime bun-windows-x64. Cependant, les chaînes suivantes exposent une routine d'exécution PowerShell malveillante conçue pour exécuter la charge utile téléchargée avec des indicateurs d'évasion.
URL de téléchargement : https://github.com/oven-sh/bun/releases/download/canary/bun-windows-x64-baseline.zip – télécharge l'environnement d'exécution Bun légitime pour établir une couverture ou l'utiliser comme LOLBin. Chemins des charges utiles extraites : bun-windows-x64-baseline\bun-profile.exe bun-windows-x64-baseline\bun.exe Chaîne d'exécution PowerShell :
powershell
-NoProfile (ignore le chargement du profil PowerShell de l'utilisateur)
-ExecutionPolicy Bypass (contourne les restrictions d'exécution de scripts)
-Command (exécute la commande en ligne)
--revision / --version (probablement utilisés comme arguments pour la charge utile téléchargée afin de faire croire à une vérification de version légitime).
Chaîne d'approvisionnement / Abus de GitHub : En téléchargeant depuis le dépôt officiel github.com/oven-sh/bun, le stealer contourne les filtres réseau qui bloquent les domaines inconnus. Exécution LOLBin : Le bun.exe ou bun-profile.exe téléchargé est utilisé comme wrapper légitime pour exécuter des commandes malveillantes, se fondant dans l'activité normale des développeurs. Évasion PowerShell : Les indicateurs -NoProfile et -ExecutionPolicy Bypass sont des techniques classiques pour garantir que le script malveillant s'exécute sans être bloqué par les politiques système ou les configurations utilisateur.

Une section critique de NWH Stealer révèle son mécanisme de livraison de charge utile en mémoire. La présence de la chaîne http://localhost:data:;base64,, combinée au bytecode du moteur V8 (--filename, use asm, bytecode), indique que le stealer utilise une technique d'exécution sans fichier. Il construit un URI de données encodé en Base64 et l'exécute localement, probablement pour injecter du JavaScript/WebAssembly malveillant directement dans un environnement en cours d'exécution sans écrire de fichier sur le disque.
Schéma Data URI : http://localhost:data:;base64, – construit une charge utile Base64 en ligne pointant vers localhost. Il s'agit d'une technique connue pour contourner les filtres réseau et exécuter du code depuis la mémoire. V8 / Node.js / *Bun Internals : // @bun / bun-cjs / bytecode – indicateurs spécifiques utilisés par le runtime Bun pour exécuter du JavaScript ou du bytecode V8 précompilé. --filename / --dirname / use asm – indicateurs du moteur V8 utilisés pour charger et optimiser des modules WebAssembly ou JavaScript bruts en mémoire. Artefacts de charge utile compilée : bundler\bundle_v2.zig – fait référence au bundler de Bun, renforçant encore la couverture. SEHRefreshSigS / SEHRefreshSigS_57azaspm – noms de fonctions ou clés de chiffrement probablement obfusqués pour la charge utile Base64. Indicateurs d'injection sans fichier : seTaskComplete.read_file / resolve – routines asynchrones de lecture de fichiers/flux et de résolution de modules.
Exécution sans fichier (Évasion) : En utilisant un URI data:;base64, le stealer exécute sa charge utile entièrement en mémoire. Cela ne laisse aucun fichier exécutable sur le disque que l'antivirus pourrait analyser, contournant ainsi la détection traditionnelle basée sur les signatures. Abus de localhost : Le préfixe localhost trompe les pare-feu et les EDR en leur faisant croire que le trafic est interne (et donc sûr), tandis que le contenu malveillant réel est décodé et exécuté. Abus du bytecode V8 : Le chargement de bytecode via --filename et use asm signifie que le stealer peut exécuter du JavaScript/WebAssembly brut et compilé, rendant l'ingénierie inverse nettement plus difficile que pour des scripts en texte clair. Abus du runtime Bun : Les chaînes // @bun et bun-cjs confirment que le stealer utilise le runtime Bun téléchargé comme moteur d'exécution légitime pour son code malveillant en mémoire.
Living off the Cloud : En utilisant des services cloud légitimes (AWS, Cloudflare R2), le stealer mélange son trafic d'exfiltration avec l'usage cloud normal des entreprises, rendant la détection extrêmement difficile
