Comandos de Volatility
Referencia de trabajo para análisis forense de memoria. Cubre Volatility 3 (comando vol, plugins con nombre en snake_case) y las equivalencias con Volatility 2 (vol.py, plugins antiguos), que siguen apareciendo en writeups y examenes.
Preparación
# Volatility 3
pip install volatility3
vol -h
vol --info # lista de plugins disponibles
# Volatility 2 (requiere Python 2.7 y perfiles)
git clone https://github.com/volatilityfoundation/volatility.git
python2 vol.py --infoAntes de empezar, identificar el sistema operativo de la imagen. Un perfil equivocado produce resultados vacios o basura sin avisar.
vol -f memoria.raw windows.info
vol -f memoria.raw windows.info.InfoOrden de análisis recomendado
- Identificar el sistema (
info) y anotar versión, arquitectura y hora del volcado. - Procesos (
pslist,psscan,pstree) y comparar: lo quepslistno ve ypsscansi, está oculto. - Conexiones (
netstat,netscan) cruzadas con los PID anteriores. - Persistencia (
svcscan,registrysobre claves Run) y modulos (dlllist,ldrmodules). - Código inyectado (
malfind,hollowprocesses) sobre los procesos sospechosos. - Extracción de binarios y volcados de proceso para análisis estático.
Procesos
# Volatility 3
vol -f memoria.raw windows.pslist
vol -f memoria.raw windows.psscan
vol -f memoria.raw windows.pstree
vol -f memoria.raw windows.cmdline
vol -f memoria.raw windows.getsids
vol -f memoria.raw windows.privileges
# Volatility 2 equivalentes
python2 vol.py -f memoria.raw --profile=Win10x64_19041 pslist
python2 vol.py -f memoria.raw --profile=Win10x64_19041 pstree
python2 vol.py -f memoria.raw --profile=Win10x64_19041 cmdlinepslist recorre la lista enlazada del kernel; psscan busca estructuras por firma. La diferencia entre ambos es una de las primeras señales de rootkit.
Red
vol -f memoria.raw windows.netscan
vol -f memoria.raw windows.netstat
python2 vol.py -f memoria.raw --profile=Win10x64_19041 netscanInteresa el par PID y proceso con conexiones en estados ESTABLISHED hacia puertos altos o IPs externas, y procesos del sistema con sockets que no deberian tenerlos.
Modulos y memoria inyectada
vol -f memoria.raw windows.dlllist --pid 1234
vol -f memoria.raw windows.ldrmodules --pid 1234
vol -f memoria.raw windows.malfind
vol -f memoria.raw windows.hollowprocesses
python2 vol.py -f memoria.raw --profile=Win10x64_19041 malfindldrmodules marca DLL que no aparecen en las tres listas de carga (inicializada, en memoria, en disco): firma clasica de inyección. malfind busca regiones con permisos de ejecución, sin fichero asociado y con cabecera MZ.
Persistencia y servicios
vol -f memoria.raw windows.svcscan
vol -f memoria.raw windows.registry.printkey --key "Software\\Microsoft\\Windows\\CurrentVersion\\Run"
vol -f memoria.raw windows.registry.userassist
vol -f memoria.raw windows.scheduled_tasksExtracción de artefactos
# Volcar un proceso completo para analisis con otras herramientas
vol -f memoria.raw windows.memmap --pid 1234 --dump
vol -f memoria.raw windows.dumpfiles --pid 1234
# Ficheros de una sesion de navegador desde memoria
vol -f memoria.raw windows.filescan | grep -i cookie
python2 vol.py -f memoria.raw --profile=Win10x64_19041 procdump --pid 1234 -D salida/Credenciales
Solo en entornos propios o con autorización escrita: el volcado contiene secretos de usuarios reales.
vol -f memoria.raw windows.hashdump # hashes de SAM desde memoria
vol -f memoria.raw windows.lsadump # secretos LSANotas prácticas
- Guardar siempre la salida en fichero (
> informe.txt): el análisis se cita y se revisa después. - Volatility 3 no necesita perfiles, pero algunos plugins siguen siendo más completos en la versión 2; conviene tener ambas.
- Un
psscancon cientos de procesos terminados es normal: son restos de procesos ya cerrados, no amenazas. - Si
malfinddevuelve decenas de resultados, priorizar por proceso con conexión de red activa antes de volcar todo. - El orden importa: sin línea temporal de procesos y conexiones,
malfindsolo genera ruido.