Una de las primeras fases de un análisis forense de memoria consiste en obtener una imagen de la memoria RAM del equipo que se quiere investigar.
Para realizar una práctica controlada en Windows podemos utilizar WinPmem, una herramienta que permite adquirir el contenido de la memoria física y almacenarlo en un archivo que posteriormente podremos analizar con Volatility 3.
La práctica se puede dividir en dos equipos:
- Equipo 1: Windows de laboratorio donde se realiza la adquisición de memoria.
- Equipo 2: equipo de análisis donde se ejecuta Volatility 3.
De esta forma, memoria.raw se convierte en nuestra evidencia forense.
1. Descargar WinPmem
En primer lugar, descarga WinPmem desde su repositorio oficial:
https://github.com/Velocidex/WinPmem
En un Windows moderno de 64 bits normalmente utilizaremos:
winpmem_mini_x64.exe
Guarda el ejecutable en una carpeta destinada al laboratorio.
Por ejemplo:
C:\Forense\
2. Crear la estructura del laboratorio
Abre PowerShell como administrador y ejecuta:
mkdir C:\Forense
mkdir C:\Forense\evidence
La estructura quedará:
C:\Forense\
├── winpmem_mini_x64.exe
└── evidence\
Copia winpmem_mini_x64.exe dentro de C:\Forense.
A continuación:
cd C:\Forense
3. Generar actividad en el equipo
Para que la imagen de memoria contenga información interesante, podemos generar previamente cierta actividad controlada.
Por ejemplo:
mkdir C:\LaboratorioForense
Crear un archivo de prueba:
"Prueba de análisis forense" | Out-File C:\LaboratorioForense\prueba.txt
Abrirlo con el Bloc de notas:
notepad.exe C:\LaboratorioForense\prueba.txt
También podemos abrir una consola:
cmd.exe
De esta manera tendremos procesos y actividad que posteriormente podremos investigar con Volatility.
4. Adquirir la memoria RAM
Con PowerShell ejecutándose como administrador, situándonos en:
cd C:\Forense
ejecutamos:
.\winpmem_mini_x64.exe C:\Forense\evidence\memoria.raw
WinPmem comenzará la adquisición de la memoria física.
El proceso puede tardar dependiendo de la cantidad de RAM y de las características del equipo.
Cuando termine, comprobaremos que se ha generado la evidencia:
dir C:\Forense\evidence
Deberíamos encontrar:
memoria.raw
El tamaño del archivo dependerá de la memoria RAM disponible en el equipo.
Por ejemplo, un ordenador con 16 GB de RAM puede generar una imagen de varios gigabytes.
5. Proteger la evidencia
En un escenario forense es recomendable conservar la evidencia original y trabajar sobre una copia.
También podemos calcular un hash para poder comprobar posteriormente que el archivo no ha sido modificado.
Por ejemplo, utilizando SHA-256:
Get-FileHash C:\Forense\evidence\memoria.raw -Algorithm SHA256
El resultado será similar a:
Algorithm Hash
--------- ----
SHA256 8F4B...XXXXXXXX
Este valor permite verificar posteriormente la integridad de la imagen.
6. Analizar memoria.raw con Volatility 3
Una vez obtenida la imagen, podemos copiarla al equipo donde tengamos instalado Volatility 3.
Por ejemplo:
volatility3/
├── vol.py
├── volatility3/
└── evidencia/
└── memoria.raw
Desde el directorio de Volatility podemos comenzar comprobando que la imagen es reconocida:
python vol.py -f evidencia/memoria.raw windows.info
En macOS o Linux:
python3 vol.py -f evidencia/memoria.raw windows.info
Este comando permite obtener información sobre el sistema Windows presente en la imagen.
7. Analizar los procesos
Una de las primeras investigaciones que podemos realizar consiste en identificar los procesos que estaban ejecutándose.
python3 vol.py -f evidencia/memoria.raw windows.pslist
También podemos utilizar:
python3 vol.py -f evidencia/memoria.raw windows.pstree
pslist proporciona una lista de procesos mientras que pstree permite observar la relación entre procesos.
Esto puede ser especialmente interesante para detectar procesos inesperados o relaciones anómalas entre procesos.
8. Analizar los comandos ejecutados
Volatility también permite investigar las líneas de comandos asociadas a determinados procesos:
python3 vol.py -f evidencia/memoria.raw windows.cmdline
En una práctica docente podemos comprobar si las acciones realizadas anteriormente en el equipo aparecen reflejadas en la memoria.
9. Analizar las conexiones de red
Para investigar conexiones de red presentes en la memoria:
python3 vol.py -f evidencia/memoria.raw windows.netscan
Este análisis puede proporcionar información sobre conexiones TCP/UDP y los procesos asociados.
Por ejemplo, puede ayudar a relacionar una conexión de red con un proceso concreto.
10. Buscar archivos en memoria
También podemos utilizar:
python3 vol.py -f evidencia/memoria.raw windows.filescan
Este plugin permite localizar estructuras relacionadas con archivos presentes en la memoria.
En nuestro escenario podemos investigar, entre otros elementos, si aparecen referencias relacionadas con:
C:\LaboratorioForense\prueba.txt
11. Buscar posibles procesos sospechosos
Otra herramienta interesante para una práctica de análisis de malware es:
python3 vol.py -f evidencia/memoria.raw windows.malfind
malfind puede ayudar a identificar regiones de memoria potencialmente sospechosas asociadas a procesos.
Es importante interpretar sus resultados correctamente: una detección de malfind no significa automáticamente que exista malware. Los resultados deben analizarse junto con el resto de evidencias.
12. Flujo completo de la práctica
El laboratorio completo puede seguir este esquema:
┌─────────────────────────────┐
│ WINDOWS DE LABORATORIO │
│ │
│ Generar actividad │
│ ├─ procesos │
│ ├─ archivos │
│ ├─ comandos │
│ └─ conexiones │
│ │ │
│ ▼ │
│ WinPmem │
│ │ │
│ ▼ │
│ memoria.raw │
└─────────────┬───────────────┘
│
│ Copia de evidencia
▼
┌─────────────────────────────┐
│ EQUIPO FORENSE │
│ │
│ Volatility 3 │
│ │ │
│ ┌─────────┼─────────┐ │
│ ▼ ▼ ▼ │
│ pslist pstree cmdline │
│ │ │ │ │
│ ├──── netscan ──────┤ │
│ │ │ │ │
│ └────── malfind ────┘ │
│ │
│ INFORME FORENSE │
└─────────────────────────────┘
13. Comandos principales
Como resumen, estos son algunos de los comandos que podemos utilizar durante la práctica:
# Información del sistema
python3 vol.py -f memoria.raw windows.info
# Procesos
python3 vol.py -f memoria.raw windows.pslist
# Árbol de procesos
python3 vol.py -f memoria.raw windows.pstree
# Líneas de comandos
python3 vol.py -f memoria.raw windows.cmdline
# Conexiones de red
python3 vol.py -f memoria.raw windows.netscan
# Archivos
python3 vol.py -f memoria.raw windows.filescan
# Posibles regiones sospechosas
python3 vol.py -f memoria.raw windows.malfind
14. Objetivo de la práctica
El objetivo no es únicamente conseguir un archivo memoria.raw, sino comprender el proceso completo de una investigación forense:
adquisición → preservación → análisis → interpretación → documentación
Los alumnos pueden comenzar con un escenario conocido y posteriormente intentar responder preguntas como:
- ¿Qué procesos estaban ejecutándose?
- ¿Qué procesos habían sido lanzados por otros procesos?
- ¿Qué comandos se habían utilizado?
- ¿Qué conexiones de red existían?
- ¿Qué archivos aparecen asociados a la actividad?
- ¿Existen regiones de memoria potencialmente sospechosas?
- ¿Qué evidencias permiten reconstruir la actividad realizada?