Hackers norcoreanos publican 26 paquetes npm maliciosos con RAT multiplataforma
Investigadores de ciberseguridad han descubierto una nueva iteración de la campaña 'Contagious Interview', donde actores de amenazas norcoreanos publicaron 26 paquetes maliciosos en el registro npm. Estos paquetes se disfrazan de herramientas de desarrollador, pero extraen comandos y control (C2) mediante contenido aparentemente inofensivo de Pastebin, desplegando un 'credential stealer' y un troyano de acceso remoto (RAT) dirigidos a desarrolladores.
Técnicas de Ofuscación y Esteganografía
La infraestructura C2 está alojada en Vercel a través de 31 despliegues. La campaña, rastreada por Socket y Kieran Miyamoto de kmsec.uk, se conoce como StegaBin. El cargador extrae las URL de C2 codificadas esteganográficamente dentro de tres publicaciones de Pastebin que simulan ser ensayos de informática. Caracteres espaciados uniformemente han sido reemplazados para deletrear direcciones de infraestructura ocultas.
- Los paquetes maliciosos incluyen un script de instalación ('install.js') que se ejecuta automáticamente durante la instalación del paquete, ejecutando la carga maliciosa ubicada en 'vendor/scrypt-js/version.js'.
- Los 26 paquetes declaran explícitamente el paquete legítimo que están 'typosquatting' como una dependencia, intentando parecer creíbles.
Funcionamiento del Malware
El malware contacta una URL de Pastebin y extrae su contenido para recuperar las URL reales de C2 Vercel. Aunque las publicaciones parecen contener ensayos sobre informática, el decodificador extrae caracteres específicos en ciertas posiciones del texto para crear una lista de dominios C2. El decodificador elimina caracteres Unicode de ancho cero, lee un marcador de longitud de 5 dígitos al principio, calcula posiciones de caracteres espaciadas uniformemente y extrae los caracteres en esas posiciones. Los caracteres extraídos se dividen en un separador ||| (con un marcador de terminación ===END===) para producir una matriz de nombres de dominio C2.
El malware se conecta al dominio decodificado para obtener cargas específicas para Windows, macOS y Linux. Un dominio encontrado, "ext-checkdin.vercel[.]app", sirve un script shell que contacta la misma URL para recuperar un componente RAT. El troyano se conecta a 103.106.67[.]63:1244 para recibir instrucciones, cambiar el directorio actual y ejecutar comandos shell, desplegando una suite completa de recopilación de inteligencia.
Capacidades del RAT
El RAT contiene nueve módulos para facilitar la persistencia en Microsoft Visual Studio Code (VS Code), el registro de pulsaciones de teclas y el robo del portapapeles, la recolección de credenciales del navegador, el escaneo de secretos de TruffleHog y la exfiltración de repositorios Git y claves SSH:
- vs: Utiliza un archivo tasks.json malicioso para contactar un dominio Vercel cada vez que se abre un proyecto en VS Code.
- clip: Actúa como keylogger, rastreador de ratón y ladrón de portapapeles.
- bro: Payload de Python para robar almacenes de credenciales del navegador.
- j: Módulo Node.js para robo de navegadores y criptomonedas.
- z: Enumera el sistema de archivos y roba archivos que coinciden con patrones predefinidos.
- n: Actúa como un RAT para controlar remotamente el host infectado en tiempo real.
- truffle: Descarga el escáner de secretos TruffleHog legítimo desde GitHub.
- git: Recopila archivos de directorios .ssh, extrae credenciales de Git y escanea repositorios.
- sched: Mecanismo de persistencia.
Contexto
Esta campaña demuestra un esfuerzo concertado para eludir la detección automatizada y la revisión humana. El uso de esteganografía a nivel de caracteres en Pastebin y el enrutamiento Vercel de múltiples etapas sugieren un adversario que está refinando sus técnicas de evasión y buscando hacer sus operaciones más resilientes. Anteriormente, se observó a los actores norcoreanos publicando paquetes npm maliciosos para obtener un payload JavaScript alojado en Google Drive.