Volatility 3: Instalacion, Configuracion y Primeros Pasos
Guia completa de instalacion y configuracion de Volatility 3 para analisis forense de memoria. Tablas de simbolos, plugins esenciales, primer analisis de un volcado de memoria Windows y Linux, y diferencias con Volatility 2.
El framework de referencia para analisis de memoria
Volatility es al analisis de memoria lo que Wireshark es al analisis de red: la herramienta que todo analista debe dominar. Volatility 3 es la version actual, reescrita completamente en Python 3 con una arquitectura mas moderna que su predecesor.
En este articulo instalamos Volatility 3, configuramos las tablas de simbolos, ejecutamos los primeros plugins y aprendemos a interpretar los resultados. Si vienes de Volatility 2, cubrimos tambien las diferencias clave.
Instalacion
Requisitos previos
- Python 3.8 o superior (recomendado 3.11 o 3.12)
- pip actualizado
- Git (para clonar el repositorio)
- Conexion a internet (para descargar tablas de simbolos)
Instalacion desde PyPI
La forma mas rapida:
pip install volatility3
Esto instala Volatility 3 y sus dependencias. El comando principal sera vol o vol3.
Instalacion desde el repositorio
Para tener la version mas reciente con todos los plugins:
git clone https://github.com/volatilityfoundation/volatility3.git
cd volatility3
pip install -e .
La instalacion en modo editable (-e) permite actualizar con git pull sin reinstalar.
Verificacion
vol --help
Si ves la lista de plugins y opciones, la instalacion fue correcta. La salida mostrara algo como:
Volatility 3 Framework 2.x.x
usage: vol [-h] [-c CONFIG] [-e] [-p PLUGIN_DIRS] ...
Dependencias opcionales
Algunas funcionalidades requieren paquetes adicionales:
pip install pycryptodome # Para plugins de cifrado
pip install yara-python # Para yarascan
pip install capstone # Para desensamblado
pip install pefile # Para analisis PE
Tablas de simbolos: la clave de Volatility 3
La diferencia fundamental entre Volatility 2 y 3 es como manejan los simbolos del sistema operativo. Volatility 2 usaba "profiles" precompilados que empaquetaban las definiciones de estructuras del kernel para cada version especifica del OS. Volatility 3 usa tablas de simbolos en formato JSON (ISF, Intermediate Symbol Format).
Por que importan los simbolos
Para extraer informacion de un volcado de memoria, Volatility necesita saber donde estan las estructuras de datos del kernel y que forma tienen. Por ejemplo, para listar procesos Windows, necesita saber:
- Donde esta la lista de procesos en el kernel (PsActiveProcessHead).
- Que tamano tiene la estructura EPROCESS.
- En que offset dentro de EPROCESS esta el PID, el nombre del proceso, los enlaces a la lista, etc.
Estos detalles cambian entre versiones del kernel, service packs e incluso actualizaciones mensuales. Sin los simbolos correctos, Volatility no puede interpretar la memoria.
Simbolos para Windows
Volatility 3 descarga automaticamente las tablas de simbolos de Windows desde los servidores de Microsoft (PDB files) y las convierte a formato ISF. La primera vez que analizas un dump de una version de Windows que no tienes cacheada, Volatility descargara los simbolos. Esto requiere conexion a internet.
Las tablas descargadas se almacenan en:
volatility3/symbols/windows/
Para una instalacion offline, puedes descargar previamente los paquetes de simbolos desde el repositorio oficial:
cd volatility3/symbols/
wget https://downloads.volatilityfoundation.org/volatility3/symbols/windows.zip
unzip windows.zip
Simbolos para Linux
Linux no tiene un repositorio centralizado de simbolos como Windows. Para cada version del kernel necesitas generar las tablas manualmente usando la herramienta dwarf2json:
git clone https://github.com/volatilityfoundation/dwarf2json.git
cd dwarf2json
go build
Luego, en el sistema cuya memoria quieres analizar (o uno identico):
./dwarf2json linux \
--elf /usr/lib/debug/boot/vmlinux-$(uname -r) \
--system-map /boot/System.map-$(uname -r) \
> linux-$(uname -r).json
El fichero JSON resultante se coloca en:
volatility3/symbols/linux/
Para distribuciones comunes (Ubuntu, CentOS, Debian), existen tablas de simbolos precompiladas en repositorios comunitarios.
Simbolos para macOS
Similar a Linux, se generan con dwarf2json:
./dwarf2json mac --macho /path/to/kernel.development
Los kernels de macOS con debug symbols se obtienen de los paquetes KDK (Kernel Debug Kit) de Apple.
Primer analisis: identificar el sistema operativo
El primer paso con cualquier dump de memoria es identificar que sistema operativo contiene. Volatility 3 incluye un comando para esto:
vol -f memory.raw banners
Este comando busca cadenas conocidas en la memoria que identifiquen el sistema operativo y la version del kernel. Para un dump de Windows, veras algo como:
Offset Banner
0x1a0e000 Microsoft Windows 10.0.19041 (WinBuild.160101.0800)
Tambien puedes usar:
vol -f memory.raw windows.info
Este plugin muestra informacion detallada del sistema: version de Windows, service pack, arquitectura, numero de procesadores y otras propiedades.
Plugins esenciales de Volatility 3
Nomenclatura de plugins
En Volatility 3, los plugins se organizan por sistema operativo:
windows.*para plugins de Windowslinux.*para plugins de Linuxmac.*para plugins de macOS
Los nombres siguen el patron os.categoria.NombrePlugin. Por ejemplo:
| Volatility 2 | Volatility 3 |
|---|---|
| pslist | windows.pslist.PsList |
| pstree | windows.pstree.PsTree |
| netscan | windows.netscan.NetScan |
| dlllist | windows.dlllist.DllList |
| malfind | windows.malfind.Malfind |
| hivelist | windows.registry.hivelist.HiveList |
Listar plugins disponibles
vol --help
Para ver solo plugins de Windows:
vol --help | grep windows
Informacion del sistema
vol -f memory.raw windows.info
Muestra: version de Windows, arquitectura, DTB (Directory Table Base), KDBG y otros metadatos del kernel.
Listar procesos
vol -f memory.raw windows.pslist
Salida tipica:
PID PPID ImageFileName Offset(V) Threads Handles CreateTime
4 0 System 0xfa8000c17040 120 - 2026-06-01 10:00:00
...
3456 2100 notepad.exe 0xfa8001234560 2 45 2026-06-01 12:30:15
Arbol de procesos
vol -f memory.raw windows.pstree
Muestra los procesos con indentacion que refleja las relaciones padre-hijo. Es fundamental para detectar anomalias como un cmd.exe hijo de winword.exe.
Conexiones de red
vol -f memory.raw windows.netscan
Muestra conexiones TCP/UDP con PID, direccion local, direccion remota, estado y el proceso asociado.
DLLs cargadas
vol -f memory.raw windows.dlllist --pid 3456
Lista las DLLs cargadas por un proceso especifico. Sin el flag --pid, lista las DLLs de todos los procesos.
Busqueda de codigo inyectado
vol -f memory.raw windows.malfind
Busca regiones de memoria con permisos sospechosos (PAGE_EXECUTE_READWRITE) que no estan respaldadas por ficheros en disco. Es el primer paso para detectar inyeccion de codigo.
Opciones de salida
Formato de tabla (por defecto)
La salida estandar es una tabla en texto plano. Es legible pero dificil de procesar automaticamente.
JSON
Para procesamiento programatico:
vol -f memory.raw -r json windows.pslist
CSV
Para importar en hojas de calculo o herramientas de analisis:
vol -f memory.raw -r csv windows.pslist > procesos.csv
Redirigir a fichero
vol -f memory.raw windows.pslist > pslist_output.txt 2>&1
Flujo de trabajo tipico de primer analisis
Un primer analisis de un dump de memoria sigue generalmente este orden:
Paso 1: Identificar el sistema.
vol -f memory.raw windows.info
Confirma la version del OS, arquitectura y que Volatility puede procesar el dump correctamente.
Paso 2: Listar procesos y buscar anomalias.
vol -f memory.raw windows.pslist
vol -f memory.raw windows.pstree
Busca procesos con nombres sospechosos, PPIDs anomalos, o timestamps incoherentes.
Paso 3: Revisar conexiones de red.
vol -f memory.raw windows.netscan
Identifica conexiones a IPs externas sospechosas, puertos inusuales, o procesos que no deberian tener actividad de red.
Paso 4: Buscar codigo inyectado.
vol -f memory.raw windows.malfind
Revisa las regiones de memoria marcadas como sospechosas. Busca cabeceras MZ (PE), shellcode, o patrones conocidos.
Paso 5: Examinar procesos sospechosos en detalle.
vol -f memory.raw windows.dlllist --pid SOSPECHOSO
vol -f memory.raw windows.handles --pid SOSPECHOSO
vol -f memory.raw windows.cmdline --pid SOSPECHOSO
Profundiza en los procesos que llamaron la atencion en los pasos anteriores.
Paso 6: Extraer artefactos.
vol -f memory.raw windows.dumpfiles --pid SOSPECHOSO
vol -f memory.raw windows.memmap --pid SOSPECHOSO --dump
Extrae ficheros y regiones de memoria para analisis posterior con herramientas de malware analysis.
Diferencias clave con Volatility 2
Si vienes de Volatility 2, estos son los cambios principales:
Perfiles vs tablas de simbolos. Ya no usas --profile=Win10x64_19041. Volatility 3 autodetecta el perfil usando las tablas de simbolos.
Nombres de plugins. Todos los plugins tienen el prefijo del OS. pslist es ahora windows.pslist. Esto elimina la ambiguedad cuando trabajas con dumps de diferentes sistemas operativos.
Python 3. Volatility 2 era Python 2 (end of life). Volatility 3 requiere Python 3.8 o superior.
Rendimiento. Volatility 3 es significativamente mas rapido en la mayoria de operaciones, especialmente con dumps grandes.
API de plugins. La API para escribir plugins cambio completamente. Los plugins de Volatility 2 no son compatibles con Volatility 3. Sin embargo, los plugins mas importantes ya fueron portados.
Linea de comandos. La estructura de la linea de comandos es similar pero con diferencias sutiles:
# Volatility 2
vol.py -f memory.raw --profile=Win10x64 pslist
# Volatility 3
vol -f memory.raw windows.pslist
Plugins de comunidad
Ademas de los plugins incluidos por defecto, la comunidad mantiene plugins adicionales:
- community3: repositorio oficial de plugins comunitarios para Volatility 3.
- VolWeb: interfaz web para Volatility con visualizaciones interactivas.
- Orochi: plataforma de analisis de memoria colaborativa basada en Volatility 3.
Para instalar plugins de comunidad:
git clone https://github.com/volatilityfoundation/community3.git
Y pasar la ruta al ejecutar Volatility:
vol -f memory.raw -p /path/to/community3 windows.plugin_name
Problemas comunes
"Unsatisfied requirement" al ejecutar un plugin. Volatility no encuentra las tablas de simbolos adecuadas. Solucion: asegurar que los simbolos estan descargados y en la ruta correcta. Para Windows, verificar conexion a internet para la descarga automatica.
Plugin muy lento. Algunos plugins recorren toda la memoria fisica (yarascan, malfind). En dumps de 64 GB o mas, pueden tardar decenas de minutos. Solucion: usar filtros (por PID, por rango de direcciones) para reducir el scope.
Dump no reconocido. Volatility no detecta el sistema operativo. Solucion: verificar que el dump esta completo (tamano coherente con la RAM), probar con el plugin banners para buscar strings de identificacion, y confirmar que el formato del dump es soportado.
Error de memoria en la maquina de analisis. Volatility carga partes del dump en memoria. Con dumps grandes, puede agotar la RAM disponible. Solucion: usar una maquina de analisis con al menos tanta RAM como el dump, y cerrar otras aplicaciones durante el analisis.
Proximo paso
Con Volatility 3 instalado y funcionando, en el siguiente articulo profundizamos en el analisis de procesos: pslist, pstree, cmdline y las tecnicas para detectar procesos anomalos, PPID spoofing y procesos ocultos en volcados de memoria Windows.
Preguntas frecuentes
Libros recomendados
Artículos relacionados
Adquisicion de Memoria RAM: Herramientas y Mejores Practicas
Analisis de Procesos en Memoria Windows: pslist, pstree y Deteccion de Anomalias
Memory Forensics en Linux con Volatility 3: Analisis Completo
Herramientas DFIR Open Source: Guia Completa 2026
Adquisicion de Imagen Forense de Disco: dd, dc3dd, FTK Imager y Formato E01
Browser Forensics: Analisis Forense de Chrome y Firefox
Este contenido tiene fines exclusivamente educativos y de investigación en ciberseguridad defensiva. No se proporcionan binarios maliciosos ni payloads ejecutables. El uso indebido de esta información es responsabilidad exclusiva del usuario. Leer disclaimer completo.