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 | Conserva estado de ejecución y datos que pueden no persistir en disco |
| 2 | Adquisición de memoria | Prioridad alta condicionada por riesgo y viabilidad |
| 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, capas y símbolos | Permiten interpretar estructuras cuando corresponden al sistema capturado |
La RAM captura estado vivo: procesos, mapeos, sockets, credenciales o claves potenciales y rastros ya ausentes del disco. También es una instantánea incompleta y cambiante. Adquirirla modifica memoria; la meta es minimizar y documentar ese efecto.
Volatility 3 interpreta estructuras mediante capas y símbolos; un plugin no «encuentra malware», presenta objetos que el analista contextualiza. Diferencias entre listas de procesos pueden revelar ocultamiento o artefactos terminados, pero también limitaciones de adquisición. malfind señala regiones con características sospechosas, no un veredicto. Se preservan volcado, hash, versión, símbolos, comando y salida.
Volatility no adquiere memoria: analiza un volcado producido por otra herramienta. El agente de adquisición ocupa páginas, crea handles y consume CPU; además, el contenido puede cambiar mientras se copia. Se registra herramienta, hash del binario, privilegio, hora, tamaño esperado, salida y hash final. Una captura truncada o inconsistente todavía puede aportar datos, pero la limitación acompaña cada conclusión.
La prioridad de RAM depende de la pregunta. Puede conservar procesos, sockets, comandos, regiones mapeadas, claves o contenido descifrado que desaparecerán al apagar. También puede contener secretos de terceros y datos fuera del alcance; autorización, minimización y almacenamiento protegido forman parte del método.
Volatility 3 usa capas para traducir offsets y tablas de símbolos para interpretar estructuras. En Windows puede obtener símbolos desde PDB; en Linux normalmente necesita símbolos correspondientes al kernel. Una tabla incorrecta puede producir errores o valores plausibles pero falsos. Antes de buscar anomalías se confirma banner, arquitectura, versión y coherencia de plugins básicos.
pslist, pstree y los scanners responden preguntas distintas. La lista activa describe objetos enlazados; un scanner busca patrones en páginas y puede recuperar procesos terminados o falsos candidatos. La discrepancia inicia una investigación: tiempos, PID, padre, threads, handles y regiones deben coincidir antes de atribuir ocultamiento.
Una región ejecutable y escribible puede ser sospechosa, pero JIT, empaquetadores y software de seguridad también generan permisos inusuales. malfind y plugins relacionados priorizan regiones; el analista examina protección, contenido, mapeo, hilo y proceso. Una conexión se relaciona con proceso y tiempo; no basta un destino reputado.
Al extraer una región o PE se conserva offset virtual/físico, proceso, comando, hash y plugin. El objeto puede ser parcial o reconstruido; se analiza como derivado de la memoria, no como copia necesariamente idéntica al archivo original. Disco, EDR y red corroboran su papel.
malfind: plugin que prioriza regiones según características de memoria. Característica: produce candidatos para análisis, no un veredicto automático.pstree muestra un proceso firmado iniciado por su padre esperado. malfind señala una región privada ejecutable; un hilo comienza dentro de ella y netscan relaciona el PID con una conexión reciente. La región contiene cabecera parcial y cadenas de configuración. Esto es consistente con inyección, pero todavía se compara con comportamiento JIT normal de esa aplicación y con EDR.
El analista exporta la región y registra proceso, offset, protección, plugin y hash. El scanner también muestra un proceso terminado: sus tiempos preceden la captura y no se presenta como activo. La conclusión diferencia objeto activo, residuo y derivado extraído.
El alumno identifica sistema y símbolos, compara enumeraciones, relaciona proceso–región–hilo–red y conserva procedencia de toda extracción. Ejecutar malfind y etiquetar todas sus filas como malware no cumple el criterio.
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? Volatility 3 es la rama documentada actualmente y usa Python 3. Puede obtener símbolos disponibles para ciertas plataformas, pero el analista debe verificar correspondencia y disponibilidad; Volatility 2 todavía aparece en procedimientos y plugins históricos.
❓ ¿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