Cazando a Lazarus: Dentro de la Infraestructura C2 de la Entrevista Contagiosa
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Red Asgard informó de un compromiso de la cadena de suministro vinculado a un proyecto de criptomoneda promovido a través de Upwork, donde los operadores de Lazarus incrustaron código malicioso en el proceso de compilación/flujo de trabajo. La cadena abusa de la auto-ejecución de tareas de VSCode, una puerta trasera de Node.js implementada a través del constructor de Function y una entrega de carga útil protegida por cookies para obtener JavaScript malicioso desde infraestructura de comando y control alojada en Vercel. La pila de C2 está dividida en dominios de Vercel de primera etapa y servidores dedicados a Windows de segunda etapa, que entregan una puerta trasera de Python fuertemente ofuscada con funcionalidad de minería XMRig. La campaña también utiliza muertos de Pastebin, un protocolo binario personalizado, y una compartimentación estricta de credenciales para complicar el análisis y la eliminación.
Investigación
Los investigadores enumeraron tres dominios de Vercel que exponen puntos finales autenticados por token e identificaron cinco sistemas C2 dedicados ejecutando Express.js on puerto 1244. También documentaron una técnica de oráculo de tiempo usada para inferir o enumerar tokens de campaña activos. La ingeniería inversa de un carga útil de 64 capas obfuscated payload ultimately revealed a trojanized component that persists via Startup folder placement and scheduled task creation. Additional findings included hard-coded MongoDB credentials, approximately 1,000 Pastebin dead-drop URLs, and custom Z238 binary protocol listeners on multiple ports.
Mitigación
Bloquee las comunicaciones salientes a los dominios de Vercel identificados y restrinja la salida a los puertos 1244, 1249 y 22411-22412. Monitoree la creación de Windows Update Script.pyw en ubicaciones de Inicio, tareas programadas llamadas “Runtime Broker” y la ejecución sospechosa de msedge.exe consistente con suplantación de mineros. Detecte procesos de Node.js que invoquen Function.constructor y actividad HTTP POST anómala a puntos finales de /keys. Reduzca la exposición desactivando las tareas de ejecución automática de VSCode y revisando los scripts de paquetes antes de ejecutar npm install o realizar pasos de compilación en repositorios no confiables.
Respuesta
Si se observan indicadores, aísle el sistema afectado, termine los procesos sospechosos y preserve los artefactos de memoria y disco para revisión forense. Revoque cualquier credencial de MongoDB expuesta y rote todos los secretos de cuentas de servicio relevantes. Realice un inventario de cuentas y acceso para identificar usuarios afectados, luego restablezca credenciales e invalide sesiones/tokens activos. Notifique a las partes interesadas internas y coordine con la aplicación de la ley si hay evidencia de robo de criptomonedas o compromiso de billeteras.
«graph TB %% Definiciones de clase classDef technique fill:#cce5ff classDef artifact fill:#e2f7d6 %% Paso 1 u2013 Phishing vía Servicio tech_phishing[«<b>Técnica</b> – <b>T1566.003 Phishing: Spearphishing vía Servicio</b><br/><b>Descripción</b>: El atacante se hizo pasar por un freelancer en Upwork y publicó una entrevista de trabajo falsa para entregar un repositorio de código malicioso.»] class tech_phishing technique artifact_upwork[«<b>Artefacto</b> – <b>Nombre</b>: Publicación de Trabajo Falsa en Upwork<br/><b>Propósito</b>: Engañar a la víctima para que descargue el repositorio malicioso.»] class artifact_upwork artifact tech_phishing u002du002d>|entrega| artifact_upwork %% Paso 2 u2013 Compromiso de la Cadena de Suministro tech_supplychain[«<b>Técnica</b> – <b>T1195.001 Compromiso de la Cadena de Suministro: Comprometer Dependencias de Software y Herramientas de Desarrollo</b><br/><b>Descripción</b>: Código malicioso VSCode <code>tasks.json</code> y JavaScript inyectado en el repositorio.»] class tech_supplychain technique artifact_tasksjson[«<b>Artefacto</b> – <b>Nombre</b>: VSCode <code>tasks.json</code><br/><b>Contenido</b>: Definición de tarea maliciosa que invoca el constructor de la función JavaScript y <code>getCookie()</code>.»] class artifact_tasksjson artifact artifact_upwork u002du002d>|contiene| artifact_tasksjson artifact_tasksjson u002du002d>|activa| tech_supplychain %% Paso 3 u2013 Ejecución por el Usuario tech_userexec[«<b>Técnica</b> – <b>T1204.002 Ejecución de Usuario: Archivo Malicioso</b><br/><b>Descripción</b>: La víctima abrió la carpeta del proyecto en VSCode, desencadenando la autoejecución de las tareas maliciosas.»] class tech_userexec technique artifact_tasksjson u002du002d>|desencadenado por| tech_userexec %% Paso 4 u2013 Ejecución de JavaScript tech_jsexec[«<b>Técnica</b> – <b>T1059.007 Intérprete de Comandos y Secuencias de Comandos: JavaScript</b><br/><b>Descripción</b>: JavaScript ejecutado a través de tareas de VSCode y constructor de función para descargar cargas adicionales.»] class tech_jsexec technique tech_userexec u002du002d>|conduce a| tech_jsexec %% Paso 5 u2013 Puerta Trasera en Python tech_python[«<b>Técnica</b> – <b>T1059.006 Intérprete de Comandos y Secuencias de Comandos: Python</b><br/><b>Descripción</b>: Puerta trasera en Python fuertemente ofuscada (<code>bro_*.js</code>) descargada y ejecutada en el host de la víctima.»] class tech_python technique artifact_python_backdoor[«<b>Artefacto</b> – <b>Nombre</b>: Puerta Trasera Ofuscada de Python (<code>bro_*.js</code>)<br/><b>Características</b>: Codificación y decodificación en múltiples capas.»] class artifact_python_backdoor artifact tech_jsexec u002du002d>|descarga| artifact_python_backdoor artifact_python_backdoor u002du002d>|ejecuta| tech_python %% Paso 6 u2013 Persistencia al Inicio tech_startup[«<b>Técnica</b> – <b>T1037.005 Scripts de Inicialización de Arranque o Inicio de Sesión: Elementos de Inicio</b><br/><b>Descripción</b>: Persistencia mediante la colocación de <code>Windows Update Script.pyw</code> en la carpeta de Inicio.»] class tech_startup technique artifact_startup_script[«<b>Artefacto</b> – <b>Nombre</b>: <code>Windows Update Script.pyw</code><br/><b>Ubicación</b>: Carpeta de Inicio»] class artifact_startup_script artifact tech_python u002du002d>|crea| artifact_startup_script artifact_startup_script u002du002d>|activa| tech_startup %% Paso 7 u2013 Tarea Programada tech_schedtask[«<b>Técnica</b> – <b>T1053 Tarea/Trabajo Programado</b><br/><b>Descripción</b>: Tarea programada denominada u201cRuntime Brokeru201d creada para ejecutarse al iniciar sesión.»] class tech_schedtask technique artifact_schedtask[«<b>Artefacto</b> – <b>Nombre</b>: Tarea Programada u201cRuntime Brokeru201d<br/><b>Disparador</b>: Al iniciar sesión del usuario»] class artifact_schedtask artifact tech_startup u002du002d>|agrega| artifact_schedtask artifact_schedtask u002du002d>|ejecuta| tech_schedtask %% Paso 8 u2013 Recolección de Credenciales de Navegadores tech_credbrowser[«<b>Técnica</b> – <b>T1555.003 Credenciales de Almacenes de Contraseñas: Credenciales de Navegadores Web</b><br/><b>Descripción</b>: Malware recolectó datos de perfil del navegador y credenciales almacenadas.»] class tech_credbrowser technique artifact_browser_data[«<b>Artefacto</b> – <b>Datos</b>: Contraseñas de navegador y cookies extraídas»] class artifact_browser_data artifact tech_schedtask u002du002d>|recoge| tech_credbrowser tech_credbrowser u002du002d>|almacena| artifact_browser_data %% Paso 9 u2013 Robar Cookie de Sesión Web tech_stealcookie[«<b>Técnica</b> – <b>T1539 Robar Cookie de Sesión Web</b><br/><b>Descripción</b>: La función <code>getCookie()</code> recuperó cookies de sesión del navegador de la víctima.»] class tech_stealcookie technique artifact_getcookie[«<b>Artefacto</b> – <b>Datos</b>: Cookies de sesión capturadas de navegadores»] class artifact_getcookie artifact tech_credbrowser u002du002d>|activa| tech_stealcookie tech_stealcookie u002du002d>|produce| artifact_getcookie %% Paso 10 u2013 Uso de Material de Autenticación Alternativa tech_altauth[«<b>Técnica</b> – <b>T1550.004 Uso de Material de Autenticación Alternativa: Cookie de Sesión Web</b><br/><b>Descripción</b>: Las cookies recolectadas se utilizaron posteriormente para secuestrar sesiones web autenticadas.»] class tech_altauth technique artifact_getcookie u002du002d>|usado por| tech_altauth %% Paso 11 u2013 Suplantación tech_masquerade[«<b>Técnica</b> – <b>T1036.003 Suplantación: Renombrar Utilidades Legítimas</b><br/><b>Descripción</b>: Binarios maliciosos renombrados como u201cRuntime Broker.exe y u201cmsedge.exe»</b>.»] class tech_masquerade technique artifact_renamed_bins[«<b>Artefacto</b> – <b>Archivos</b>: <code>Runtime Broker.exe</code>, <code>msedge.exe</code> (malicioso)»] class artifact_renamed_bins artifact tech_altauth u002du002d>|entrega| artifact_renamed_bins artifact_renamed_bins u002du002d>|usado en| tech_masquerade %% Paso 12 u2013 Deterioro de Defensas tech_impairdefense[«<b>Técnica</b> – <b>T1562 Deterioro de Defensas</b><br/><b>Descripción</b>: Se añadieron exclusiones de Windows Defender mediante PowerShell para evadir la detección.»] class tech_impairdefense technique artifact_defender_exclusion[«<b>Artefacto</b> – <b>Comando</b>: Script de PowerShell que añade rutas de exclusión de Defender»] class artifact_defender_exclusion artifact tech_masquerade u002du002d>|ejecuta| artifact_defender_exclusion artifact_defender_exclusion u002du002d>|activa| tech_impairdefense %% Paso 13 u2013 Archivos Ofuscados tech_obfuscation[«<b>Técnica</b> – <b>T1027 Archivos o Información Ofuscados</b><br/><b>Descripción</b>: La carga utilizó 64 capas de ofuscación anidadas (Base85, XOR, zlib, Base64 invertido).»] class tech_obfuscation technique tech_impairdefense u002du002d>|protege| tech_obfuscation %% Paso 14 u2013 Ocultar Artefactos tech_hideartifacts[«<b>Técnica</b> – <b>T1564.012 Ocultar Artefactos: Exclusiones de Archivos/Rutas</b><br/><b>Descripción</b>: Exclusiones de Defender y archivos ocultos utilizados para ocultar artefactos maliciosos.»] class tech_hideartifacts technique tech_obfuscation u002du002d>|facilita| tech_hideartifacts %% Paso 15 u2013 Resolutor Deadu2011Drop tech_dead_drop[«<b>Técnica</b> – <b>T1102.001 Servicio Web: Resolutor Dead Drop</b><br/><b>Descripción</b>: El malware obtuvo comandos de una red de ~1,000 cuentas de Pastebin dead drop.»] class tech_dead_drop technique artifact_pastebin[«<b>Artefacto</b> – <b>Servicio</b>: Cuentas resolutor de dead drop en Pastebin»] class artifact_pastebin artifact tech_hideartifacts u002du002d>|recupera| artifact_pastebin artifact_pastebin u002du002d>|proporciona comandos a| tech_dead_drop %% Paso 16 u2013 Exfiltración Sobre FTP tech_exfilftp[«<b>Técnica</b> – <b>T1048.003 Exfiltración Sobre Protocolo Alternativo: Protocolo No Encriptado No-C2</b><br/><b>Descripción</b>: Datos recolectados exfiltrados vía FTP en el puerto 21.»] class tech_exfilftp technique artifact_ftp[«<b>Artefacto</b> – <b>Protocolo</b>: FTP (puerto 21) utilizado para transferencia de datos»] class artifact_ftp artifact tech_dead_drop u002du002d>|envía datos vía| tech_exfilftp tech_exfilftp u002du002d>|usa| artifact_ftp %% Paso 17 u2013 Secuestro de Recursos (Minería de Monero) tech_resourcehijack[«<b>Técnica</b> – <b>T1496.001 Secuestro de Recursos: Secuestro de Computación</b><br/><b>Descripción</b>: Minero de Monero XMRig desplegado, disfrazado como u201cmsedge.exe», para monetizar hosts infectados.»] class tech_resourcehijack technique artifact_xmrig[«<b>Artefacto</b> – <b>Archivo</b>: Binario del minero XMRig nombrado <code>msedge.exe</code>»] class artifact_xmrig artifact tech_exfilftp u002du002d>|proporciona recursos para| tech_resourcehijack tech_resourcehijack u002du002d>|ejecuta| artifact_xmrig %% Paso 18 u2013 Descubrimiento de Información de Navegadores tech_browserdisc[«<b>Técnica</b> – <b>T1217 Descubrimiento de Información de Navegadores</b><br/><b>Descripción</b>: El atacante enumeró la información del navegador para localizar credenciales adicionales y datos de sesión.»] class tech_browserdisc technique artifact_browser_info[«<b>Artefacto</b> – <b>Datos</b>: Versión del navegador, rutas de perfil, extensiones instaladas»] class artifact_browser_info artifact tech_resourcehijack u002du002d>|recoge| tech_browserdisc tech_browserdisc u002du002d>|recopila| artifact_browser_info «
Flujo de ataque
Detecciones
Posible Infiltración de Datos / Exfiltración / C2 a través de Servicios/ Herramientas de Terceros (a través de dns)
Ver
Cambios Sospechosos en Preferencias de Windows Defender (a través de powershell)
Ver
Binarios / Scripts Sospechosos en Ubicación de Inicio Automático (a través de file_event)
Ver
Archivo oculto fue creado en host Linux (a través de file_event)
Ver
Posible infiltración/exfiltración de datos/C2 a través de servicios/herramientas de terceros (a través de proxy)
Ver
IOC (Emails) para detectar: Cazando a Lazarus: Dentro de la infraestructura C2 Interview Contagiosa
Ver
IOC (DestinationIP) para detectar: Cazando a Lazarus: Dentro de la infraestructura C2 Interview Contagiosa
Ver
IOC (SourceIP) para detectar: Cazando a Lazarus: Dentro de la infraestructura C2 Interview Contagiosa
Ver
IOC (HashSha256) para detectar: Cazando a Lazarus: Dentro de la infraestructura C2 Interview Contagiosa
Ver
Función sospechosa getCookie obteniendo JavaScript malicioso desde el dominio de Vercel [Evento de archivo de Windows]
Ver
Uso sospechoso de Function.constructor en errorHandler.js para RCE de backend [Evento de archivo de Windows]
Ver
Falseamiento de procesos maliciosos como RuntimeBroker y minero XMRig como msedge.exe [Creación de procesos de Windows]
Ver
Configuración de autoejecución maliciosa de VSCode [Evento de archivo de Windows]
Ver
Ejecución de simulación
Prerrequisito: El chequeo previo de Telemetría & Línea base debe haber sido aprobado.
Narrativa del ataque & Comandos
El adversario copia el RuntimeBroker.exe binario a una ubicación no estándar (%TEMP%) para hacerse pasar por un proceso de confianza mientras evita la detección basada en rutas del sistema conocidas. Al ejecutar la copia, el evento de creación del proceso contiene el nombre de imagen esperado pero una ruta que no pasa la verificación de contención “System32”, satisfaciendo selection_runtime.
Script de prueba de regresión
# -----------------------------------------------
# TC-20260114-A1B2C – Simulación de falseamiento
# -----------------------------------------------
# 1. Definir rutas
$src = "$env:SystemRootSystem32RuntimeBroker.exe"
$dest = "$env:TEMPRuntimeBroker.exe"
# 2. Copiar el binario legítimo a un directorio no del sistema
Copy-Item -Path $src -Destination $dest -Force
# 3. Ejecutar el binario copiado (esto debería disparar la regla Sigma)
Start-Process -FilePath $dest -WindowStyle Hidden
# 4. OPCIONAL: Simular el escenario msedge (minero) de falseamiento
# (Copiar cualquier ejecutable legítimo, renombrar a msedge.exe, colocar bajo %LOCALAPPDATA%MicrosoftWindowsApplications)
$minerSrc = "$env:SystemRootSystem32notepad.exe"
$minerDest = "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe"
Copy-Item -Path $minerSrc -Destination $minerDest -Force
Start-Process -FilePath $minerDest -WindowStyle Hidden
# -----------------------------------------------
Comandos de limpieza
# Eliminar las copias maliciosas
Remove-Item -Path "$env:TEMPRuntimeBroker.exe" -Force -ErrorAction SilentlyContinue
Remove-Item -Path "$env:LOCALAPPDATAMicrosoftWindowsApplicationsmsedge.exe" -Force -ErrorAction SilentlyContinue