SOC Prime Bias: Crítico

11 Feb 2026 18:47

Análisis Profundo de la Nueva Campaña de XWorm Utilizando Correos Electrónicos de Phishing de Temas Múltiples

Author Photo
Ruslan Mikhalov Jefe de Investigación de Amenazas en SOC Prime linkedin icon Seguir
Análisis Profundo de la Nueva Campaña de XWorm Utilizando Correos Electrónicos de Phishing de Temas Múltiples
shield icon

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

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:

    1. 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.
    2. Proceso de Hollowing vía EQNEDT32.EXE: Iniciar EQNEDT32.EXE con una línea de comando que invoca ShellExecuteExW() para hacerse pasar por un componente legítimo de Office.
    3. Ejecución Lateral de Msbuild.exe: Generar Msbuild.exe con CreateProcessA() para compilar una carga útil .NET encubierta al vuelo.
    4. Ejecución sin Archivos de .NET: Use powershell.exe con un comando codificado en base64 que carga un ensamblado .NET reflectante (T1620). La línea de comando contiene la cadena literal CreateProcessA() 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."