IntermedioVolatilitymemory forensicsherramientaspluginsinstalacion

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.

MalwareIntel Research··9 min lectura
Serie: Memory Forensics — Parte 3

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 Windows
  • linux.* para plugins de Linux
  • mac.* para plugins de macOS

Los nombres siguen el patron os.categoria.NombrePlugin. Por ejemplo:

Volatility 2Volatility 3
pslistwindows.pslist.PsList
pstreewindows.pstree.PsTree
netscanwindows.netscan.NetScan
dlllistwindows.dlllist.DllList
malfindwindows.malfind.Malfind
hivelistwindows.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

Artículos relacionados

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.