Clase 207 — Forense de memoria RAM con Volatility

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


🎯 Objetivo

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.

📚 Resultados de aprendizaje

Al finalizar, el alumno podrá:

  1. Adquirir volcados de memoria en Windows y Linux de forma forense.
  2. Enumerar procesos, DLLs, handles y conexiones desde un volcado.
  3. Detectar inyección de código y procesos ocultos.
  4. Extraer ejecutables y artefactos de la memoria.
  5. Usar Volatility 3 con sus plugins principales.

🗺️ Temas

# 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

📖 Definiciones y características

🧰 Herramientas y preparación

🧪 Laboratorio guiado

Adquiere memoria de una VM propia o usa una muestra de entrenamiento pública.

  1. Adquiere la memoria (Windows, WinPmem):

powershell winpmem_mini.exe memoria.raw

En Linux con AVML:

bash ./avml memoria.lime

  1. Lista procesos:

bash vol -f memoria.raw windows.pslist

  1. Busca procesos ocultos comparando con psscan:

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

  1. Enumera conexiones de red:

bash vol -f memoria.raw windows.netscan

  1. Caza inyección de código:

bash vol -f memoria.raw windows.malfind

  1. Vuelca un proceso sospechoso para análisis:

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)

  1. Revisa DLLs cargadas y líneas de comando:

bash vol -f memoria.raw windows.cmdline vol -f memoria.raw windows.dlllist --pid 1337

✍️ Ejercicios

  1. Explica por qué se adquiere RAM antes que disco.
  2. Detecta un proceso oculto comparando pslist y psscan.
  3. Identifica una conexión de red sospechosa con netscan.
  4. Usa malfind para hallar una región RWX inyectada.
  5. Extrae el ejecutable de un proceso malicioso de la memoria.
  6. Reconstruye la línea de comandos de un proceso con cmdline.

📝 Reto verificable

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.

⚠️ Errores comunes

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.

❓ Preguntas frecuentes

❓ ¿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.

🔗 Referencias

📥 Material descargable

⬅️ Clase anterior

Clase 206 — Análisis de artefactos de Linux

➡️ Siguiente clase

Clase 208 — Forense de red