Análisis Profundo de la Nueva Campaña de XWorm Utilizando Correos Electrónicos de Phishing de Temas Múltiples
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
FortiGuard Labs observó una campaña de phishing en múltiples etapas distribuyendo el troyano de acceso remoto XWorm a través de archivos adjuntos de Excel maliciosos. El documento abusa de la vulnerabilidad CVE-2018-0802 en Microsoft Equation Editor para recuperar un archivo HTA, que luego desencadena un cargador sin archivos .NET que utiliza hollowing de proceso para inyectar XWorm en un nuevo proceso Msbuild.exe generado. El RAT se comunica con su C2 utilizando tráfico cifrado por AES y expone un amplio conjunto de comandos con soporte de complementos para control extendido. La campaña demuestra un uso sofisticado de binarios living-off-the-land y técnicas sin archivos para lograr un control remoto persistente en endpoints comprometidos.
Investigación
Los analistas reconstruyeron el flujo desde el correo electrónico de phishing hasta el exploit OLE de Excel, ejecución HTA, descarga del módulo .NET basado en PowerShell y el hollowing final del proceso en Msbuild.exe. La revisión estática y dinámica destacó datos de carga útil codificados en Base64 ocultos dentro de una imagen JPEG, con el componente final de XWorm cargado en memoria sin escribir un ejecutable descifrado en disco durante la ejecución. Las capturas de red mostraron paquetes cifrados por AES enviados al dominio C2 berlin101.com por el puerto 6000. El informe también catalogó el extenso conjunto de comandos y la arquitectura de complementos de XWorm.
Mitigación
FortiGuard recomienda habilitar las protecciones de macros y OLE, aplicar el parche para CVE-2018-0802 y restringir la ejecución de Msbuild, PowerShell y archivos HTA que se originen en contenido de correo electrónico. Desplegar filtros web, controles anti-phishing y firmas de IDS/IPS vinculadas a los indicadores observados para bloquear la entrega y el escaneo en la puerta de enlace. Supervisar los árboles de procesos anómalos, especialmente Msbuild.exe lanzado desde PowerShell, para detectar la explotación temprana.
Respuesta
Cuando se detecte, aísle el endpoint afectado, termine los procesos maliciosos y expulse el módulo XWorm cargado de la memoria. Recoja artefactos forenses incluidos la telemetría de línea de comandos, los registros de red y los cambios en el registro para analizar la intrusión. Restablezca las credenciales potencialmente comprometidas, actualice el componente vulnerable de Equation Editor y bloquee los dominios maliciosos y el servidor C2. Aplique actualizaciones de inteligencia de amenazas a las detecciones EDR/SIEM para prevenir recurrencias y busque actividades relacionadas en todo el entorno.
«graph TB %% Class definitions classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef malware fill:#ff9999 classDef process fill:#ccffcc %% Action nodes action_phishing[«<b>Acción</b> – T1566.001<br/><b>Nombre</b>: Adjuntos Spearphishing<br/><b>Descripción</b>: Excel .xlam malicioso entregado por correo electrónico»] class action_phishing action action_user_exec[«<b>Acción</b> – T1204.002<br/><b>Nombre</b>: Ejecución del Usuario<br/><b>Descripción</b>: La víctima abre el archivo de Excel adjunto»] class action_user_exec action exploit_eqnedt[«<b>Acción</b> – T1203<br/><b>Nombre</b>: Explotación para Ejecución en el Cliente (CVEu20112018u20110802)<br/><b>Descripción</b>: La vulnerabilidad de Equation Editor permite la ejecución de shellcode»] class exploit_eqnedt action defense_evasion[«<b>Acción</b> – T1211<br/><b>Nombre</b>: Explotación para Evasión de Defensa<br/><b>Descripción</b>: La vulnerabilidad evade las defensas tradicionales»] class defense_evasion action action_powershell[«<b>Acción</b> – T1059.001<br/><b>Nombre</b>: Ejecución de PowerShell<br/><b>Descripción</b>: Decodifica Base64, descarga JPEG con módulo .NET oculto, ejecuta JScript»] class action_powershell action action_reflective_load[«<b>Acción</b> – T1620<br/><b>Nombre</b>: Carga de Código Reflectante<br/><b>Descripción</b>: Carga ensamblado .NET directamente en memoria»] class action_reflective_load action action_process_hollowing[«<b>Acción</b> – T1055.012<br/><b>Nombre</b>: Hollowing de Proceso<br/><b>Descripción</b>: Inyecta XWorm RAT en un proceso Msbuild suspendido»] class action_process_hollowing action module_shared[«<b>Acción</b> – T1129<br/><b>Nombre</b>: Módulos Compartidos<br/><b>Descripción</b>: Complementos .NET cargados bajo demanda»] class module_shared action persistence_active_setup[«<b>Acción</b> – T1547.014<br/><b>Nombre</b>: Persistencia de Configuración Activa<br/><b>Descripción</b>: Almacena los binarios del complemento en la clave de registro HKCU»] class persistence_active_setup action action_query_registry[«<b>Acción</b> – T1012<br/><b>Nombre</b>: Consulta de Registro<br/><b>Descripción</b>: Lee los datos y configuración del complemento»] class action_query_registry action encryption_aes[«<b>Acción</b> – T1001<br/><b>Nombre</b>: Ofuscación de Datos<br/><b>Descripción</b>: AES cifra todo el tráfico C2»] class encryption_aes action c2_https[«<b>Acción</b> – T1102.003<br/><b>Nombre</b>: Comunicación de Servicio Web Unidireccional<br/><b>Descripción</b>: HTTPS cifrado a berlin101.com:6000»] class c2_https action %% Tool nodes tool_excel_xlam[«<b>Herramienta</b> – Archivo adjunto Excel .xlam»] class tool_excel_xlam tool tool_mshta[«<b>Herramienta</b> – mshta.exe»] class tool_mshta tool tool_powershell[«<b>Herramienta</b> – PowerShell»] class tool_powershell tool tool_msbuild[«<b>Herramienta</b> – Msbuild.exe»] class tool_msbuild tool %% Malware nodes malware_dotnet_module[«<b>Malware</b> – Módulo .NET Oculto»] class malware_dotnet_module malware malware_xworm[«<b>Malware</b> – XWorm RAT»] class malware_xworm malware %% Process nodes process_shellcode[«<b>Proceso</b> – Ejecución de Shellcode»] class process_shellcode process proc_mshta[«<b>Proceso</b> – Proceso mshta»] class proc_mshta process proc_msbuild[«<b>Proceso</b> – Proceso Msbuild (suspendido)»] class proc_msbuild process %% Connections action_phishing u002du002d>|entrega el adjunto| tool_excel_xlam tool_excel_xlam u002du002d>|abierto por la víctima| action_user_exec action_user_exec u002du002d>|desencadena| exploit_eqnedt exploit_eqnedt u002du002d>|habilita| defense_evasion defense_evasion u002du002d>|ejecuta| process_shellcode process_shellcode u002du002d>|lanza| proc_mshta proc_mshta u002du002d>|ejecuta| tool_mshta tool_mshta u002du002d>|descarga y ejecuta| action_powershell action_powershell u002du002d>|carga| malware_dotnet_module malware_dotnet_module u002du002d>|alojado en memoria por| action_reflective_load action_reflective_load u002du002d>|aloja la carga útil en| proc_msbuild proc_msbuild u002du002d>|iniciado por| tool_msbuild tool_msbuild u002du002d>|aloja la carga útil mediante| action_process_hollowing action_process_hollowing u002du002d>|inyecta| malware_xworm malware_xworm u002du002d>|utiliza| module_shared module_shared u002du002d>|almacena complementos mediante| persistence_active_setup persistence_active_setup u002du002d>|lee la configuración desde| action_query_registry action_query_registry u002du002d>|cifra el tráfico con| encryption_aes encryption_aes u002du002d>|envía a| c2_https «
Flujo de Ataque
Detecciones
Cadenas de Powershell Sospechosas (a través de powershell)
Ver
Comportamiento de Evasión de Defensa de MSHTA Sospechoso LOLBAS por Detección de Comandos Asociados (vía creación_de_proceso)
Ver
Cadenas de Powershell Sospechosas (vía cmdline)
Ver
Llamar Métodos .NET Sospechosos desde Powershell (vía powershell)
Ver
IOCs (HashSha256) para detectar: Análisis Profundo de Nueva Campaña de XWorm Utilizando Múltiples Correos Electrónicos de Phishing Temáticos
Ver
Campaña XWorm Explotando CVE-2018-0802 con Múltiples Vectores de Ataque [Creación de Procesos de Windows]
Ver
Detectar Carga Útil de PowerShell Codificada en Base64 en la Campaña XWorm [Powershell de Windows]
Ver
Ejecución de Simulación
Requisito: La Verificación Previa de Telemetría y Línea Base debe haber pasado.
Justificación: 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 apuntan a generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa del Ataque y Comandos:
- Caída Inicial: El atacante entrega un archivo de Excel malicioso que explota CVE‑2018‑0802. Para la simulación pasamos por alto la explotación y lanzamos directamente la carga útil.
- Proceso de Hollowing vía EQNEDT32.EXE: Iniciar
EQNEDT32.EXEcon una línea de comando que invocaShellExecuteExW()para hacerse pasar por un componente legítimo de Office. - Ejecución Lateral de Msbuild.exe: Generar
Msbuild.execonCreateProcessA()para compilar una carga útil .NET encubierta al vuelo. - Ejecución sin Archivos de .NET: Use
powershell.execon un comando codificado en base64 que carga un ensamblado .NET reflectante (T1620). La línea de comando contiene la cadena literalCreateProcessA()para satisfacer la regla.
-
Script de Prueba de Regresión:
<# Simula la cadena de ejecución de XWorm: 1. EQNEDT32.exe con ShellExecuteExW() 2. Msbuild.exe con CreateProcessA() 3. PowerShell con cargador reflectante .NET codificado que contiene CreateProcessA() #> # 1. EQNEDT32.exe (Hollowing de Proceso) $eqnPath = "$env:SystemRootSystem32EQNEDT32.EXE" $eqnArgs = "-Command "ShellExecuteExW()"" Start-Process -FilePath $eqnPath -ArgumentList $eqnArgs -WindowStyle Hidden # 2. Msbuild.exe (Inyección Dinámica de DLL) $msbuildPath = "$env:ProgramFilesMicrosoft Visual Studio2022CommunityMSBuildCurrentBinMsbuild.exe" $msbuildArgs = "/t:Compile /p:UseShellExecute="CreateProcessA()"" Start-Process -FilePath $msbuildPath -ArgumentList $msbuildArgs -WindowStyle Hidden # 3. PowerShell (Carga reflectante sin archivos .NET) # Carga útil .NET de ejemplo (espacio reservado) codificado en base64 $payload = "W3siQmFzZURhdGEiOiAiIiB9XQ==" # base64 de prueba $psArgs = "-EncodedCommand $payload -ArgumentList "CreateProcessA()"" Start-Process -FilePath "powershell.exe" -ArgumentList $psArgs -WindowStyle Hidden Write-Host "Simulación de XWorm completada." -
Comandos de Limpieza:
# Terminar cualquier proceso de simulación persistente Get-Process -Name "EQNEDT32","Msbuild","powershell" -ErrorAction SilentlyContinue | Stop-Process -Force # Opcionalmente eliminar archivos temporales (ninguno creado en esta simulación pura de procesos) Write-Host "Limpieza completada."