Cómo un archivo VHDX entrega Remcos RAT
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
Una campaña de malware de múltiples etapas utiliza un archivo ZIP armado que contiene una imagen de disco VHDX para evadir los controles de seguridad comunes. Después de montar el VHDX, se ejecuta un archivo JavaScript ofuscado que lanza una serie de etapas de PowerShell a través de WMI. La carga final es Remcos RAT, que se inyecta en un proceso legítimo de Windows para ocultar su ejecución.
Investigación
El investigador examinó un archivo ZIP malicioso y el contenedor VHDX incrustado para reconstruir el flujo completo del ataque. El análisis expuso una cadena de ejecución compleja que utilizaba la creación de procesos basada en WMI para disfrazar las relaciones padre-hijo, junto con la ofuscación de cadenas con XOR y Base64 y un cargador reflectivo de .NET. El camino de infección se rastreó con éxito desde la ejecución inicial de JavaScript hasta el despliegue de la carga final de Remcos.
Mitigación
Las organizaciones deben aplicar controles estrictos para prevenir el montaje de imágenes de disco VHDX desde fuentes no confiables. Las herramientas de seguridad también deben monitorear actividades sospechosas Win32_Process.Create activadas por motores de scripting como JavaScript o PowerShell. Bloquear dominios maliciosos conocidos y vigilar la persistencia inusual de claves Run en el registro puede reducir aún más el riesgo.
Respuesta
Si se detecta esta actividad, aísle el endpoint afectado inmediatamente para detener la comunicación de mando y control. Adquiera un volcado de memoria para capturar la carga inyectada de Remcos y el cargador reflectivo de .NET. Luego, una revisión forense completa debe buscar entradas maliciosas de claves Run, archivos VHDX adicionales y actividad sospechosa de PowerShell en el resto del entorno.
graph TB %% Definición de clases classDef action fill:#99ccff classDef tool fill:#cccccc classDef malware fill:#ff9999 classDef process fill:#ccffcc classDef connection fill:#f9f9f9 %% Acceso inicial y ejecución action_phishing[«<b>Acción</b> – <b>T1566.001 Phishing: Adjunto de spearphishing</b><br/>Descripción: Archivo ZIP malicioso<br/>entregado mediante correo electrónico.»] class action_phishing action action_user_exec[«<b>Acción</b> – <b>T1204.002 Ejecución del usuario: Archivo malicioso</b><br/>Descripción: El usuario ejecuta<br/>el archivo ZIP malicioso.»] class action_user_exec action tool_vhdx[«<b>Herramienta</b> – <b>Nombre</b>: Archivo VHDX<br/>Descripción: Contenedor de malware utilizado para ocultar<br/>la carga útil mediante Escape to Host T1611.»] class tool_vhdx tool %% Ofuscación y scripting file_js[«<b>Archivo</b>: Partnerschaft_fur_neue_Angebotsanfrage.js<br/><b>Descripción</b>: Archivo JavaScript malicioso que utiliza<br/>Ofuscación de comandos T1027.010 mediante contaminación<br/>de cadenas y descifrado XOR.»] class file_js tool action_wmi[«<b>Acción</b>: PowerShell mediante WMI<br/><b>Descripción</b>: Ejecuta un script PowerShell usando WMI<br/>para evadir la monitorización de relaciones entre procesos.»] class action_wmi action %% Transferencia y fases del malware action_ingress_1[«<b>Acción</b> – <b>T1105 Transferencia de herramientas entrantes</b><br/><b>Descripción</b>: El script PowerShell descarga<br/>el archivo de segunda fase.»] class action_ingress_1 action file_dsp[«<b>Archivo</b>: Exoticisms121.dsp<br/><b>Descripción</b>: Archivo de segunda fase almacenado<br/>en %APPDATA%.»] class file_dsp tool tool_loader[«<b>Herramienta</b>: Cargador .NET reflectivo<br/><b>Descripción</b>: Ejecuta shellcode<br/>desde el archivo de segunda fase.»] class tool_loader tool action_ingress_2[«<b>Acción</b> – <b>T1105 Transferencia de herramientas entrantes</b><br/><b>Descripción</b>: El shellcode obtiene<br/>la carga útil final Remcos RAT.»] class action_ingress_2 action malware_remcos[«<b>Malware</b>: Remcos RAT<br/>Descripción: Carga útil final establecida<br/>para comunicación de Comando y Control TA0011.»] class malware_remcos malware %% Procesos y C2 process_bg_task[«<b>Proceso</b>: backgroundTaskHost.exe<br/>Descripción: Proceso objetivo<br/>para la inyección del malware.»] class process_bg_task process c2_server[«<b>Servidor C2</b>: animal342.duckdns.org:53562<br/>Descripción: Servidor remoto utilizado<br/>para comunicación de Comando y Control.»] class c2_server tool %% Persistencia action_persistence[«<b>Acción</b> – <b>T1547.001 Ejecución automática al iniciar o iniciar sesión: Claves Registry Run / Carpeta Startup</b><br/>Descripción: Utiliza cmd.exe para crear claves<br/>de registro de inicio automático para el cargador PowerShell.»] class action_persistence action %% Conexiones action_phishing –>|conduce_a| action_user_exec action_user_exec –>|revela| tool_vhdx tool_vhdx –>|contiene| file_js file_js –>|ejecuta_mediante_WMI| action_wmi action_wmi –>|realiza| action_ingress_1 action_ingress_1 –>|descarga| file_dsp file_dsp –>|procesado_por| tool_loader tool_loader –>|realiza| action_ingress_2 action_ingress_2 –>|obtiene| malware_remcos malware_remcos –>|inyecta_en| process_bg_task malware_remcos –>|se_comunica_con| c2_server malware_remcos –>|garantiza| action_persistence
Flujo de Ataque
Detecciones
Posibles Puntos de Persistencia [ASEPs – Hive Software/NTUSER] (a través de registry_event)
Ver
Posibles Puntos de Persistencia [ASEPs – Hive Software/NTUSER] (a través de cmdline)
Ver
LOLBAS WScript / CScript (a través de process_creation)
Ver
Archivo de Disco Duro Virtual fue Creado (a través de file_event)
Ver
Se Contactó un Posible Servicio de DNS Dinámico (a través de dns)
Ver
Detección de Inyección de Procesos y Cargador Reflectivo .Net de PowerShell [Creación de Procesos de Windows]
Ver
Ejecución de Scripts de PowerShell a través de WMI para Evasión de EDR [PowerShell de Windows]
Ver
## Ejecución de Simulación
Requisito Previo: La Comprobación de Pre-vuelo de Telemetría y Línea Base debe haberse completado.
Justificación: Esta sección detalla la ejecución precisa de la técnica adversaria (TTP) diseñada para activar la regla de detección. Los comandos y la narrativa DEBEN reflejar directamente los TTPs identificados y tienen como objetivo generar la telemetría exacta esperada por la lógica de detección. Ejemplos abstractos o no relacionados conducirán a un mal diagnóstico.
-
Narrativa del Ataque y Comandos: El adversario tiene como objetivo ejecutar una carga maliciosa en la memoria para evitar la detección por parte de AV tradicional. Utilizan un script de PowerShell que aprovecha
[System.Reflection.Assembly]::Load()para extraer un DLL compilado .NET directamente desde un array de bytes en el proceso actual. Para mantener la persistencia y evadir el escrutinio, intentan generar o interactuar conbackgroundTaskHost.exe, un proceso legítimo de Windows, para ocultar su hilo de ejecución dentro de una tarea de fondo del sistema estándar. -
Script de Prueba de Regresión:
# Script de Simulación: Carga Reflectiva .NET e Interacción de Procesos # Este script imita la lógica capturada por la regla de detección. # 1. Crear un array de bytes ficticio que represente un Ensamblaje .NET (muy simplificado para simulación) $assemblyBytes = [byte[]](0x4D, 0x5A, 0x90, 0x00, 0x03, 0x00, 0x00, 0x00) # Imita el encabezado MZ Write-Host "[+] Intentando Cargar Ensamblado Reflectivo .NET..." -ForegroundColor Cyan try { # Esta cadena específica es un objetivo para la regla de detección $assembly = [System.Reflection.Assembly]::Load($assemblyBytes) Write-Host "[!] Éxito: Ensamblado cargado en memoria (solo simulación)." -ForegroundColor Green } catch { Write-Host "[-] La carga del ensamblado falló (esperado debido a bytes ficticios inválidos), pero el comando fue enviado." -ForegroundColor Yellow } Write-Host "[+] Intentando invocar backgroundTaskHost.exe para activar detección..." -ForegroundColor Cyan # Esta cadena específica es un objetivo para la regla de detección Start-Process "C:WindowsSystem32backgroundTaskHost.exe" -ArgumentList "/test-detection" -
Comandos de Limpieza:
# Limpieza: Terminar el proceso spawned backgroundTaskHost Stop-Process -Name "backgroundTaskHost" -ErrorAction SilentlyContinue Write-Host "[+] Limpieza completa. BackgroundTaskHost terminado." -ForegroundColor Green