Análisis estático y extracción de payload de NWH Stealer. Incluye un análisis profundo de la ejecución sin archivos mediante Bun JavaScript Runtime, el robo de imágenes del portapapeles en memoria (image/png) y la exfiltración a C2 en la nube abusando de AWS/Cloudflare R2.
La muestra de NWH Stealer cargada en Binary Ninja revela una técnica sorprendente: utiliza en gran medida cadenas, argumentos de CLI y enlaces de documentación de Bun (un entorno de ejecución de JavaScript legítimo). Al incrustar texto legítimo como "Learn more about Bun" y enlaces de invitación a Discord, el malware intenta hacerse pasar por una herramienta o framework de desarrollo benigno, mientras oculta su verdadera intención maliciosa en la sección .rdata.
bun install --help / bun test --help / bun build --help – imita el uso de la CLI de Bun https://bun.com/docs / Join our Discord community: https://bun.com/discord – incrusta documentación oficial de Bun y enlaces a la comunidad. markdown / ToAsymmetricMatcher / Invalid regex: bunx – mensajes de error estándar de Bun y comparadores de test. Ofuscación: Las cadenas están intercaladas con caracteres de control y códigos de escape ANSI (p. ej., [1m, [0m, \n), lo que dificulta el escaneo estático de firmas.
Living off the Land (LotL): Al copiar cadenas legítimas del entorno de ejecución de Bun, NWH Stealer se camufla en entornos de desarrollador. Es menos probable que las soluciones antivirus y los sandboxes marquen el tráfico o las llamadas a la API que provienen de un entorno de ejecución que parece "Bun". Ofuscación de cadenas: Incrustar cadenas legítimas junto a arrays de payload cifrados u ofuscados (data_143aba5b8) hace mucho más difícil aislar los indicadores maliciosos reales. Evasión por diseño: Los autores del malware eligieron específicamente una herramienta de desarrollo moderna y popular (Bun) para disfrazar la presencia del stealer en entornos de desarrollador o CI/CD.

Continuando el análisis en Binary Ninja, NWH Stealer revela su dropper y su cadena de ejecución. El malware no solo finge ser Bun; se conecta activamente al repositorio oficial de GitHub para descargar el archivo legítimo bun-windows-x64. Sin embargo, las cadenas posteriores exponen una rutina de ejecución maliciosa de PowerShell diseñada para ejecutar el payload descargado con indicadores de evasión.
URL de descarga: https://github.com/oven-sh/bun/releases/download/canary/bun-windows-x64-baseline.zip – descarga el entorno de ejecución legítimo de Bun para establecer una coartada o usarlo como LOLBin. Rutas del payload extraído: bun-windows-x64-baseline\bun-profile.exe bun-windows-x64-baseline\bun.exe Cadena de ejecución de PowerShell:
powershell
-NoProfile (omite la carga del perfil de PowerShell del usuario)
-ExecutionPolicy Bypass (omite las restricciones de ejecución de scripts)
-Command (ejecuta el comando en línea)
--revision / --version (probablemente se usan como argumentos para el payload descargado para que parezca una comprobación de versión legítima).
Cadena de suministro / Abuso de GitHub: Al descargar desde el repositorio oficial github.com/oven-sh/bun, el stealer omite los filtros de red que bloquean dominios desconocidos. Ejecución de LOLBin: El bun.exe o bun-profile.exe descargado se usa como un wrapper legítimo para ejecutar comandos maliciosos, camuflándose entre la actividad normal de desarrollo. Evasión de PowerShell: Los indicadores -NoProfile y -ExecutionPolicy Bypass son técnicas clásicas para garantizar que el script malicioso se ejecute sin ser bloqueado por las políticas del sistema o las configuraciones del usuario.

Una sección crítica de NWH Stealer revela su mecanismo de entrega de payload en memoria. La presencia de la cadena http://localhost:data:;base64,, combinada con bytecode del motor V8 (--filename, use asm, bytecode), indica que el stealer utiliza una técnica de ejecución sin archivos. Construye un data URI codificado en Base64 y lo ejecuta localmente, probablemente para inyectar JavaScript/WebAssembly malicioso directamente en un entorno en ejecución sin escribir un archivo en el disco.
Esquema Data URI: http://localhost:data:;base64, – construye una carga útil Base64 en línea apuntando a localhost. Esta es una técnica conocida para eludir filtros de red y ejecutar código desde memoria. V8 / Node.js / *Bun Internals: // @bun / bun-cjs / bytecode – flags específicos utilizados por el runtime de Bun para ejecutar JavaScript o bytecode V8 precompilado. --filename / --dirname / use asm – flags del motor V8 utilizados para cargar y optimizar módulos WebAssembly o JavaScript en bruto en memoria. Artefactos de Carga Útil Compilada: bundler\bundle_v2.zig – hace referencia al bundler de Bun, consolidando aún más la historia de cobertura. SEHRefreshSigS / SEHRefreshSigS_57azaspm – probablemente nombres de funciones ofuscados o claves de cifrado para la carga útil Base64. Indicadores de Inyección Sin Archivos: seTaskComplete.read_file / resolve – rutinas asíncronas de lectura de archivos/flujos y resolución de módulos.
Ejecución Sin Archivos (Evasión): Al usar un URI data:;base64, el stealer ejecuta su carga útil completamente en memoria. Esto no deja ningún archivo ejecutable en el disco para que el AV lo escanee, eludiendo la detección tradicional basada en firmas. Abuso de Localhost: El prefijo localhost engaña a los firewalls y EDRs haciéndoles creer que el tráfico es interno (y por lo tanto seguro), mientras que el contenido malicioso real se decodifica y ejecuta. Abuso de Bytecode V8: Cargar bytecode mediante --filename y use asm significa que el stealer puede ejecutar JavaScript/WebAssembly compilado en bruto, haciendo la ingeniería inversa significativamente más difícil que con scripts de texto plano. Abuso del Runtime Bun: Las cadenas // @bun y bun-cjs confirman que el stealer está utilizando el runtime de Bun descargado como un motor de ejecución legítimo para su código malicioso en memoria.
Living off the Cloud: Al usar servicios en la nube legítimos (AWS, Cloudflare R2), el stealer mezcla su tráfico de exfiltración con el uso normal de la nube empresarial, haciendo la detección extremadamente difícil

La sección expone además el direccionamiento de NWH Stealer hacia infraestructura en la nube y activos de desarrolladores. En lugar de depender de una única IP de C2 codificada de forma fija, el malware incluye cadenas para los principales proveedores de nube (Cloudflare R2, AWS), cadenas de herramientas de desarrollo (Visual Studio, Node.js) y códigos de estado HTTP. Esto indica una resolución dinámica de C2 o una extensa lista de recolección de credenciales dirigida a entornos en la nube.