Avanzadomemory forensicscaso estudioVolatilityanalisis completoIOCscadena de ataque

Caso de Estudio: Analisis Forense de Memoria de un Sistema Infectado

Caso de estudio completo de analisis forense de memoria. Walkthrough paso a paso desde la adquisicion de un volcado de un sistema Windows infectado hasta la identificacion de la familia de malware, reconstruccion de la cadena de ataque, extraccion de IOCs y elaboracion del informe final.

MalwareIntel Research··8 min lectura
Serie: Memory Forensics — Parte 11

Escenario del incidente

Es martes a las 15:47 UTC. El SOC de una empresa de servicios financieros recibe una alerta del EDR: actividad sospechosa de PowerShell en la estacion de trabajo de un analista financiero (WKSTN-FIN-042). La alerta indica ejecucion de PowerShell con parametros de ofuscacion desde un proceso de Microsoft Word.

El analista SOC de turno verifica que el usuario reporto haber abierto un documento Excel recibido por email de un "proveedor habitual" hace aproximadamente 20 minutos. El documento pedia habilitar macros para "visualizar el contenido correctamente".

El equipo DFIR decide aislar la estacion de red inmediatamente pero mantenerla encendida para adquirir la memoria. Llegan al puesto del usuario en 8 minutos.

Fase 1: Adquisicion

El responder conecta una unidad USB preparada con DumpIt y ejecuta el volcado:

DumpIt.exe /O E:\WKSTN-FIN-042-20260601-1555.raw /T RAW

Datos de la adquisicion:

  • Sistema: Windows 11 Pro 23H2, 16 GB RAM
  • Hora de inicio: 15:55:12 UTC
  • Hora de fin: 15:58:47 UTC
  • Tamano del dump: 16.384 MB
  • Hash SHA256: a3f2b1c4d5e6f7890123456789abcdef01234567890abcdef01234567890abcd

Se documenta la cadena de custodia, se fotografa la pantalla y se anota que el sistema estaba en la pantalla de escritorio normal sin ventanas visibles sospechosas.

Fase 2: Identificacion del sistema

vol -f WKSTN-FIN-042.raw windows.info
Variable           Value
Kernel Base        0xf8000000000
DTB                0x1ad000
Is64Bit            True
IsPAE              False
primary            WindowsIntel32e
memory_model       64bit
MajorOperatingSystemVersion  10
MinorOperatingSystemVersion  0
MachineType        34404
NtBuildNumber      22631

Windows 11 23H2 (Build 22631), 64 bits. Volatility encuentra los simbolos automaticamente.

Fase 3: Analisis de procesos

Vista general con pstree

vol -f WKSTN-FIN-042.raw windows.pstree

Extracto relevante del arbol:

PID    PPID   ImageFileName       CreateTime
...
** 3100 620   explorer.exe        2026-06-01 08:15:30
*** 4200 3100 chrome.exe          2026-06-01 08:20:00
*** 5500 3100 EXCEL.EXE           2026-06-01 15:25:10
**** 5600 5500 cmd.exe            2026-06-01 15:25:15
***** 5700 5600 powershell.exe    2026-06-01 15:25:16
****** 5800 5700 rundll32.exe     2026-06-01 15:25:45
*** 6100 3100 notepad.exe         2026-06-01 15:40:00

Hallazgos inmediatos:

  1. EXCEL.EXE (PID 5500) lanzo cmd.exe (PID 5600), que lanzo powershell.exe (PID 5700). Esta cadena es el patron clasico de explotacion de macro.
  2. PowerShell lanzo rundll32.exe (PID 5800), que es un patron comun de ejecucion de payloads.
  3. Todos los procesos sospechosos se crearon entre 15:25:10 y 15:25:45, una ventana de 35 segundos. La infeccion fue rapida y automatizada.

Lineas de comandos

vol -f WKSTN-FIN-042.raw windows.cmdline

Hallazgos:

PID    Process         CommandLine
5500   EXCEL.EXE       "C:\Program Files\Microsoft Office\root\Office16\EXCEL.EXE" "C:\Users\JGarcia\Downloads\Factura_Proveedor_2026.xlsm"
5600   cmd.exe         cmd.exe /c powershell -nop -w hidden -enc UwBlAHQALQBNAHAAUAByAGUAZgBlAHIAZQBuAGMAZQA...
5700   powershell.exe  powershell -nop -w hidden -enc UwBlAHQALQBNAHAAUAByAGUAZgBlAHIAZQBuAGMAZQA...
5800   rundll32.exe    C:\Windows\System32\rundll32.exe C:\Users\JGarcia\AppData\Local\Temp\update.dll,DllMain

