Dentro de un Proxy y RAT Basado en Deno
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Un atacante desplegó un troyano de acceso remoto (RAT) modular y un marco de proxy aprovechando el entorno de ejecución de JavaScript Deno. El ataque utilizó bombardeo de correos y suplantación de Microsoft Teams para facilitar la descarga de un archivo malicioso. El implante opera a través de múltiples archivos JavaScript modulares que utilizan banderas de permisos específicas de Deno para realizar comunicación C2, ejecución de comandos locales y pivotamiento en la red.
Investigación
La investigación reveló una fase de acceso inicial que consistía en inundación de correos y técnicas de ingeniería social a través de Microsoft Teams. El malware fue identificado como un sistema no tradicional, modular, basado en Deno dividido en cuatro scripts: app.js, back.js, helper.js y webui.js. La detección ocurrió durante actividades de reconocimiento post-explotación en lugar de la ejecución inicial.
Mitigación
Las organizaciones deben monitorear la ejecución de entornos de scripting como Deno desde directorios que pueden ser escritos por el usuario y alertar sobre banderas de permisos sospechosos como –allow-run o –allow-net. Se recomienda implementar monitoreo para servicios HTTP locales de bucle invertido y correlación de alertas de suplantación de Teams con anomalías en correos. Además, restringir la capacidad de ejecutar entornos no firmados o no aprobados puede reducir la superficie de ataque.
Respuesta
Al detectar el ataque, los respondedores deben aislar los hosts afectados e investigar el origen de la suplantación de Teams. El análisis debe centrarse en la línea de procesos Deno y cualquier servicio local vinculado a los puertos de bucle invertido 10021 o 10022. Revisar los registros de auditoría unificada de Microsoft 365 para eventos TeamsImpersonationDetected es fundamental para determinar el alcance de la campaña de ingeniería social.
graph TB %% Definición de clases classDef action fill:#99ccff classDef builtin fill:#cccccc classDef malware fill:#ff9999 classDef discovery fill:#ccffcc classDef command_control fill:#ffff99 %% Fase inicial del ataque attack_email_bombing[«<b>Acción</b> – <b>T1667 Bombardeo de Correo Electrónico</b><br/>Descripción: Campaña masiva de correos electrónicos<br/>utilizada para generar fatiga y confusión en la víctima.»] class attack_email_bombing action attack_social_eng[«<b>Acción</b> – <b>T1684.001 Ingeniería Social: Suplantación de Identidad</b><br/>Descripción: Los atacantes se hacen pasar por soporte TI<br/>mediante llamadas de Microsoft Teams para ganar credibilidad.»] class attack_social_eng action attack_user_exec[«<b>Acción</b> – <b>T1204.002 Ejecución por el Usuario: Archivo Malicioso</b><br/>Descripción: La víctima descarga y extrae<br/>un archivo malicioso.»] class attack_user_exec action file_malicious_archive[«<b>Archivo</b>: patch09913.b<br/>Descripción: Archivo malicioso que contiene<br/>el framework de malware basado en Deno.»] class file_malicious_archive builtin %% Ejecución del framework de malware malware_deno_framework[«<b>Malware</b>: Framework basado en Deno<br/>Descripción: Malware modular que utiliza app.js<br/>como orquestador.»] class malware_deno_framework malware module_app_js[«<b>Módulo</b>: app.js<br/>Descripción: Orquestador basado en JavaScript<br/>que inicia módulos especializados.»] class module_app_js malware action_js_interpreter[«<b>Acción</b> – <b>T1059.007 Intérprete de Comandos y Scripts: JavaScript</b><br/>Descripción: Utilizado por app.js para iniciar módulos.»] class action_js_interpreter action action_hide_artifacts[«<b>Acción</b> – <b>T1564.011 Ocultación de Artefactos: Ignorar Interrupciones de Procesos</b><br/>Descripción: Utiliza conhost.exe –headless para<br/>suprimir ventanas de consola.»] class action_hide_artifacts action %% Persistencia module_back_js[«<b>Módulo</b>: back.js<br/>Descripción: Gestiona la persistencia y el C2.»] class module_back_js malware action_persistence[«<b>Acción</b> – <b>T1037.004 Scripts de Inicialización de Arranque o Inicio de Sesión: Scripts RC</b><br/>Descripción: Modifica la clave del Registro de Windows<br/>HKCU\\Software\\Microsoft\\Windows\\CurrentVersion\\Run.»] class action_persistence action %% Descubrimiento module_helper_js[«<b>Módulo</b>: helper.js<br/>Descripción: Realiza la enumeración del sistema.»] class module_helper_js malware action_process_discovery[«<b>Acción</b> – <b>T1057 Descubrimiento de Procesos</b><br/>Descripción: Ejecuta tasklist para identificar procesos en ejecución.»] class action_process_discovery discovery action_sys_info_discovery[«<b>Acción</b> – <b>T1082 Descubrimiento de Información del Sistema</b><br/>Descripción: Ejecuta ipconfig /all y set para recopilar<br/>información de red y variables de entorno.»] class action_sys_info_discovery discovery %% C2 y movimiento interno action_c2_protocol[«<b>Acción</b> – <b>T1071.001 Protocolo de Capa de Aplicación: Protocolos Web</b><br/>Descripción: Mantiene una conexión WebSocket persistente<br/>con un punto C2 alojado en CloudFront.»] class action_c2_protocol command_control module_webui_js[«<b>Módulo</b>: webui.js<br/>Descripción: Facilita el movimiento dentro de la red interna.»] class module_webui_js malware action_proxy_pivoting[«<b>Acción</b> – <b>T1090 Proxy (Pivotaje Interno)</b><br/>Descripción: Actúa como intermediario de acceso para enrutar<br/>tráfico TCP hacia la red interna.»] class action_proxy_pivoting command_control %% Conexiones attack_email_bombing –>|genera_confusión_para| attack_social_eng attack_social_eng –>|conduce_a| attack_user_exec attack_user_exec –>|implica| file_malicious_archive file_malicious_archive –>|ejecuta| malware_deno_framework malware_deno_framework –>|orquestado_por| module_app_js module_app_js –>|utiliza| action_js_interpreter module_app_js –>|implementa| action_hide_artifacts module_app_js –>|inicia| module_back_js module_app_js –>|inicia| module_helper_js module_app_js –>|inicia| module_webui_js module_back_js –>|realiza| action_persistence module_back_js –>|establece| action_c2_protocol module_helper_js –>|realiza| action_process_discovery module_helper_js –>|realiza| action_sys_info_discovery module_webui_js –>|realiza| action_proxy_pivoting
Flujo de Ataque
Detecciones
Puntos Posibles de Persistencia [ASEPs – Hive Software/NTUSER] (via registro_evento)
Vista
Puntos Posibles de Persistencia [ASEPs – Hive Software/NTUSER] (via línea_de_comando)
Vista
Intento Posible de Abuso del Entorno de Ejecución de Deno (via creación_proceso)
Vista
Posible Descubrimiento de Configuración de Red del Sistema (via línea_de_comando)
Vista
LOLBAS Conhost (via línea_de_comando)
Vista
IOCs (HashSha256) para detectar: Anatomía de un Proxy y RAT Basado en Deno
Vista
Detectar Deno Ejecutando Comandos de Shell [Windows Sysmon]
Vista
Detectar Ejecución de RAT Basado en Deno con Banderas de Permisos Sospechosas [Creación de Procesos en Windows]
Vista
Simulación de Ejecución
Prerequisito: La Verificación Previa de Telemetría y Línea Base debe haber pasado.
Razonamiento: Esta sección detalla la ejecución precisa de la técnica del adversario (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y apuntar a generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados llevarán a un diagnóstico erróneo.
-
Narrativa de Ataque y Comandos: El adversario ha entregado exitosamente un RAT malicioso basado en Deno en la máquina de la víctima a través de un adjunto de spearphishing (T1566.004). Para evadir antivirus tradicionales basados en firmas, el atacante oculta el binario de Deno dentro de un subdirectorio profundo y no estándar del perfil de usuario:
C:Usuariosuser.nameAppDataRoamingDenoJSEnv. El atacante luego ejecuta el binario usando las banderas--allow-runand--allow-net. Esto permite que el malware basado en JavaScript ejecute comandos de shell arbitrarios para el descubrimiento del sistema (T1082) y se comunique con un servidor C2 externo mediante HTTPS (T1071.001). -
Script de Prueba de Regresión:
# Nota: Este script simula la existencia del directorio y binario # para activar la lógica de la regla. En una prueba real, el archivo debe existir en la ruta exacta. $targetDir = "C:Usuariosuser.nameAppDataRoamingDenoJSEnv" $targetExe = "$targetDirdeno.exe" # 1. Crear la estructura de directorios específica requerida por la regla de detección if (!(Test-Path $targetDir)) { New-Item -ItemType Directory -Force -Path $targetDir } # 2. Crear un archivo dummy para actuar como el 'deno.exe' # En una simulación real, este sería el binario real de Deno. New-Item -ItemType File -Force -Path $targetExe # 3. Ejecutar el comando 'malicioso' # Usamos Start-Process para asegurarnos de que aparezca como un proceso hijo en los registros de Sysmon. # Dado que 'deno.exe' es un dummy, llamaremos a 'cmd.exe' pero enmascararemos el comando # para que coincida con la lógica, O si se está probando la regla REAL, asegúrese de que el binario # sea real y llámelo. Para esta simulación, asumimos que el usuario proporciona un # binario real de Deno en esa ruta. Write-Host "[!] Simulando la ejecución de $targetExe con banderas maliciosas..." Start-Process -FilePath "cmd.exe" -ArgumentList "/c echo Simulación activando regla..." # Nota: Para realmente activar la regla, el deno.exe real debe estar presente. # Si la regla está estrictamente buscando la ruta de la Imagen, el binario DEBE estar allí. # Por el bien de un script de simulación funcional, llamamos a la ruta: # Start-Process -FilePath $targetExe -ArgumentList "--allow-run --allow-net" -
Comandos de Limpieza:
# Eliminar el directorio y archivos simulados maliciosos Remove-Item -Path "C:Usuariosuser.nameAppDataRoamingDenoJSEnv" -Recurse -Force Write-Host "[+] Limpieza completa."