Análisis Dinámico de Malware: Sandboxes, Debuggers y Monitorización
Guía completa de análisis dinámico de malware. Ejecución controlada en sandbox (ANY.RUN, Joe Sandbox, CAPE), debugging con x64dbg y GDB, monitorización con Procmon/Sysmon/Wireshark, y el workflow de análisis behavioral paso a paso.
Ver al malware en acción
El análisis estático te dice qué puede hacer el malware. El análisis dinámico te dice qué hace realmente. Un PE puede importar CreateRemoteThread (capacidad de inyección) pero ¿en qué proceso inyecta? ¿Qué código inyecta? ¿Cuándo lo hace? Solo la ejecución controlada responde estas preguntas.
Sandboxes automatizados
Sandboxes online
| Sandbox | Tipo | Interactivo | Análisis | Coste |
|---|---|---|---|---|
| ANY.RUN | Cloud | Sí (control en tiempo real) | Procesos, red, archivos, registro, MITRE mapping | Free tier + comercial |
| Joe Sandbox | Cloud | No (automatizado) | El más profundo: behavioral, YARA, Sigma, clasificación | Comercial (community free) |
| Hybrid Analysis | Cloud | No | Falcon sandbox (CrowdStrike). Buenos resultados, gratuito | Gratuito |
| Triage (Hatching) | Cloud | Parcial | Rápido, buen análisis de red y behavioral | Free tier + comercial |
| VirusTotal (behavior) | Cloud | No | Ejecución en sandbox de VT, behavioral report | Gratuito |
Sandboxes self-hosted
| Sandbox | Base | Ventaja |
|---|---|---|
| CAPE (Cuckoo fork) | Python/KVM | Open source, altamente configurable, extracción de configs |
| Cuckoo 3 | Python/KVM | Versión moderna de Cuckoo (reescrito) |
| Drakvuf | Xen | Introspección via hypervisor (sin agente en la VM) |
| FAME | Python | Framework de análisis modular |
Workflow con ANY.RUN
1. Subir muestra a ANY.RUN
2. Seleccionar OS (Windows 10/11, Office version)
3. Configurar:
- Duracion (60-300 segundos)
- Red (permitir o simular)
- Interactividad (si necesita click del usuario)
4. Observar en tiempo real:
- Procesos creados (arbol de procesos)
- Conexiones de red (DNS, HTTP, TCP)
- Archivos creados/modificados
- Registro modificado
5. Interactuar si necesario (hacer click en "Enable Macros", etc.)
6. Descargar informe: IOCs, PCAP, dropped files, screenshots
Workflow con CAPE (self-hosted)
# Instalar CAPE
git clone https://github.com/kevoreilly/CAPEv2
cd CAPEv2
./installer/cape2.sh base
# Subir muestra via API
curl -F "[email protected]" http://localhost:8000/apiv2/tasks/create/file/
# Ver resultados
# Web UI: http://localhost:8000
# Resultados incluyen: extracted configs, dumped payloads, YARA matches
CAPE es especialmente valioso por su capacidad de extraer configuraciones de malware automáticamente (Agent Tesla configs, Cobalt Strike beacon configs, RAT configs).
Análisis dinámico manual
Herramientas de monitorización en Windows
| Herramienta | Qué monitoriza | Uso |
|---|---|---|
| Process Monitor (Procmon) | Archivos, registro, procesos, red (básico) | Monitorización en tiempo real de toda actividad |
| Process Hacker / System Informer | Procesos, threads, handles, memoria, red | Inspección detallada de procesos |
| Regshot | Cambios en el registro | Snapshot antes/después de ejecución |
| Wireshark | Tráfico de red completo | Captura y análisis de PCAP |
| FakeNet-NG | DNS, HTTP, SMTP, FTP falsos | Simular servicios de red para que el malware "funcione" |
| INetSim | Servicios de red simulados | Alternativa a FakeNet (Linux) |
| API Monitor | Llamadas a APIs de Windows | Logging detallado de API calls |
| Sysmon | Eventos del sistema (procesos, red, registro, archivos) | Telemetría persistente |
Workflow de análisis dinámico manual
ANTES de ejecutar:
1. Snapshot de la VM (poder revertir)
2. Iniciar Procmon con filtros (excluir ruido del sistema)
3. Iniciar Wireshark (captura de tráfico)
4. Iniciar FakeNet-NG o INetSim (servicios falsos de red)
5. Iniciar Process Hacker (monitorización de procesos)
6. Tomar snapshot de registro con Regshot (primer snapshot)
EJECUTAR la muestra:
7. Ejecutar el malware
8. Esperar 2-5 minutos (observar comportamiento)
9. Si el malware requiere interacción: proporcionar input
DESPUÉS:
10. Tomar segundo snapshot de Regshot (comparar cambios)
11. Detener Procmon, Wireshark
12. Guardar logs, PCAPs, screenshots
13. Analizar:
- Procmon: qué archivos/registro modificó
- Wireshark: a qué IPs/dominios conectó
- Process Hacker: qué procesos creó, inyecciones
- Regshot: qué claves de registro cambió
14. Revertir VM al snapshot limpio
Procmon: filtros esenciales
# Filtros recomendados para malware analysis:
# Incluir solo actividad del proceso malware
Process Name is sample.exe then Include
# Excluir ruido del sistema
Process Name is System then Exclude
Process Name is svchost.exe then Exclude
Process Name is explorer.exe then Exclude
Process Name is MsMpEng.exe then Exclude
Operation is QueryBasicInformationFile then Exclude
Operation is QueryStandardInformationFile then Exclude
Operation is RegQueryKey then Exclude
Result is SUCCESS then Include # Solo operaciones exitosas
FakeNet-NG: simular Internet
FakeNet-NG (Mandiant) simula servicios de Internet para que el malware pueda comunicarse sin conexión real a Internet:
# Instalar (incluido en FlareVM)
# Ejecutar:
FakeNet.exe
# FakeNet intercepta:
# - DNS queries → responde con IP local
# - HTTP requests → responde con pagina generica
# - HTTPS → certificado falso
# - SMTP → acepta emails
# - FTP → acepta conexiones
# - IRC → simula servidor
# El malware "cree" que tiene conexion a Internet
# y ejecuta su comportamiento completo
Debugging con x64dbg
Por qué debuggear malware
El debugging permite:
- Ejecutar el malware instrucción por instrucción
- Inspeccionar memoria en cada momento
- Modificar la ejecución (cambiar registros, parchear código)
- Extraer datos descifrados de memoria
- Encontrar el OEP (Original Entry Point) en malware empaquetado
- Bypasear checks anti-analysis (NOP las instrucciones de detección)
Workflow básico con x64dbg
1. Cargar muestra en x64dbg (File > Open)
2. x64dbg se detiene en el entry point del loader (ntdll)
3. Ejecutar hasta el entry point del programa:
Debug > Run to User Code (Alt+F9)
O poner breakpoint en el entry point (Ctrl+G > address)
4. Navegar el codigo:
F7 = Step Into (entrar en funciones)
F8 = Step Over (ejecutar funciones sin entrar)
F9 = Run (ejecutar hasta el siguiente breakpoint)
5. Poner breakpoints en funciones interesantes:
- CreateRemoteThread (inyeccion)
- VirtualAllocEx (asignacion de memoria remota)
- InternetConnectA/W (conexion de red)
- CryptEncrypt (cifrado)
- RegSetValueExA/W (persistencia)
Ctrl+G > escribir nombre de funcion > F2 (toggle breakpoint)
6. Cuando un breakpoint se activa:
- Inspeccionar registros (panel derecho)
- Inspeccionar stack (panel inferior derecho)
- Inspeccionar memoria (Memory Map, Ctrl+M)
- Ver parametros de la funcion en la stack
7. Extraer datos:
- Seleccionar memoria > Follow in Dump
- Click derecho > Copy > Selection to File
Breakpoints útiles para malware
| API | Por qué poner breakpoint |
|---|---|
CreateRemoteThread | Ver en qué proceso inyecta y qué código |
VirtualAllocEx | Ver dónde asigna memoria (tamaño, permisos) |
WriteProcessMemory | Ver qué datos escribe en otro proceso |
InternetConnectA | Ver el servidor C2 (hostname, puerto) |
HttpSendRequestA | Ver datos enviados al C2 |
CryptEncrypt | Ver datos antes del cifrado |
RegSetValueExA | Ver qué persistencia configura |
CreateFileA | Ver qué archivos crea |
IsDebuggerPresent | Bypasear anti-debug (cambiar EAX a 0 al retornar) |
Anti-debug bypass en x64dbg
# Metodo 1: plugin ScyllaHide
# Plugins > ScyllaHide > Options > seleccionar protecciones
# ScyllaHide parchea automaticamente los checks anti-debug
# Metodo 2: manual
# Breakpoint en IsDebuggerPresent
# Cuando se activa: cambiar EAX a 0 (falso) antes de retornar
# O NOP la instruccion de comparacion
Regshot: comparar estado del registro
1. Ejecutar Regshot
2. Click "1st shot" (snapshot del registro antes)
3. Ejecutar el malware, esperar
4. Click "2nd shot" (snapshot del registro despues)
5. Click "Compare" (ver diferencias)
# Output muestra:
# Keys added: 3
# HKCU\Software\Microsoft\Windows\CurrentVersion\Run\UpdateService
# Values modified: 5
# HKCU\...\Run\UpdateService: "C:\Users\user\AppData\svc.exe"
Mapeo MITRE ATT&CK de las técnicas observadas
Después del análisis dinámico, mapear el comportamiento observado a ATT&CK:
| Comportamiento observado | Técnica ATT&CK |
|---|---|
| Conexión HTTP a IP externa | T1071.001 (Web Protocols) |
| Creación de Run key | T1547.001 (Registry Run Keys) |
| Creación de scheduled task | T1053.005 (Scheduled Task) |
| Inyección en svchost.exe | T1055.001 (DLL Injection) |
| Eliminación de shadow copies | T1490 (Inhibit System Recovery) |
| Dump de LSASS | T1003.001 (LSASS Memory) |
| Captura de teclado | T1056.001 (Keylogging) |
| Screenshot | T1113 (Screen Capture) |
| Exfiltración via HTTP POST | T1041 (Exfiltration Over C2) |
| DNS query a dominio DGA | T1568.002 (Domain Generation Algorithms) |
Fuentes y referencias
- Sikorski, M. & Honig, A. "Practical Malware Analysis." No Starch Press, 2012.
- Monnappa, K. "Learning Malware Analysis." Packt Publishing, 2018.
- ANY.RUN. "Interactive Malware Sandbox." https://any.run/
- Joe Sandbox. "Malware Analysis." https://www.joesandbox.com/
- Mandiant. "FakeNet-NG." https://github.com/mandiant/flare-fakenet-ng
- x64dbg. "An open-source x64/x32 debugger." https://x64dbg.com/
- kevoreilly. "CAPEv2 Sandbox." https://github.com/kevoreilly/CAPEv2
- Sysinternals. "Process Monitor." Microsoft.
- ntopng/Regshot. "Registry Compare." https://sourceforge.net/projects/regshot/
Preguntas frecuentes
Libros recomendados
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.