Los investigadores de Counter Threat Unit™ (CTU) siguen analizando las tendencias de la campaña Contagious Interview llevada a cabo por NICKEL ALLEY, un grupo de amenazas que opera en nombre del Gobierno de Corea del Norte. Este grupo se dedica a atacar a profesionales del sector tecnológico anunciando ofertas de trabajo falsas, engañando a los posibles candidatos mediante un proceso de entrevista de trabajo falso y, finalmente, distribuyendo malware.
En los ataques dirigidos, NICKEL ALLEY suele crear una página de empresa falsa en LinkedIn para ganar credibilidad y mantiene una cuenta de GitHub coordinada para la distribución de malware. En algunos casos, los autores de las amenazas han utilizado la popular táctica «ClickFix» para distribuir malware a través de tareas falsas de evaluación de habilidades laborales. Además, el grupo ha llevado a cabo ataques oportunistas comprometiendo repositorios de paquetes npm y creando paquetes npm con typosquatting. La figura 1 destaca las tres áreas de interés de NICKEL ALLEY.

Figura 1: victimología de NICKEL ALLEY
ClickFix infecta con PyLangGhost RAT
Desde al menos mediados de 2025, NICKEL ALLEY ha utilizado ClickFix para distribuir PyLangGhost RAT. El éxito de esta táctica, junto con el cambio frecuente de dominios de staging, indica que el malware siguió siendo eficaz para el grupo a lo largo de 2025. En múltiples ataques a lo largo de finales de 2025, el actor malicioso ordenó a un candidato a un puesto de trabajo que realizara tareas de entrevista falsas en una interfaz web controlada por el atacante. La táctica de ClickFix se implementaba cuando el sitio web mostraba un error informando a la víctima de que debía ejecutar un comando localmente para solucionar el problema (véase la Figura 2). En lugar de solucionar un problema, el comando inicia una serie de acciones que finalmente conducen al RAT PyLangGhost.

Figura 2: ejemplo de código VBScript parcialmente cortado de una infección
Al ejecutarse, el comando recupera un archivo comprimido de un dominio controlado por el atacante y lo guarda en el directorio %TEMP%. A continuación, descomprime el archivo mediante el cmdlet Expand-Archive de PowerShell. Por último, utiliza el comando wscript para ejecutar un archivo VBScript que inicia la cadena de infección. El nombre del archivo comprimido guardado en el disco suele contener «fix» o «patch» (por ejemplo, fixed.zip, patchesWin.zip). El nombre del archivo VBScript suele ser corto (por ejemplo, update.vbs, start.vbs).
El archivo VBScript usa el comando tar para descomprimir un archivo (Lib.zip) que contiene una biblioteca inofensiva y archivos de soporte. A continuación, usa el método Run de WScript.Shell para ejecutar un comando a través de cmd.exe: cmd /c csshost.exe nvidia.py (véase la Figura 3).

Figura 3: ejemplo de código VBScript parcialmente cortado de una infección
El archivo csshost.exe es una copia renombrada del binario legítimo python.exe. El ejecutable ejecuta un archivo Python (nvidia.py) que inicia la cadena de infección del RAT PyLangGhost. Los nombres de los archivos han variado ligeramente en cada infección, pero los patrones de nomenclatura se mantienen constantes. El binario se renombra con un nombre de archivo del sistema de Windows, y el nombre del archivo Python suele imitar a un archivo de controlador asociado.
El archivo Python es uno de los varios módulos de Python que componen el código general del RAT PyLangGhost. El malware permite la exfiltración de archivos, la ejecución de comandos arbitrarios y la elaboración de perfiles del sistema. También recopila credenciales y cookies del navegador. El malware se centra específicamente en los datos de las extensiones de navegador de carteras de criptomonedas de Chrome, lo que pone de relieve las continuas motivaciones financieras de NICKEL ALLEY.
El RAT PyLangGhost fue precedido por una versión basada en GoLang conocida como RAT GoLangGhost. Las primeras muestras de GoLangGhost RAT se observaron en el mundo real alrededor de febrero de 2025. Las muestras de PyLangGhost RAT se descubrieron en mayo, revelando que el código de GoLangGhost se había portado de forma aproximada al lenguaje Python.
El dominio de preparación del malware observado en uno de los ataques (talentacq[.]pro) se creó el 23 de septiembre y se observó en una campaña activa menos de dos semanas después. El nombre del dominio imita a una organización legítima de selección de personal. El dominio controlado por el atacante mostraba una página de error 404 personalizada que contenía una palabra mal escrita («opps») y una frase inusual («Tu enlace de evaluación podría no ser válido o haber caducado»), lo que concuerda con actividades previas de ingeniería social con ofertas de trabajo falsas (véase la Figura 4).

