Ghost AcademyGhostForensics · Ghost Academy
GhostForensicsMódulo 08Caso práctico

Forense de memoria RAM I: adquisición y estructuras

Todo lo visto hasta ahora vive en disco: sobrevive al apagado, por eso se adquiere después. La memoria RAM es justo lo contrario — el artefacto más valioso y el más efímero de todos, en lo más alto del orden de volatilidad del módulo 1. Este módulo cubre cómo capturarla sin destruirla en el proceso, y cómo una herramienta como Volatility3 consigue interpretar un volcado de bytes aparentemente aleatorio como una estructura con sentido.

Objetivos de la unidad
📦 Caso práctico descargable

Descarga el paquete de evidencia, descomprímelo y lee el LEEME.md antes de empezar. Verifica el hash según el módulo 2 antes de analizar nada:

Hashes de referencia (ver también LEEME.md):

⬇️ Descargar M08_AdquisicionMemoria.zip   Ver solución paso a paso →

1. Por qué la memoria importa

Hay categorías enteras de evidencia que solo existen en RAM mientras el equipo está encendido, y que ningún artefacto de disco sustituye del todo:

2. Herramientas de adquisición de memoria

HerramientaSistemaQué aporta
WinPmemWindowsOpen source, genera un volcado en formato AFF4 o RAW; es el sucesor del proyecto Rekall.
FTK ImagerWindowsLa misma herramienta del módulo 2 también puede volcar la RAM completa (Capture Memory), en RAW.
LiME (Linux Memory Extractor)LinuxMódulo de kernel que se carga en caliente y vuelca la memoria a fichero o por red, sin necesidad de reiniciar.
avmlLinuxHerramienta de Microsoft, estática y sin dependencias del kernel objetivo — útil cuando no puedes compilar un módulo LiME específico para esa versión de kernel.

3. Adquisición en Windows con WinPmem

analista@lab (salida real)
$ winpmem_mini_x64.exe dump_caso08.aff4
Driver written to C:\Windows\Temp\pmem.sys
Imaging memory...  [####################] 100%
Output: dump_caso08.aff4  (16.0 GB)

WinPmem instala un controlador temporal en modo kernel que le permite leer la memoria física directamente, saltándose las restricciones que el propio Windows impone al espacio de usuario. Al terminar, el controlador se descarga; el único rastro que deja en disco es el propio fichero de volcado si no se elimina.

4. Adquisición en Linux con LiME

LiME se compila como módulo de kernel específico para la versión exacta del kernel objetivo — no hay un binario universal, porque las estructuras internas del kernel cambian entre versiones (lo que conecta directamente con el punto 5).

analista@lab (salida real)
$ sudo insmod lime-5.15.0-91-generic.ko "path=dump_caso08.lime format=lime"
[  812.441205] lime: module loaded, dumping to dump_caso08.lime
[  819.883012] lime: dump complete (17179869184 bytes)
Cargar un módulo de kernel modifica el estado del sistema. Es una contradicción inevitable: para capturar la memoria en vivo hay que ejecutar código en el propio sistema que se está investigando, lo que técnicamente lo altera un poco. Se documenta igualmente en la cadena de custodia (módulo 1): qué herramienta, qué versión, a qué hora exacta se cargó.

5. Cómo Volatility interpreta bytes en bruto

Un volcado de memoria es, a simple vista, una secuencia enorme de bytes sin estructura visible. Volatility la interpreta localizando en esos bytes las estructuras internas del kernel que el propio sistema operativo usa para gestionar procesos y memoria: en Windows, cada proceso tiene una estructura EPROCESS; en Linux, un task_struct. Encontrar esas estructuras y saber interpretar sus campos exige conocer el diseño exacto de esa versión concreta del sistema operativo — el mismo campo puede estar en un offset distinto entre dos builds de Windows, o entre dos versiones de kernel de Linux.

Volatility3 resuelve esto con symbol packs: tablas que describen, para cada versión de sistema operativo, dónde está cada campo de cada estructura relevante. Sin el symbol pack correcto, Volatility3 no puede interpretar la memoria con fiabilidad.

analista@lab (salida real)
$ pip install volatility3
vol.py -f dump_caso08.aff4 windows.info
Kernel Base            0xf80612a00000
NTBuildLab             22621.1.amd64fre.ni_release.220506-1250
Symbols                https://downloads.volatilityfoundation.org/volatility3/symbols/windows/ntkrnlmp.pdb/...json.xz

El propio plugin windows.info identifica la versión exacta y, si hace falta, descarga automáticamente el symbol pack correspondiente la primera vez que se analiza esa versión de sistema.

6. Primeros plugins de reconocimiento

Con la versión ya identificada, el primer paso de cualquier análisis es listar los procesos en ejecución en el momento de la captura:

analista@lab (salida real)
$ vol.py -f dump_caso08.aff4 windows.pslist
PID    PPID   ImageFileName       CreateTime
612    4      lsass.exe           2026-03-14 02:01:10
4821   612    svc_update.exe      2026-03-14 02:08:55
4902   4821   powershell.exe      2026-03-14 02:09:12

Ya en esta primera lista hay una anomalía digna de investigar: svc_update.exe con PID 4821 tiene como padre a lsass.exe (PID 612) — un proceso de usuario normal nunca debería colgar directamente del proceso de autenticación de Windows. Esto se trabaja a fondo en el módulo 9 (procesos maliciosos, inyección, rootkits), que retoma exactamente este volcado.

🧰 Guided Lab relacionado (Ghost Academy)

Laboratorio guiado ya publicado en Ghost Academy que puedes usar para practicar esta herramienta:

Dump Memoria RAM (lab)

Autoevaluación

  1. Nombra tres tipos de evidencia que solo existen en memoria y no en ningún artefacto de disco visto hasta ahora.
  2. ¿Por qué LiME necesita compilarse para la versión exacta del kernel, en lugar de usar un binario universal como WinPmem en Windows?
  3. ¿Qué es un symbol pack en Volatility3 y qué pasa si se usa el equivocado para la versión del sistema analizado?
  4. ¿Por qué cargar un módulo de kernel para capturar memoria es, en cierto sentido, contradictorio con el principio de no alterar la evidencia, y por qué se acepta igualmente como procedimiento estándar?
  5. En la salida de windows.pslist de este capítulo, ¿qué detalle concreto de la relación padre-hijo entre procesos debería llamar la atención de un analista?