In onseerdere onderzoek hebben we een Windows geanalyseerd die we registreren onder de naamNWHStealer. De aanvallers achter deze stealer vinden voortdurend nieuwe manieren om het programma te verspreiden. Tijdens onze opsporingsactiviteiten hebben we gemerkt dat aanvallers gebruikmaken van een JavaScript-runtime genaamd Bun om de verspreiding ervan te vergemakkelijken.
Bun is een betrouwbare, snelle alles-in-één toolkit voor JavaScript en TypeScript, ontworpen als een moderne, krachtige vervanging voor Node.js. Het is volledig vanaf de basis ontwikkeld om moderne webontwikkeling te vereenvoudigen door verschillende essentiële tools in één enkel uitvoerbaar bestand te integreren.
Het feit dat het nog vrij nieuw is, maakt het ook aantrekkelijk voor aanvallers. Bun is nog niet op grote schaal gesignaleerd in malwarecampagnes, en het stelt hen in staat om schadelijke code te verpakken in grotere uitvoerbare bestanden die mogelijk minder gemakkelijk te detecteren zijn.
Wat is NWHStealer en wat kan het doen?
NWHStealer is eenop Rust gebaseerde stealerdie via diverse lokmiddelen en verspreidingsmethoden wordt verspreid. Hiertoe behoren Node.js-scripts, MSI-installatieprogramma’s en, meer recentelijk, JavaScript-loaders die zijn gebouwd met de Bun-runtime.
Het wordt vaak gehost op legitieme platforms zoals GitHub, GitLab, MediaFire, Itch.io en SourceForge, waardoor het niet opvalt tussen de gewone software en de kans groter wordt dat gebruikers het downloaden. Aanvallers blijven nieuwe profielen en lokmiddelen aanmaken om de gegevensdief te verspreiden.
Zodra NWHStealer op je pc is geïnstalleerd, kan het:
- Verzamel systeeminformatie, waaronder het besturingssysteem, de hardware, beveiligingssoftware, gebruikersgegevens en aangesloten apparaten.
- Gegevens stelen uit browsers, extensies en crypto-wallets.
- Gegevens stelen uit verschillende applicaties, waaronder FTP-programma’s zoals FileZilla en CoreFTP en communicatie-apps zoals Steam en Discord.
- Schadelijke code in browserprocessen injecteren en aanvullende payloads uitvoeren (bijv. XMRig).
- Probeer de Gebruikersaccountbeveiliging (UAC) te omzeilen.
- Zorg voor continuïteit door middel van geplande taken.
- Vraag nieuwe command-and-control-adressen (C2) op bij Telegram.
Hoe blijf ik veilig
Aanvallers passen hun technieken voortdurend aan, en het gebruik van nieuwere tools zoals Bun laat zien hoe ze proberen detectie een stap voor te blijven.
NWHStealer is bijzonder zorgwekkend vanwege de grote verspreiding ervan en het soort gegevens waarop het zich richt. Gestolen browsergegevens, opgeslagen wachtwoorden en informatie over cryptovaluta-wallets kunnen al snel leiden tot het overnemen van accounts, financieel verlies en verdere inbreuken op de veiligheid.
Hier zijn een paar eenvoudige manieren om veilig te blijven:
- Download software alleen van officiële websites.
- Wees voorzichtig met downloads van platforms zoals GitHub, SourceForge of platforms voor het delen van bestanden, tenzij je de bron vertrouwt.
- Aanvallers blijven nieuwe profielen aanmaken om deze gegevensdief over verschillende platforms te verspreiden. Controleer het profiel van de ontwikkelaar of uitgever, zijn reputatie en hoe recent het profiel is wanneer je iets downloadt van bestandshostingdiensten of blogs.
- Controleer de structuur van de archieven om te zien of de inhoud, afbeeldingen en tekstbestanden overeenkomen met wat je hebt gedownload. Controleer ook de naam van het archief; deze volgen meestal herkenbare patronen.
- Controleer de uitgever en de handtekening van het bestand voordat u het uitvoert.
Veiliger. Sneller. Surfen zonder advertenties.
Pro-tip: Installeer Malwarebytes Browser Guard om schadelijke sites te blokkeren voordat ze worden geladen.
Technische analyse
De nieuwe distributiemethode: Bun JavaScript Runtime
Volgens de officiële website is Bun een alles-in-één toolkit voor JavaScript, TypeScript en JSX. Het is volledig nieuw ontwikkeld in Zig en draait op de JavaScriptCore-engine van Apple, met de nadruk op een snelle opstarttijd en een laag geheugengebruik.
Bun bestaat uit vier hoofdonderdelen:
- JavaScript-runtime:een JavaScript-runtime die is ontworpen als directe vervanging voor Node.js.
- Package Manager: eensnel alternatief voor npm.
- Test Runner: eeningebouwde, met Jest compatibele testrunner die tests veel sneller uitvoert dan standaard testrunners.
- Bundler: vervangttools zoals Webpack, Vite of esbuild voor het bundelen van code.
Tijdens recente campagnes hebben we vastgesteld dat NWHStealer wordt verspreid via een Bun JavaScript Runtime-bundel.
Zoals we in ons eerdere onderzoek hebben gezien, worden lokbestanden in de vorm van game- en andere software gebruikt om de infectieketen op gang te brengen. Enkele van de ZIP-bestandsnamen die in deze recente campagnes zijn gedetecteerd, zijn onder meer:
- Spelgerelateerde software en cheats, zoals:
MOUSE_PI_Trainer_v1.0.zipFiveM Mod.zipVampireCrawlers_Trainer_v1.0.zipMagicalPrincess_Trainer_v1.0.zipTerraTechLegion_Trainer_v1.0.zip
- Andere software, zoals:
TradingView-Activation-Script-0.9.zipAutoTune 2026.zipMetatune by Slate Digital 2026.zipGoGoTv_Plus.zip,Autodesk.zip
In het geval dat in dit artikel wordt besproken, begint de besmettingsketen met een archiefbestand dat Installer.exe, waarin JavaScript-code is ingebed die bij de Bun-runtime is meegeleverd.
De map „DW“ bevat nog een loader, genaamd dw.exe. Deze loader voor zelfinjectie lijkt op de eerder geanalyseerde, maar heeft een andere decoderingsroutine. Deze loader komt niet in alle geanalyseerde ZIP-bestanden voor.