Figura 4: captura de pantalla de la página 404 personalizada alojada en el dominio de preparación del malware
La página 404 personalizada podría ser un señuelo, ya que este dominio distribuía malware a través de un comando curl. Si una víctima visita el dominio en un navegador web para verificarlo antes de ejecutar el comando curl especificado en el ataque ClickFix, el error sugiere que simplemente hay un problema con el «enlace de evaluación» proporcionado por el atacante. Es posible que la víctima no sospeche de un dominio malicioso. En otro ataque observado, el dominio publicshare[.]org se registró y se utilizó en una campaña el mismo día de agosto.
Repositorios de código utilizados para infectar los sistemas de los desarrolladores
En octubre, los analistas de Sophos observaron un ataque dirigido en el que los autores de la amenaza convencieron a una víctima para que descargara (clonara) el contenido de un repositorio de GitHub y ejecutara el código localmente utilizando los comandos «npm install» y «npm start». La cuenta de GitHub (astrasbytesyncs) se hace pasar por una empresa de desarrollo de software especializada en desarrollo web full stack y soluciones de blockchain (véase la Figura 5). La cuenta contiene enlaces a un sitio web «oficial» de la empresa (hxxps://astrabytesyncs[.]com) y a la supuesta página de la empresa en LinkedIn.

Figura 5: cuenta de GitHub de Astra Byte Sync
La página de inicio del sitio web es genérica y anuncia «talento tecnológico» y soluciones de servicios gestionados (véase la Figura 6). El título de la página web sugiere que el sitio se creó utilizando una plantilla genérica, ya que aún contiene el texto «Soluciones de TI y plantilla corporativa». La página de LinkedIn a la que se hace referencia en la cuenta de GitHub indica un dominio diferente (astra[.]com) como sitio web de la empresa. El análisis reveló que astra[.]com pertenece a una empresa aeroespacial legítima. La inclusión de dominios diferentes en la página falsa de la empresa en LinkedIn y en la cuenta de GitHub pone de manifiesto la incoherencia de los autores de la amenaza y su falta de atención al detalle.

Figura 6: captura de pantalla del sitio web de Astra Byte Sync
Una publicación de X de junio de 2025 advertía de una campaña que incluía correos electrónicos dirigidos que promocionaban oportunidades de empleo en la falsa empresa Astra Byte Sync. Sin embargo, los autores de la amenaza aún no habían creado el sitio web en el momento en que se enviaron los correos, por lo que la página simplemente mostraba la página predeterminada del proveedor de alojamiento. El repositorio de GitHub asociado, utilizado para distribuir malware en esta campaña, afirma ser una plataforma de juegos criptográficos Web3 (véase la Figura 7). El tema de estos señuelos coincide con los ataques de los autores de amenazas norcoreanos dirigidos a desarrolladores de Web3 a lo largo de 2025 con el objetivo de robar criptomonedas.

Figura 7: repositorio malicioso disfrazado de juego de criptomonedas falso
El repositorio (web3-social-platform) contenía un archivo llamado index.js que gestionaba la conexión de red con el servidor de preparación del malware. Una variable llamada AUTH_API_KEY, almacenada en un archivo llamado .env, contiene una URL codificada en Base64 que apunta al servidor de preparación del malware. El código de index.js implementa la API fetch de Node.js para enviar una solicitud HTTP a esa URL y recuperar el malware BeaverTail (véase la figura 8). A lo largo de finales de 2025, los actores maliciosos prefirieron el proveedor de la plataforma en la nube Vercel. La plataforma anuncia compatibilidad con el desarrollo web tanto del lado del cliente como del servidor. Los actores maliciosos han sacado partido a este proveedor de plataforma como servicio porque les permite alojar múltiples cargas útiles, y pueden elegir qué carga útil entregar en función de la víctima específica y la configuración del sistema. La carga útil recuperada se ejecuta entonces localmente mediante el método eval().

Figura 8: solicitud HTTP GET para recuperar BeaverTail
NICKEL ALLEY lleva desde 2024 utilizando este enfoque para engañar a desarrolladores desprevenidos y que infecten sus propios sistemas con malware. Los repositorios de GitHub propiedad de los atacantes suelen contener código sencillo y ofuscado para descargar el malware BeaverTail u OtterCookie.
A finales de 2025, NICKEL ALLEY creó repositorios de código que contenían «tareas» de Visual Studio Code (VS Code). Ubicadas en el archivo de configuración .vscode/tasks.json, las tareas de VS Code son una función legítima que se suele usar para ayudar a automatizar scripts de compilación o para realizar pruebas y depuración rápidas de código. Sin embargo, los actores maliciosos las han usado para ejecutar comandos curl o wget con el fin de recuperar malware según el sistema operativo de la víctima. La tarea está configurada para ejecutarse cuando se abre la carpeta principal del archivo de configuración (.vscode) en la aplicación VS Code. Este comportamiento de ejecución se configura a través de la propiedad runOptions:runOn. Como muestra el fragmento de código de la Figura 9, los atacantes también han utilizado Vercel para alojar la carga útil en estos ataques.

Figura 9: archivo de configuración tasks.json de VS Code utilizado por NICKEL ALLEY (cortado por brevedad)
El historial de commits de GitHub de los códigos base de NICKEL ALLEY suele reflejar que la URL de almacenamiento del malware se ha eliminado en uno de los commits del código. Este enfoque permite a los atacantes ocultar la infraestructura y los comandos maliciosos cuando el repositorio no está en uso activo. Además, pone de relieve que los atacantes solo necesitan cambiar unas pocas líneas de código para redirigir la descarga de la carga útil a un servidor de almacenamiento de malware diferente.
NICKEL ALLEY actualiza su infraestructura de red para adaptarla a sus señuelos de ingeniería social y evadir las detecciones. El grupo suele dirigirse a trabajadores del sector tecnológico abiertos a oportunidades de trabajo autónomo u otras ofertas, y siguió desplegando el malware PyLangGhost mediante la táctica ClickFix hasta finales de 2025. Los atacantes suelen convencer a las víctimas para que ejecuten el malware en sus sistemas corporativos, exponiendo así a las organizaciones a esta amenaza. Dada la popularidad de la táctica ClickFix en diversas campañas ciberdelictivas y patrocinadas por Estados, todas las organizaciones deberían supervisar la ejecución de comandos resultante de los datos del portapapeles del navegador. Además, los defensores deberían estar atentos a comandos sospechosos que impliquen una combinación de curl, PowerShell y el lanzamiento de ejecutables desde el directorio %TEMP%.
Aunque estos ataques parecen tener como objetivo principal el robo de criptomonedas, el grupo de amenazas ha demostrado su intención de utilizar el acceso inicial para comprometer aún más la cadena de suministro o para llevar a cabo espionaje corporativo. Las persistentes peticiones a las víctimas para que ejecuten código en sus sistemas corporativos en lugar de en un portátil personal refuerzan esta intención. Además, el grupo de amenazas ha seleccionado estratégicamente las cargas útiles posteriores basándose en el perfil del sistema de las víctimas. Los desarrolladores de software, especialmente los del sector financiero y tecnológico, corren un riesgo elevado debido al perfil de objetivos de NICKEL ALLEY. Las organizaciones deben supervisar la ejecución de comandos y el tráfico de red que se genera a partir de procesos de Node.js, ya que puede indicar la descarga de malware. Como práctica de seguridad general, las organizaciones deben animar a los empleados a informar de cualquier contacto sospechoso no solicitado en redes sociales o por correo electrónico relacionado con la contratación.
Detecciones e indicadores de amenaza
SophosLabs ha desarrollado las siguientes detecciones para esta amenaza:
- Troj/PySteal-AW
- Troj/PyAgent-AS
- Troj/PyAgent-AU
- Troj/Pysteal-AY
- Troj/PyAgent-AP
Los indicadores de amenaza de la Tabla 1 se pueden usar para detectar actividad relacionada con esta amenaza. Ten en cuenta que las direcciones IP pueden reasignarse. Los dominios, las URL y las direcciones IP pueden contener contenido malicioso, así que valora los riesgos antes de abrirlos en un navegador.
| Indicador | Tipo | Contexto |
| hxxps://github[.]com/astrasbytesyncs/web3-social-platform | URL | Repositorio de GitHub gestionado por NICKEL ALLEY |
| astrabytesyncs[.]com | Nombre de dominio | Sitio web falso de una empresa gestionado por NICKEL ALLEY |
| astrabytesync[.]com | Nombre de dominio | Sitio web falso de una empresa gestionado por NICKEL ALLEY |
| hxxps://rgg-vercel[.]vercel[.]app/api/data | URL | Servidor de preparación de malware de NICKEL ALLEY |
| hxxps://ake-test[.]vercel[.]app/api/data | URL | Servidor de preparación de malware de NICKEL ALLEY |
| hxxps://astrahub[.]vercel[.]app/api/data | URL | Servidor de preparación de malware de NICKEL ALLEY |
| hxxps://rgg-test[.]vercel[.]app/api/data | URL | Servidor de preparación de malware de NICKEL ALLEY |
| hxxps://astraluck-vercel[.]vercel[.]app/api/dat | URL | Servidor de preparación de malware de NICKEL ALLEY |
| 52f173a760db5d68e52ba1f1ac51c023 | Hash MD5 | Archivo VBScript usado por NICKEL ALLEY (start.vbs) |
| 2151d4d7dc8d6dca7242928a17ea3fb14f58ccef | Hash SHA1 | Archivo VBScript usado por NICKEL ALLEY (start.vbs) |
| 5e307ef3aa9f20d963382700173530cdc455c1523631bbe22ede3710a2a30373 | Hash SHA256 | Archivo VBScript usado por NICKEL ALLEY (start.vbs) |
| e9b9d86a22f9795d42632650a78d57df | Hash MD5 | RAT PyLangGhost utilizado por NICKEL ALLEY(nvidia.py) |
| de05ecc9f0136246d0160923108026660eee06e6 | Hash SHA1 | RAT PyLangGhost utilizado por NICKEL ALLEY(nvidia.py) |
| 1b42fc77155bd78b098e0b72440dd72d6154312569e6ba46f1e5dc94b31c6b42 | Hash SHA256 | RAT PyLangGhost utilizado por NICKEL ALLEY (nvidia.py) |
| a55629dc112ee133ac8dba80549cb0c7 | Hash MD5 | Archivo VBScript usado por NICKEL ALLEY (update.vbs) |
| 0f010280ee2a91a57b0edf8f18c0091ce741d4e7 | Hash SHA1 | Archivo VBScript usado por NICKEL ALLEY (update.vbs) |
| 5ee13db6a646a9de00bbeec6030677e412bfeecdca226b1ff035e07927970ce0 | Hash SHA256 | Archivo VBScript usado por NICKEL ALLEY (update.vbs) |
| 1d652e7ab71621c7245bfbf84bacdc3e | Hash MD5 | RAT PyLangGhost utilizado por NICKEL ALLEY (audiodriver.py) |
| ac26ecf52002d87f3ba89f9e1b0742eed9e75e3d | Hash SHA1 | RAT PyLangGhost utilizado por NICKEL ALLEY (audiodriver.py) |
| 58c1e49c67e5b7bcf10d30e370685d10c2fa263f24b8d099a97005c7a35f1346 | Hash SHA256 | RAT PyLangGhost utilizado por NICKEL ALLEY (audiodriver.py) |
| talentacq[.]pro | Nombre de dominio | Servidor de preparación de malware de NICKEL ALLEY para PyLangGhost RAT |
| 95[.]169[.]180[.]140 | Dirección IP | Servidor C2 de PyLangGhost RAT usado por NICKEL ALLEY |
| publicshare[.]org | Nombre de dominio | Servidor de preparación de malware de NICKEL ALLEY para PyLangGhost RAT |
| 144[.]172[.]93[.]88 | Dirección IP | Servidor C2 de PyLangGhost RAT usado por NICKEL ALLEY |
| hxxps://vscode-ext-git[.]vercel[.]app | URL | Servidor de preparación de malware de NICKEL ALLEY |
| hxxps://github[.]com/mishalepo/test-project | URL | Repositorio de GitHub usado por NICKEL ALLEY para ingeniería social y distribución de malware
|
| chainlink-api-v3[.]com | Nombre de dominio | Servidor de preparación de malware de NICKEL ALLEY |
Tabla 1: Indicadores de esta amenaza