Indicadores criticos:

  • Fichero origen: Factura_Proveedor_2026.xlsm (.xlsm = macro habilitada). Descargado a Downloads.
  • PowerShell ofuscado: parametros -nop (no profile), -w hidden (ventana oculta), -enc (Base64). Patron tipico de payload de primera etapa.
  • rundll32.exe ejecutando una DLL desde Temp: carga de segunda etapa. La DLL update.dll en AppData\Local\Temp es el payload real.

Fase 4: Analisis de red

vol -f WKSTN-FIN-042.raw windows.netscan | grep -E "ESTABLISHED|LISTENING"

Conexiones relevantes:

Proto   LocalAddr         LocalPort  ForeignAddr       ForeignPort  State        PID   Owner
TCPv4   192.168.10.42     49832      185.220.101.45    443          ESTABLISHED  5800  rundll32.exe
TCPv4   192.168.10.42     49850      192.168.10.10     445          ESTABLISHED  5800  rundll32.exe
TCPv4   192.168.10.42     49851      192.168.10.15     445          ESTABLISHED  5800  rundll32.exe
TCPv4   192.168.10.42     49900      192.168.10.10     389          ESTABLISHED  5800  rundll32.exe
TCPv4   192.168.10.42     49200      13.107.42.14      443          CLOSED       4200  chrome.exe

Hallazgos:

  1. rundll32.exe (PID 5800) tiene C2 activo con 185.220.101.45:443. Esta IP debe verificarse en bases de threat intel.
  2. Movimiento lateral en progreso: rundll32.exe tiene conexiones SMB (puerto 445) a dos servidores internos (10.10 y 10.15).
  3. Consulta LDAP (puerto 389) al controlador de dominio (10.10). El atacante esta enumerando el Active Directory.
  4. La conexion de Chrome a Microsoft (13.107.42.14) es legitima (servicios cloud de Office).

Fase 5: Codigo inyectado

vol -f WKSTN-FIN-042.raw windows.malfind --pid 5800
PID    Process       Start            Protection                    Hexdump
5800   rundll32.exe  0x000001f0a000   PAGE_EXECUTE_READWRITE
4d 5a 90 00 03 00 00 00   MZ......
04 00 00 00 ff ff 00 00   ........

Cabecera MZ en memoria privada de rundll32.exe. El proceso fue hollowed o tiene un PE inyectado adicionalmente.

vol -f WKSTN-FIN-042.raw windows.malfind --pid 5800 --dump

Extraemos la region y calculamos el hash:

sha256sum pid.5800.vad.0x1f0a000.dmp
# f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3

Buscamos el hash en MalwareBazaar y ThreatFox. Resultado: sin coincidencia directa (variante nueva o custom).

Ejecutamos YARA:

yara malware_rules.yar pid.5800.vad.0x1f0a000.dmp
CobaltStrike_Beacon_Encoded pid.5800.vad.0x1f0a000.dmp

Coincidencia con reglas YARA de Cobalt Strike. El payload es un beacon de Cobalt Strike.

Fase 6: DLLs y handles

vol -f WKSTN-FIN-042.raw windows.dlllist --pid 5800

DLLs sospechosas cargadas por rundll32.exe:

Base             Size     Name           Path
0x00007ff12340   0x4e000  update.dll     C:\Users\JGarcia\AppData\Local\Temp\update.dll
0x00007ffb09120  0x9e000  ws2_32.dll     C:\Windows\System32\ws2_32.dll
0x00007ffb0a230  0x25000  winhttp.dll    C:\Windows\System32\winhttp.dll

update.dll es la DLL que se cargo via la linea de comandos. ws2_32.dll y winhttp.dll indican capacidad de red (coherente con el C2 observado).

vol -f WKSTN-FIN-042.raw windows.handles --pid 5800 --object-type Mutant
Offset        PID    Type    HandleValue  Name
0xfa800...    5800   Mutant  0x1d0        \Sessions\1\BaseNamedObjects\MSCTF.Shared.MUTEX.ZZZ

El mutex MSCTF.Shared.MUTEX.ZZZ no es un mutex estandar de Microsoft. Buscando en bases de IOCs: mutex asociado a Cobalt Strike con configuracion especifica.

vol -f WKSTN-FIN-042.raw windows.handles --pid 5800 --object-type Process
Offset        PID    Type     HandleValue  Name
0xfa800...    5800   Process  0x1f0        lsass.exe Pid 700

rundll32.exe tiene un handle abierto a lsass.exe. Esto confirma intento de volcado de credenciales.

Fase 7: Registro y persistencia

vol -f WKSTN-FIN-042.raw windows.registry.printkey --key "Software\Microsoft\Windows\CurrentVersion\Run"
REG_SZ  WindowsSecurityUpdate : "rundll32.exe C:\Users\JGarcia\AppData\Local\Temp\update.dll,DllMain"

Persistencia establecida via clave Run. El malware se ejecutara cada vez que el usuario inicie sesion.

vol -f WKSTN-FIN-042.raw windows.registry.printkey --key "ControlSet001\Services"

