Los investigadores de ciberseguridad han revelado una nueva versión del actual Entrevista contagiosa campaña, en la que los actores de amenazas norcoreanos publicaron un conjunto de 26 paquetes maliciosos en el registro de npm.
Los paquetes se hacen pasar por herramientas para desarrolladores, pero contienen funciones para extraer el comando y control (C2) real mediante el uso de contenido aparentemente inofensivo de Pastebin como un solucionador sin salida y, en última instancia, eliminar un troyano de acceso remoto y ladrón de credenciales dirigido a los desarrolladores. La infraestructura C2 está alojada en Vercel en 31 despliegues.
El campaña , rastreado por Socket y Kieran Miyamoto, de kmsec.uk, está siendo rastreado con el apodo Stega Bin .
«El cargador extrae las URL C2 codificadas esteganográficamente en tres pastas de Pastebin, ensayos inocuos de informática en los que se sustituyen los caracteres en posiciones uniformemente espaciadas para deletrear direcciones de infraestructura ocultas», dijeron los investigadores de Socket Philipp Burckhardt y Peter van der Zee dijo .
adsenseLa lista de paquetes npm maliciosos es la siguiente:
- argonista @0 .41.0
- Cifrado @6 .5.2
- bee-quarl @2 .1.2
- bubble-core @6 .26.2
- corstoken @2 .14.7
- daytonjs @1 .11.20
- ether-lint @5 .9.4
- expressjs-lint @5 .3.2
- fastify-lint @5 .8.0
- inestimable @3 .5.7
- hapi-lint @19 .1.2
- iosysredis @5 .13.2
- jslint-config @10 .22.2
- jsnwebapptoken @8 .40.2
- kafkajs-lint @2 .21.3
- loadash-lint @4 .17.24
- mqttoken @5 .40.2
- prism-lint @7 .4.2
- promanage @6 .0.21
- secuenciación @6 .40.2
- typoriem @0 .4.17
- undicy-lint @7 .23.1
- uuindex @13 .1.0
- vitetest-lint @4 .1.21
- windowston @3 .19.2
- zoddle @4 .4.2
Todos los paquetes identificados vienen con un script de instalación (» install.js «) que se ejecuta automáticamente durante la instalación del paquete y, a su vez, ejecuta la carga maliciosa ubicada en «vendor/scrypt-js/version.js». Otro aspecto común que une a los 26 paquetes es que declaran explícitamente el paquete legítimo que están escribiendo como una dependencia, probablemente para intentar que parezcan creíbles.
La carga útil sirve como decodificador de esteganografía de texto al contactar con una URL de Pastebin y extraer su contenido para recuperar las URL reales de Vercel C2. Si bien las pastas parecen contener un ensayo benigno sobre informática, el decodificador está diseñado para analizar caracteres específicos en determinadas posiciones del texto y encadenarlos para crear una lista de dominios C2.
«El decodificador elimina los caracteres Unicode de ancho cero, lee un marcador de 5 dígitos desde el principio, calcula las posiciones de los caracteres espaciadas uniformemente en todo el texto y extrae los caracteres en esas posiciones», explica Socket. «Los caracteres extraídos se dividen luego en un separador ||| (con un marcador de terminación ===END===) para obtener una matriz de nombres de dominio C2".
Luego, el malware llega al dominio decodificado para obtener cargas útiles específicas de la plataforma para Windows, macOS y Linux, una táctica muy utilizada en la campaña Contagious Interview. Se ha descubierto que uno de esos dominios, «ext-checkdin.vercel [.] app», contiene un script de shell que, a continuación, contacta con la misma URL para recuperar un componente RAT.
El troyano se conecta a 103.106.67 [.] 63:1244 para esperar más instrucciones que le permitan cambiar el directorio actual y ejecutar comandos de shell, a través de los cuales se despliega una completa suite de recopilación de inteligencia. Contiene nueve módulos para facilitar la persistencia del código de Microsoft Visual Studio (VS Code), el registro de teclas y el robo del portapapeles, la recolección de credenciales del navegador, el escaneo secreto de TruffleHog y la exfiltración de claves SSH y del repositorio de Git -
- contra , que usa un archivo tasks.json malicioso para contactar con un dominio de Vercel cada vez que se abre un proyecto en VS Code aprovechando el disparador RunOn: «FolderOpen». El módulo analiza específicamente el directorio de configuración de VS Code de la víctima en las tres plataformas y escribe directamente en él el archivo malicioso tasks.json.
- clip , que actúa como registrador de teclas, rastreador de ratón y ladrón de portapapeles, permite el seguimiento activo de las ventanas y realiza exfiltraciones periódicas cada 10 minutos.
- hermano , que es una carga útil de Python para robar los almacenes de credenciales del navegador.
- j , que es un módulo de Node.js que se utiliza para robar criptomonedas y navegadores dirigido a Google Chrome, Brave, Firefox, Opera y Microsoft Edge, y a extensiones como MetaMask, Phantom, Coinbase Wallet, Binance, Trust, Exodus y Keplr, entre otras. En macOS, también apunta al llavero de iCloud.
- z , que enumera el sistema de archivos y roba los archivos que coinciden con ciertos patrones predefinidos.
- n , que actúa como una RAT para conceder al atacante la capacidad de controlar de forma remota el host infectado en tiempo real a través de una conexión WebSocket persistente a 103.106.67 [.] 63:1247 y filtrar los datos de interés a través de FTP.
- trufa , que descarga el legítimo Escáner de secretos TruffleHog desde la página oficial de GitHub para descubrir y filtrar los secretos de los desarrolladores.
- imbécil , que recopila archivos de los directorios.ssh, extrae las credenciales de Git y escanea los repositorios.
- sched , que es lo mismo que "vendor/scrypt-js/version.js" y se reimplementa como mecanismo de persistencia.
«Si bien las oleadas anteriores de la campaña Contagious Interview se basaban en scripts maliciosos relativamente sencillos y cargas útiles alojadas en Bitbucket, esta última versión demuestra un esfuerzo concertado para eludir tanto la detección automática como la revisión humana», concluye Socket.
«El uso de la esteganografía a nivel de caracteres en las rutas de Pastebin y Vercel en varias etapas apunta a un adversario que está perfeccionando sus técnicas de evasión e intentando hacer que sus operaciones sean más resilientes».
La revelación se produce cuando también se ha observado a actores norcoreanos publicando paquetes npm maliciosos (por ejemplo, express-core-validator) para obtener una carga útil de JavaScript de la siguiente etapa alojada en Google Drive.
«Solo se ha publicado un paquete con esta nueva técnica», Miyamoto dijo . «Es probable que FAMOUS CHOLLIMA siga aprovechando múltiples técnicas e infraestructuras para ofrecer cargas útiles de seguimiento. Es poco probable que esto indique una revisión completa de su comportamiento en el escenario en las npm».
Fuentes de Información: THEHACKERNEWS