Parte: 9 — Forense digital y respuesta a incidentes · Fuente: Ligh, Case, Levy, Walters — The Art of Memory Forensics (Wiley, 2014) ⏱️ Duración estimada: 140 min · Nivel: Avanzado
Aprender a adquirir y analizar volcados de memoria RAM con Volatility 3 para descubrir lo que el disco no revela: procesos ocultos, conexiones de red activas, inyección de código, malware sin archivo y credenciales en memoria. Al terminar podrás cazar amenazas que solo viven en RAM.
Al finalizar, el alumno podrá:
| # | Tema | Por qué importa |
|---|---|---|
| 1 | Por qué la RAM importa | Malware fileless vive ahí |
| 2 | Adquisición de memoria | Orden de volatilidad máximo |
| 3 | Enumeración de procesos | Base de todo análisis |
| 4 | Conexiones de red | C2 y exfiltración |
| 5 | Inyección de código | Malware avanzado |
| 6 | Extracción de binarios | Recuperar el malware |
| 7 | Detección de ocultamiento | Rootkits y DKOM |
| 8 | Volatility 3 y perfiles | La herramienta estándar |
pslist no lo ve, psscan sí.pslist vs psscan: el primero recorre la lista enlazada de procesos; el segundo escanea memoria por firmas. Característica: la discrepancia delata ocultamiento.pip install volatility3.Adquiere memoria de una VM propia o usa una muestra de entrenamiento pública.
powershell
winpmem_mini.exe memoria.raw
En Linux con AVML:
bash
./avml memoria.lime
bash
vol -f memoria.raw windows.pslist
bash
vol -f memoria.raw windows.psscan
Cualquier PID en psscan que no esté en pslist es sospechoso.
4. Revisa el árbol de procesos para relaciones padre-hijo raras:
bash
vol -f memoria.raw windows.pstree
bash
vol -f memoria.raw windows.netscan
bash
vol -f memoria.raw windows.malfind
bash
vol -f memoria.raw -o ./salida windows.malfind --pid 1337 --dump # región RWX inyectada
# (windows.pslist --pid 1337 --dump vuelca el PE del proceso; dumpfiles solo saca archivos mapeados)
bash
vol -f memoria.raw windows.cmdline
vol -f memoria.raw windows.dlllist --pid 1337
cmdline.A partir de un volcado de memoria (propio o de entrenamiento) que contenga un proceso malicioso inyectado, identifícalo, documenta cómo lo detectaste y extrae su código para análisis.
Criterio de aceptación: entregas (a) el PID y nombre del proceso malicioso, (b) la evidencia de inyección (salida de malfind con región RWX), (c) su conexión de red si la hay, y (d) el binario extraído con dumpfiles.
| Síntoma / mensaje | Causa y cómo arreglar |
|---|---|
Unsatisfied requirement / símbolos |
Volatility no halló símbolos del kernel. Deja que los descargue o provee el ISF correcto. |
pslist no ve el malware |
Ocultamiento por DKOM. Usa psscan. |
| Volcado corrupto o truncado | Adquisición interrumpida. Repite con la máquina estable. |
| Plugins de Vol 2 no funcionan | Sintaxis distinta en Vol 3. Usa windows.<plugin>. |
| netscan vacío | Volcado de un SO no soportado o muy antiguo. Verifica la versión. |
❓ ¿Volatility 2 o 3? 3 es el estándar actual, en Python 3 y con descarga automática de símbolos. 2 sigue vivo por compatibilidad con plugins antiguos.
❓ ¿Cómo detecto malware fileless?
En memoria: procesos sin archivo en disco, inyección RWX (malfind), y PowerShell/WMI en cmdline. El disco no lo mostraría.
❓ ¿Puedo sacar contraseñas de la RAM? A veces sí (hashes, tokens, incluso texto plano). Trátalas como datos sensibles y protégelas.
❓ ¿Por qué pslist y psscan difieren? pslist confía en la lista del SO (manipulable); psscan escanea la memoria cruda por firmas y encuentra lo ocultado.
Clase 206 — Análisis de artefactos de Linux