No se encontraron servicios maliciosos. El atacante uso solo Run key (persistencia de nivel usuario, no sistema).

Fase 8: Extraccion de credenciales

vol -f WKSTN-FIN-042.raw windows.hashdump
User              RID    nthash
Administrator     500    31d6cfe0d16ae931b73c59d7e0c089c0
JGarcia           1001   a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6
svc_backup        1002   f1e2d3c4b5a6f7e8d9c0b1a2f3e4d5c6

Los hashes NTLM del sistema local fueron potencialmente accesibles al atacante. El hash de svc_backup es particularmente preocupante si esa cuenta tiene acceso a datos sensibles.

Fase 9: Timeline y reconstruccion

Basandonos en todos los hallazgos, la timeline del incidente:

Hora (UTC)EventoEvidencia
15:25:10Usuario abre Factura_Proveedor_2026.xlsmcmdline EXCEL.EXE
15:25:12Macro maliciosa se ejecutaMacro habilita contenido
15:25:15cmd.exe lanzado desde Excelpstree: EXCEL -> cmd
15:25:16PowerShell ofuscado ejecutadocmdline: -enc Base64
15:25:30update.dll descargado a TempDLL en dlllist
15:25:45rundll32.exe carga update.dllcmdline rundll32
15:25:46Cobalt Strike beacon activomalfind + YARA match
15:25:50C2 establecido con 185.220.101.45netscan ESTABLISHED
15:26:00Persistencia via Run keyprintkey Run
15:30:00Handle a lsass.exe (credential dump)handles Process
15:35:00Enumeracion LDAP del ADnetscan :389
15:40:00Movimiento lateral via SMB a 10.10 y 10.15netscan :445

Fase 10: IOCs extraidos

Indicadores de red

  • IP C2: 185.220.101.45 (puerto 443/TCP)
  • Movimiento lateral: 192.168.10.10, 192.168.10.15 (SMB)

Indicadores de host

  • Fichero: C:\Users\JGarcia\AppData\Local\Temp\update.dll
  • Hash SHA256: f4a3b2c1d0e9f8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3
  • Mutex: MSCTF.Shared.MUTEX.ZZZ
  • Clave de registro: HKCU\Software\Microsoft\Windows\CurrentVersion\Run\WindowsSecurityUpdate
  • Fichero macro: Factura_Proveedor_2026.xlsm

TTPs MITRE ATT&CK

  • T1566.001: Phishing con documento macro (Initial Access)
  • T1059.001: PowerShell (Execution)
  • T1218.011: Rundll32 (Defense Evasion)
  • T1055: Process Injection (Defense Evasion)
  • T1071.001: HTTPS C2 (Command and Control)
  • T1547.001: Registry Run Key (Persistence)
  • T1003.001: LSASS credential dump (Credential Access)
  • T1021.002: SMB lateral movement (Lateral Movement)
  • T1087.002: Domain Account Discovery via LDAP (Discovery)

Atribucion

Cobalt Strike beacon con watermark y configuracion C2 especifica. Cobalt Strike es una herramienta comercial de pentesting ampliamente usada por grupos criminales (especialmente operadores de ransomware) y algunos APTs.

Fase 11: Acciones inmediatas

Basandonos en los hallazgos:

  1. Contener: aislar WKSTN-FIN-042, 192.168.10.10 y 192.168.10.15 de la red.
  2. Bloquear: IP 185.220.101.45 en firewall perimetral y proxy.
  3. Resetear credenciales: cuenta JGarcia y svc_backup inmediatamente.
  4. Verificar: si las credenciales de svc_backup dan acceso a backups/datos sensibles.
  5. Analizar: volcados de memoria de 10.10 y 10.15 para determinar alcance del movimiento lateral.
  6. Buscar: el fichero Factura_Proveedor_2026.xlsm en el servidor de email para identificar si otros empleados lo recibieron.
  7. Monitorizar: trafico hacia 185.220.101.45 y el mutex en todos los endpoints via EDR.

Leccion aprendida

Este caso ilustra por que el analisis de memoria es insustituible. El EDR detecto la actividad de PowerShell, pero sin la memoria no hubieramos podido:

  • Confirmar que el payload era Cobalt Strike.
  • Identificar el C2 exacto.
  • Descubrir el movimiento lateral en progreso.
  • Verificar que las credenciales de lsass fueron accedidas.
  • Encontrar el mecanismo de persistencia especifico.
  • Extraer IOCs para buscar en el resto de la infraestructura.

El volcado de memoria capturo 35 minutos de actividad maliciosa en una sola fuente de evidencia coherente. Ningun log individual contenia toda esta informacion.

Proximo paso

El ultimo articulo de la serie cubre la automatizacion del analisis de memoria: scripts Python con Volatility, pipelines CI/CD de analisis automatico, YARA scanning de memoria, y como integrar memory forensics en el workflow de respuesta a incidentes de un SOC.

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.