Analisi statica ed estrazione del payload di NWH Stealer. Include un approfondimento sull'esecuzione fileless tramite Bun JavaScript Runtime, sul furto in memoria delle immagini degli appunti (image/png) e sull'esfiltrazione verso il C2 cloud sfruttando AWS/Cloudflare R2.
Il campione NWH Stealer caricato in Binary Ninja rivela una tecnica sorprendente: utilizza massicciamente stringhe, argomenti CLI e link alla documentazione di Bun (un runtime JavaScript legittimo). Incorporando testo legittimo come "Learn more about Bun" e link di invito a Discord, il malware tenta di mascherarsi da strumento o framework di sviluppo benigno, nascondendo al contempo la sua vera intenzione malevola nella sezione .rdata.
bun install --help / bun test --help / bun build --help – imita l'uso della CLI di Bun https://bun.com/docs / Join our Discord community: https://bun.com/discord – incorpora la documentazione ufficiale di Bun e i link alla community. markdown / ToAsymmetricMatcher / Invalid regex: bunx – messaggi di errore standard di Bun e matcher di test. Offuscamento: le stringhe sono intervallate da caratteri di controllo e codici di escape ANSI (ad es. [1m, [0m, \n), rendendo difficile la scansione statica delle firme.
Living off the Land (LotL): copiando stringhe legittime dal runtime Bun, NWH Stealer si confonde negli ambienti di sviluppo. Le soluzioni AV e le sandbox hanno meno probabilità di segnalare traffico o chiamate API provenienti da un ambiente di esecuzione che sembra "Bun". Offuscamento delle stringhe: incorporare stringhe legittime accanto ad array di payload cifrati o offuscati (data_143aba5b8) rende molto più difficile isolare gli indicatori malevoli effettivi. Evasione per progettazione: gli autori del malware hanno scelto specificamente uno strumento di sviluppo moderno e popolare (Bun) per mascherare la presenza dello stealer negli ambienti di sviluppo o CI/CD.

Proseguendo l'analisi in Binary Ninja, NWH Stealer rivela la sua catena di dropper ed esecuzione. Il malware non finge soltanto di essere Bun; contatta attivamente il repository GitHub ufficiale per scaricare l'archivio legittimo bun-windows-x64. Tuttavia, le stringhe successive espongono una routine di esecuzione PowerShell malevola progettata per eseguire il payload scaricato con flag di evasione.
URL di download: https://github.com/oven-sh/bun/releases/download/canary/bun-windows-x64-baseline.zip – scarica il runtime Bun legittimo per stabilire una copertura o utilizzarlo come LOLBin. Percorsi del payload estratto: bun-windows-x64-baseline\bun-profile.exe bun-windows-x64-baseline\bun.exe Catena di esecuzione PowerShell:
powershell
-NoProfile (salta il caricamento del profilo PowerShell dell'utente)
-ExecutionPolicy Bypass (aggira le restrizioni sull'esecuzione degli script)
-Command (esegue il comando inline)
--revision / --version (probabilmente usati come argomenti per il payload scaricato per farlo sembrare un controllo di versione legittimo).
Supply Chain / Abuso di GitHub: scaricando dal repository ufficiale github.com/oven-sh/bun, lo stealer aggira i filtri di rete che bloccano domini sconosciuti. Esecuzione LOLBin: il bun.exe o bun-profile.exe scaricato viene usato come wrapper legittimo per eseguire comandi malevoli, confondendosi con la normale attività di sviluppo. Evasione di PowerShell: i flag -NoProfile e -ExecutionPolicy Bypass sono tecniche classiche per garantire che lo script malevolo venga eseguito senza essere bloccato dalle policy di sistema o dalle configurazioni dell'utente.

Una sezione critica di NWH Stealer rivela il suo meccanismo di consegna del payload in memoria. La presenza della stringa http://localhost:data:;base64,, combinata con il bytecode del motore V8 (--filename, use asm, bytecode), indica che lo stealer utilizza una tecnica di esecuzione fileless. Costruisce un data URI codificato in Base64 e lo esegue localmente, probabilmente per iniettare JavaScript/WebAssembly malevolo direttamente in un ambiente in esecuzione senza scrivere un file su disco.
Schema Data URI: http://localhost:data:;base64 – costruisce un payload Base64 inline che punta a localhost. Si tratta di una tecnica nota per aggirare i filtri di rete ed eseguire codice dalla memoria. V8 / Node.js / *Bun Internals: // @bun / bun-cjs / bytecode – flag specifici utilizzati dal runtime Bun per eseguire JavaScript o bytecode V8 precompilato. --filename / --dirname / use asm – flag del motore V8 utilizzati per caricare e ottimizzare moduli WebAssembly o JavaScript grezzi in memoria. Artefatti del Payload Compilato: bundler\bundle_v2.zig – fa riferimento al bundler di Bun, rafforzando ulteriormente la copertura. SEHRefreshSigS / SEHRefreshSigS_57azaspm – probabili nomi di funzione offuscati o chiavi di cifratura per il payload Base64. Indicatori di Iniezione Fileless: seTaskComplete.read_file / resolve – routine asincrone di lettura di file/stream e di risoluzione dei moduli.
Esecuzione Fileless (Evasione): utilizzando un URI data:;base64, lo stealer esegue il proprio payload interamente in memoria. Ciò non lascia alcun file eseguibile sul disco che l'antivirus possa analizzare, aggirando il rilevamento tradizionale basato su firme. Abuso di localhost: il prefisso localhost inganna firewall ed EDR facendo loro credere che il traffico sia interno (e quindi sicuro), mentre il contenuto malevolo effettivo viene decodificato ed eseguito. Abuso del bytecode V8: caricare bytecode tramite --filename e use asm significa che lo stealer può eseguire JavaScript/WebAssembly grezzo e compilato, rendendo il reverse engineering notevolmente più difficile rispetto a semplici script in testo. Abuso del runtime Bun: le stringhe // @bun e bun-cjs confermano che lo stealer utilizza il runtime Bun scaricato come motore di esecuzione legittimo per il proprio codice malevolo in memoria.
Living off the Cloud: utilizzando servizi cloud legittimi (AWS, Cloudflare R2), lo stealer confonde il proprio traffico di esfiltrazione con il normale utilizzo aziendale del cloud, rendendo il rilevamento estremamente difficoltoso

La sezione espone ulteriormente il targeting da parte di NWH Stealer dell'infrastruttura cloud e delle risorse degli sviluppatori. Invece di affidarsi a un singolo IP C2 hardcoded, il malware include stringhe per i principali provider cloud (Cloudflare R2, AWS), toolchain per sviluppatori (Visual Studio, Node.js) e codici di stato HTTP. Ciò indica una risoluzione dinamica del C2 o un ampio elenco di raccolta di credenziali mirato agli ambienti cloud.