De Readme.txt het bestand vraagt de gebruiker om het handmatig te starten dw.exe als de hoofd- .exe het bestand werkt niet naar behoren. Dit biedt de aanvaller twee manieren om de stealer te verspreiden als de C2 van de hoofd-Bun-loader offline is. De loader in dw.exe werkt onafhankelijk van de Bun JavaScript-loader.


dw.exe wordt gestartIn dit artikel gaan we niet in op dw.exe, aangezien het een variant is van de eerdere loaders. In plaats daarvan richten we ons op de JavaScript-loader die wordt uitgevoerd met de Bun JavaScript-runtime.
Analyse van de JavaScript-loader
De JavaScript-code die door de Bun JavaScript-runtime wordt uitgevoerd, bevindt zich in de .bun sectie en is versleuteld.

.bun gedeelte met de versleutelde JavaScript-code De schadelijke code is in twee delen van de code geïmplementeerd:
sysreq.js: voert de anti-virtualisatiecontroles uit aan de hand van een puntensysteem.memload.js: communiceert met de C2-server, voert de ontsleuteling uit en laadt de volgende fase.

De loader voert verschillende PowerShell CIM-opdrachten (Common Information Model) en WMI-opdrachten (Windows Instrumentation) uit om virtuele omgevingen te detecteren. Er zijn verschillende controles met betrekking tot het aantal CPU's, schijfruimte, schermresolutie, USB-apparaten, hardwarefabrikanten en -producten, het aantal geïnstalleerde softwareprogramma's, de aanwezigheid van specifieke mappen zoals browsermappen, het aantal actieve processen en de gebruikersnaam. Er is een scoresysteem geïmplementeerd en op basis van deze score beslist de loader of de infectie wordt voortgezet of beëindigd.
Om een virtuele omgeving te detecteren, voert de loader meer dan 10 PowerShell-opdrachten uit, zoals:
Get-CimInstance -ClassName Win32_DiskDrive | Select-Object ModelGet-CimInstance -ClassName Win32_PhysicalMemory | Select-Object Manufacturer,SpeedGet-CimInstance -ClassName Win32_BIOS | Select-Object ManufacturerGet-CimInstance -ClassName Win32_BaseBoard | Select-Object Manufacturer,ProductGet-CimInstance -ClassName Win32_DiskDrive | Select-Object PNPDeviceID- (
Get-Process -ErrorAction SilentlyContinue).Count
De resultaten worden vergeleken met verschillende tekenreeksen, bijvoorbeeld:
- Virtualisatie-indicatoren: qemu, seabios, bochs, vbox, vmware, virtualbox, kvm, xen, parallels, virtio, vmbus, red hat, edk ii
- Gebruikersnaam sandbox: sandbox, malware, virus, sample, vmuser, wdagutilityaccount, defaultuser0
- MAC met virtuele omgevingen
De tekenreeksen worden gedecodeerd met behulp van XOR en Base64-decodering; er zijn arrays van tuples en elke array bevat de gecodeerde tekenreeksen en een sleutel die wordt gebruikt voor XOR-decodering.

