Introducción
En el ámbito de la respuesta a incidentes y el análisis forense digital, el análisis de la memoria es una herramienta crucial para comprender la actividad de un sistema en el momento de su captura. Volatility, una plataforma de análisis de memoria muy conocida, ha evolucionado significativamente con el tiempo, ofreciendo versiones más avanzadas y funcionales. En este blog, exploraremos en detalle las diferencias clave entre Volatility 2 y Volatility 3, proporcionando una guía exhaustiva de los comandos más utilizados en ambas versiones.
PROCESS INFORMATION
Volatility 2
- Listar procesos:
vol.py -f "/path/to/file" --profile <profile> pslist
- Explicación: Este comando lista todos los procesos activos en el volcado de memoria utilizando el perfil especificado.
Ejemplo de output:
Offset(P) Name PID PPID Thds Hnds Sess Wow64 Start Exit
------------------ -------------------- ------ ------ ------ -------- ------ ------ ------------------------------ ------------------------------
0xXXXXXXXXXXXXXXXX explorer.exe 1000 1234 25 500 1 False 2023-06-21 18:59:28 UTC+0000
0xXXXXXXXXXXXXXXXX svchost.exe 520 432 13 300 0 True 2023-06-21 18:59:28 UTC+0000
Buscar y listar procesos ocultos:
vol.py -f "/path/to/file" --profile <profile> psscan
- Explicación: Este comando busca y lista procesos que podrían estar ocultos en el volcado de memoria.
Ejemplo de output:
Offset(P) Name PID PPID Thds Hnds Sess Wow64 Start Exit
------------------ -------------------- ------ ------ ------ -------- ------ ------ ------------------------------ ------------------------------
0xXXXXXXXXXXXXXXXX malware.exe 2000 432 5 50 -1 True 2023-06-21 18:59:28 UTC+0000
Mostrar la estructura jerárquica de procesos:
vol.py -f "/path/to/file" --profile <profile> pstree
- Explicación: Este comando muestra la estructura de árbol de procesos para visualizar las relaciones de parentesco entre procesos.
Ejemplo de output:
Name Pid PPid Thds Hnds Time
-------------------------------------------------- ------ ------ ------ ------ ----
0xXXXXXXXXXXXXXXXX-\- explorer.exe 1000 1234 25 500 2023-06-21 18:59:28 UTC+0000
0xXXXXXXXXXXXXXXXX-\- svchost.exe 520 432 13 300 2023-06-21 18:59:28 UTC+0000
0xXXXXXXXXXXXXXXXX-\- malware.exe 2000 432 5 50 2023-06-21 18:59:28 UTC+0000
Listar procesos con detalles adicionales (psxview):
vol.py -f "/path/to/file" --profile <profile> psxview
- Explicación: Este comando proporciona una vista adicional de los procesos, mostrando información detallada como los procesos ocultos y otros aspectos más allá de los listados estándar de procesos.
Output differences:
- Volatility 2: Listas adicionales de procesos con psxview.
- Volatility 3: No incluye un equivalente directo de psxview.
Volatility 3
- Listar procesos:
vol.py -f "/path/to/file" windows.pslist
- Explicación: Este comando lista todos los procesos activos en el volcado de memoria utilizando el método específico de Volatility 3 para obtener la lista de procesos.
Ejemplo de output:
Name Pid PPid Thds Hnds Time
-------------------------------------------------- ------ ------ ------ ------ ----
explorer.exe 1000 1234 25 500 2023-06-21 18:59:28 UTC+0000
svchost.exe 520 432 13 300 2023-06-21 18:59:28 UTC+0000
Buscar y listar procesos ocultos:
vol.py -f "/path/to/file" windows.psscan
- Explicación: Este comando busca y lista procesos que podrían estar ocultos en el volcado de memoria utilizando el método específico de Volatility 3.
Ejemplo de output:
Name Pid PPid Thds Hnds Time
-------------------------------------------------- ------ ------ ------ ------ ----
malware.exe 2000 432 5 50 2023-06-21 18:59:28 UTC+0000
Mostrar la estructura jerárquica de procesos:
vol.py -f "/path/to/file" windows.pstree
- Explicación: Este comando muestra la estructura de árbol de procesos utilizando el método específico de Volatility 3 para visualizar las relaciones de parentesco entre procesos.
Ejemplo de output:
Name Pid PPid Thds Hnds Time
-------------------------------------------------- ------ ------ ------ ------ ----
\- explorer.exe 1000 1234 25 500 2023-06-21 18:59:28 UTC+0000
\- malware.exe 2000 432 5 50 2023-06-21 18:59:28 UTC+0000
Output differences:
- Volatility 2: Listas adicionales de procesos con psxview.
- Volatility 3: No incluye un equivalente directo de psxview.
NETWORK INFORMATION
Volatility 2
- Listar conexiones de red:
vol.py -f "/path/to/file" --profile <profile> netscan
- Explicación: Este comando lista las conexiones de red activas en el volcado de memoria utilizando el perfil especificado.
Ejemplo de output:
Offset(P) Proto Local Address Foreign Address State Pid
------------------ ------- ------------------------------ ------------------------------ ----------- ----
0x02843bd0 TCPv4 192.168.1.101:139 192.168.1.1:40560 ESTABLISHED 4
Volatility 3
- Listar conexiones de red:
vol.py -f "/path/to/file" windows.netscan
- Explicación: Este comando lista las conexiones de red activas en el volcado de memoria utilizando el método específico de Volatility 3.
Ejemplo de output:
Offset(P) Proto Local Address Foreign Address State Pid
------------------ ------- ------------------------------ ------------------------------ ----------- ----
0x02843bd0 TCPv4 192.168.1.101:139 192.168.1.1:40560 ESTABLISHED 4
NETWORK INFORMATION (XP/2003 SPECIFIC)
Volatility 2
- Escanear conexiones:
vol.py -f "/path/to/file" --profile <profile> connscan
vol.py -f "/path/to/file" --profile <profile> connections
vol.py -f "/path/to/file" --profile <profile> sockscan
vol.py -f "/path/to/file" --profile <profile> sockets
- Explicación: Estos comandos escanean las conexiones de red en el volcado de memoria utilizando el perfil especificado.
Ejemplo de output:
Offset(P) Proto Local Address Foreign Address State Pid
---------- ------- -------------- --------------- ----- ----
0x12345678 TCPv4 192.168.1.101 192.168.1.1 ESTABLISHED 1040
Volatility 3
- Escanear conexiones:
vol.py -f "/path/to/file" windows.netstat
- Explicación: Este comando escanea las conexiones de red en el volcado de memoria utilizando el método específico de Volatility 3.
Ejemplo de output:
Offset(P) Proto Local Address Foreign Address State Pid
---------- ------- -------------- --------------- ----- ----
0x12345678 TCPv4 192.168.1.101 192.168.1.1 ESTABLISHED 1040
MODULE INFORMATION
Volatility 2
- Listar módulos del kernel:
vol.py -f "/path/to/file" --profile <profile> modules
- Explicación: Este comando lista los módulos del kernel cargados en el sistema utilizando el perfil especificado.
Ejemplo de output:
Base Size Path
---------- ------------------------ ----
0xXXXXXXXX 0xXXXXXX C:\WINDOWS\system32\ntdll.dll
Volatility 3
- Listar módulos del kernel:
vol.py -f "/path/to/file" windows.modules
- Explicación: Este comando lista los módulos del kernel cargados en el sistema utilizando el método específico de Volatility 3.
Ejemplo de output:
Base Size Path
---------- ------------------------ ----
0xXXXXXXXX 0xXXXXXX C:\WINDOWS\system32\ntdll.dll
SERVICE INFORMATION
Volatility 2
- Listar servicios del sistema:
vol.py -f "/path/to/file" --profile <profile> svcscan
- Explicación: Este comando lista los servicios del sistema presentes en el volcado de memoria utilizando el perfil especificado.
Ejemplo de output:
Service Name Display Name Status Type Path
----------------- ---------------- -------- ------- ----
Schedule Task Scheduler Running Service C:\WINDOWS\system32\svchost.exe -k netsvcs
Volatility 3
- Listar servicios del sistema:
vol.py -f "/path/to/file" windows.svcscan
- Explicación: Este comando lista los servicios del sistema presentes en el volcado de memoria utilizando el método específico de Volatility 3.
Ejemplo de output:
Service Name Display Name Status Type Path
----------------- ---------------- -------- ------- ----
Schedule Task Scheduler Running Service C:\WINDOWS\system32\svchost.exe -k netsvcs
USER ACCOUNT INFORMATION
Volatility 2
- Extraer información de las cuentas de usuario:
vol.py -f "/path/to/file" --profile <profile> hadump
- Explicación: Este comando extrae hashes de las cuentas de usuario del volcado de memoria utilizando el perfil especificado.
Ejemplo de output:
Username Domain LM-Hash NT-Hash
---------------- ---------------- -------- --------
Administrator WORKGROUP aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c
Volatility 3
- Extraer información de las cuentas de usuario:
vol.py -f "/path/to/file" windows.hadump
- Explicación: Este comando extrae hashes de las cuentas de usuario del volcado de memoria utilizando el método específico de Volatility 3.
Ejemplo de output:
Username Domain LM-Hash NT-Hash
---------------- ---------------- -------- --------
Administrator WORKGROUP aad3b435b51404eeaad3b435b51404ee:8846f7eaee8fb117ad06bdd830b7586c
FILE INFORMATION
Volatility 2
- Mostrar archivos abiertos:
vol.py -f "/path/to/file" --profile <profile> filescan
- Explicación: Este comando muestra los archivos actualmente abiertos en el volcado de memoria utilizando el perfil especificado.
Ejemplo de output:
Offset(P) Name
------------------ ------------------------
0xXXXXXXXXXXXX C:\Users\Admin\document.txt
Volatility 3
- Mostrar archivos abiertos:
vol.py -f "/path/to/file" windows.filescan
- Explicación: Este comando muestra los archivos actualmente abiertos en el volcado de memoria utilizando el método específico de Volatility 3.
Ejemplo de output:
Offset(P) Name
------------------ ------------------------
0xXXXXXXXXXXXX C:\Users\Admin\document.txt
KERNEL HOOKS DETECTION
Volatility 2
- Detectar hooks del kernel:
vol.py -f "/path/to/file" --profile <profile> ldrmodules
- Explicación: Este comando detecta hooks en el kernel del sistema cargado desde módulos utilizando el perfil especificado.
Ejemplo de output:
Base InLoad Path
---------- ------------------------
0xXXXXXXXX C:\WINDOWS\system32\ntdll.dll
Volatility 3
- Detectar hooks del kernel:
vol.py -f "/path/to/file" windows.ldrmodules
- Explicación: Este comando detecta hooks en el kernel del sistema cargado desde módulos utilizando el método específico de Volatility 3.
Ejemplo de output:
Base InLoad Path
---------- ------------------------
0xXXXXXXXX C:\WINDOWS\system32\ntdll.dll
REGISTRY KEYS RECOVERY
Volatility 2
- Recuperar claves del registro:
vol.py -f "/path/to/file" --profile <profile> printkey
- Explicación: Este comando recupera claves del registro presentes en el volcado de memoria utilizando el perfil especificado.
Ejemplo de output:
Last Write Time Name Class Type Size Data
---------------------------------- ------------- -------------- ------------ ------------ ------------
2023-06-21 18:59:28 UTC+0000 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ 0
Volatility 3
- Recuperar claves del registro:
vol.py -f "/path/to/file" windows.printkey
- Explicación: Este comando recupera claves del registro presentes en el volcado de memoria utilizando el método específico de Volatility 3.
Ejemplo de output:
Last Write Time Name Class Type Size Data
---------------------------------- ------------- -------------- ------------ ------------ ------------
2023-06-21 18:59:28 UTC+0000 HKLM\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters\ 0
MEMORY DUMP EXTRACTION
Volatility 2
- Extraer información de memoria:
vol.py -f "/path/to/file" --profile <profile> memdump -p <PID> -D <output_directory>
- Explicación: Este comando extrae el contenido de memoria del proceso con el PID especificado en el volcado de memoria utilizando el perfil especificado.
Volatility 3
- Extraer información de memoria:
vol.py -f "/path/to/file" windows.memdump -p <PID> -D <output_directory>
- Explicación: Este comando extrae el contenido de memoria del proceso con el PID especificado en el volcado de memoria utilizando el método específico de Volatility 3.
Output differences:
- Volatility 2:
- Adicionales listas de procesos con
psxview
.
- Adicionales listas de procesos con
- Volatility 3:
- No incluye un equivalente directo de
psxview
.
- No incluye un equivalente directo de
DUMP FILES
Volatility 2
- Volcar archivos:
vol.py -f "/path/to/file" --profile <profile> dumpfiles --dump-dir="/path/to/dir"
vol.py -f "/path/to/file" --profile <profile> dumpfiles --dump-dir="/path/to/dir" -Q <offset>
vol.py -f "/path/to/file" --profile <profile> dumpfiles --dump-dir="/path/to/dir" -p <PID>
- Explicación: Estos comandos vuelcan archivos del volcado de memoria a un directorio especificado, ya sea por PID o por offset.
Volatility 3
- Volcar archivos:
vol.py -f "/path/to/file" -o "/path/to/dir" windows.dumpfiles
vol.py -f "/path/to/file" -o "/path/to/dir" windows.dumpfiles --virtaddr <offset>
vol.py -f "/path/to/file" -o "/path/to/dir" windows.dumpfiles --physaddr <offset>
vol.py -f "/path/to/file" -o "/path/to/dir" windows.dumpfiles --pid <PID>
- Explicación: Estos comandos vuelcan archivos del volcado de memoria a un directorio especificado, ya sea por PID, por dirección virtual, o por dirección física.
Output differences:
- Volatility 2: Solo vuelca el PID especificado (o todos si no se especifica).
- Volatility 3: Vuelca el ejecutable y los DLLs asociados.
HANDLES
Volatility 2
- Listar manejadores:
vol.py -f "/path/to/file" --profile <profile> handles -p <PID>
- Explicación: Este comando lista los manejadores abiertos por el proceso especificado en el volcado de memoria utilizando el perfil especificado.
Ejemplo de output:
Offset(V) PID Handle Access Type Details
---------- ----- -------- -------- ------ ----------------
0x12345678 1040 0x0004 0x000f0 File \Device\HarddiskVolume2\Windows\System32\notepad.exe
Volatility 3
- Listar manejadores:
vol.py -f "/path/to/file" windows.handles --pid <PID>
- Explicación: Este comando lista los manejadores abiertos por el proceso especificado en el volcado de memoria utilizando el método específico de Volatility 3.
Ejemplo de output:
PID Process Offset HandleValue Type GrantedAccess Name
---- -------- ------- ------------ ------ -------------- ------
1040 notepad.exe 0x12345678 0x0004 File 0x000f0 \Device\HarddiskVolume2\Windows\System32\notepad.exe
Output differences:
- Volatility 2: Muestra Offset(V), PID, manejador, acceso, tipo, y detalles.
- Volatility 3: Muestra PID, proceso, offset, valor del manejador, tipo, acceso concedido, y nombre.
DLL LIST
Volatility 2
- Listar DLLs:
vol.py -f "/path/to/file" --profile <profile> dlllist -p <PID>
- Explicación: Este comando lista las DLLs cargadas por el proceso especificado en el volcado de memoria utilizando el perfil especificado.
Ejemplo de output:
PID CommandLine Base Size LoadCount LoadTime Path
---- ------------ ----- ---- --------- --------- ----
1040 notepad.exe 0x1234 0x1000 0 2023-06-21 C:\Windows\System32\notepad.exe
Volatility 3
- Listar DLLs:
vol.py -f "/path/to/file" windows.dlllist --pid <PID>
- Explicación: Este comando lista las DLLs cargadas por el proceso especificado en el volcado de memoria utilizando el método específico de Volatility 3.
Ejemplo de output:
PID Process Base Size Name Path LoadTime File Output
---- ------- ----- ---- ---- ---- --------- -----------
1040 notepad.exe 0x1234 0x1000 ntdll.dll C:\Windows\System32\ntdll.dll 2023-06-21
Output differences:
- Volatility 2: Muestra PID, línea de comando, base, tamaño, número de cargas, tiempo de carga, y ruta.
- Volatility 3: Muestra PID, proceso, base, tamaño, nombre, ruta, tiempo de carga, y archivo de salida.
COMMAND LINE
Volatility 2
- Listar líneas de comando:
vol.py -f "/path/to/file" --profile <profile> cmdline
vol.py -f "/path/to/file" --profile <profile> cmdscan
vol.py -f "/path/to/file" --profile <profile> consoles
- Explicación: Estos comandos listan las líneas de comando utilizadas por los procesos en el volcado de memoria utilizando el perfil especificado.
Ejemplo de output:
Nombre del Proceso PID Línea de Comando
------------------- ----- ----------------
notepad.exe 1040 "C:\Windows\System32\notepad.exe"
Volatility 3
- Listar líneas de comando:
vol.py -f "/path/to/file" windows.cmdline
- Explicación: Este comando lista las líneas de comando utilizadas por los procesos en el volcado de memoria utilizando el método específico de Volatility 3.
Ejemplo de output:
PID Process Name Args
---- ------------ ----
1040 notepad.exe "C:\Windows\System32\notepad.exe"
Output differences:
- Volatility 2: Muestra nombre del proceso, PID, línea de comando;
cmdscan
incluye aplicación, flags, manejador del proceso;consoles
contiene listado de C:, títulos originales, posición de la pantalla y la información del historial de comandos. - Volatility 3: Muestra PID, nombre del proceso, y argumentos.
REGISTRY INFORMATION
Volatility 2
- Escanear y listar colmenas del registro:
vol.py -f "/path/to/file" --profile <profile> hivescan
vol.py -f "/path/to/file" --profile <profile> hivelist
- Explicación: Estos comandos escanean y listan las colmenas del registro presentes en el volcado de memoria utilizando el perfil especificado.
Ejemplo de output:
Offset(P) Name
---------- ----
0x12345678 \SystemRoot\System32\Config\SYSTEM