Er zijn verschillende functies die tekstreeksen ontsleutelen, waaronder een functie die de configuratie ontsleutelt die bij de C2-communicatie wordt gebruikt. Gedeeltelijke configuratie:
C2 server: https://silent-harvester.cc
BUILD_ID: 0ddbfec60307
C2 Path: /api/status, /api/update
De loader haalt een eerste verzoek op en stuurt dit naar het eindpunt https://C2-server/api/report met versleutelde gegevens over het gehackte systeem:
- Openbaar IP-adres verkregen via een verzoek aan api.ipify.org.
- Systeeminformatie
- Anti-VM-resultaat
- Screenshot in Base-64-codering
- Tijdstempel
Vervolgens voert het twee GET-HTTP-verzoeken uit:
https://C2-server/api/status?v={BUILD_ID}, om het seed te verkrijgen dat wordt gebruikt voor het afleiden van de AES-sleutel.https://C2-server/api/update?v={BUILD_ID}, om de versleutelde payload met AES-nonce en authenticatietag te verkrijgen.
De volgende fase wordt gedecodeerd met AES-256-CBC, waarbij de door de C2 teruggestuurde AES-gegevens worden geladen met een zelfinjectie-loader via de volgende API’s:
VirtualAllocVirtualProtectLoadLibraryAGetProcAddressRtlAddFunctionTableCreateThreadSearchPathA
Deze Win32-API’s worden uitgevoerd via de Bun-module bun:ffi, waardoor JavaScript native bibliotheken kan aanroepen.
Aan het einde van dit proces werd NWHStealer in de onderzochte gevallen geïmplementeerd.
Indicatoren van compromissen (IOC's)
Domeinen
whale-ether[.]pro: NWH Stealer C2-server
cosmic-nebula[.]cc: NWH Stealer C2-server
silent-harvester[.]cc: Bun Loader C2-server
silent-orbit[.]cc: Bun Loader C2-server
support-onion[.]club: Bun Loader C2-server
Hash
d3a896f450561b2546b418b469a8e10949c7320212eb1c72b48e2b1e37c34ba5
96fe4ddfe256dc9d2c6faea7c18e2583cd9d9c0099a4ad2cf082f569ee8379f4
3710fb27d2032ef1eb1252ebf5c4dd516d2b2c0a83fb82c664c89e504b990fa9
33d07aa24b217f27df6a483295c817da198e12511a6989bcc6b917feaf8e491d
5427b4cefb329ed0e9585b3ce58a2788baf87e3b0c7221373f9bbd5f32c85b62
308da9f49ffa1d1744e428b567792ab22712159974e9da8d8e0414ecd81de93e
021838f30a43026084978bce187c165c6b640d8d474ec009d48078d21ec62025
c8e96b55f13435c4b43b7209d2403f1a0e0f9deb05edc50e0f777430be693b07
0614c4cc6375ab6bdcdd2dfa913a67d32c3e8be9b95a4a2aa09bb131b98191c8
0020999b2e3e4d1b2cfb69e4df9440d3ce05d508573889fdc12b724ce75a0cd8
0fa42df08cc467ec52b2d388b5575114a8ec067d13f6b1a653ec33fe879f88ca
15f79980650393d182f81cd6e389210568aa1f5f875e515efe6cb9485d64b7fb
20454ba58d509300fd694ae6159db4efa1b7ff965f98c29e7d087e20f96578c1
“Een van de beste cyberbeveiligingspakketten ter wereld.”
Volgens CNET.Lees hun recensie →





