Volatility - CheatSheet
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
RootedCON es el evento de ciberseguridad más relevante en España y uno de los más importantes en Europa. Con la misión de promover el conocimiento técnico, este congreso es un punto de encuentro vibrante para profesionales de la tecnología y la ciberseguridad en cada disciplina.
Si quieres algo rápido y loco que lance varios plugins de Volatility en paralelo, puedes usar: https://github.com/carlospolop/autoVolatility
Accede a la documentación oficial en Referencia de comandos de Volatility
Volatility tiene dos enfoques principales para los plugins, que a veces se reflejan en sus nombres. Los plugins “list” intentarán navegar a través de las estructuras del Kernel de Windows para recuperar información como procesos (localizar y recorrer la lista enlazada de estructuras _EPROCESS
en memoria), manejadores del SO (localizando y listando la tabla de manejadores, desreferenciando cualquier puntero encontrado, etc.). Se comportan más o menos como lo haría la API de Windows si se le solicitara, por ejemplo, listar procesos.
Eso hace que los plugins “list” sean bastante rápidos, pero igual de vulnerables a la manipulación por malware que la API de Windows. Por ejemplo, si el malware utiliza DKOM para desvincular un proceso de la lista enlazada _EPROCESS
, no aparecerá en el Administrador de tareas ni en el pslist.
Los plugins “scan”, por otro lado, adoptarán un enfoque similar a la extracción de memoria para cosas que podrían tener sentido cuando se desreferencian como estructuras específicas. psscan
, por ejemplo, leerá la memoria e intentará crear objetos _EPROCESS
a partir de ella (utiliza escaneo de etiquetas de pool, que busca cadenas de 4 bytes que indican la presencia de una estructura de interés). La ventaja es que puede encontrar procesos que han salido, e incluso si el malware manipula la lista enlazada _EPROCESS
, el plugin aún encontrará la estructura en memoria (ya que aún necesita existir para que el proceso se ejecute). La desventaja es que los plugins “scan” son un poco más lentos que los plugins “list”, y a veces pueden dar falsos positivos (un proceso que salió hace demasiado tiempo y tuvo partes de su estructura sobrescritas por otras operaciones).
De: http://tomchop.me/2016/11/21/tutorial-volatility-plugins-malware-analysis/
Como se explica en el readme, necesitas poner la tabla de símbolos del SO que deseas soportar dentro de volatility3/volatility/symbols. Los paquetes de tablas de símbolos para los diversos sistemas operativos están disponibles para descarga en:
Puedes obtener la lista de perfiles soportados haciendo:
Si deseas usar un nuevo perfil que has descargado (por ejemplo, uno de linux), necesitas crear en algún lugar la siguiente estructura de carpetas: plugins/overlays/linux y poner dentro de esta carpeta el archivo zip que contiene el perfil. Luego, obtén el número de los perfiles usando:
Puedes descargar perfiles de Linux y Mac desde https://github.com/volatilityfoundation/profiles
En el fragmento anterior, puedes ver que el perfil se llama LinuxCentOS7_3_10_0-123_el7_x86_64_profilex64
, y puedes usarlo para ejecutar algo como:
Desde aquí: A diferencia de imageinfo, que simplemente proporciona sugerencias de perfil, kdbgscan está diseñado para identificar positivamente el perfil correcto y la dirección KDBG correcta (si es que hay múltiples). Este plugin escanea las firmas KDBGHeader vinculadas a los perfiles de Volatility y aplica verificaciones de sensatez para reducir los falsos positivos. La verbosidad de la salida y el número de verificaciones de sensatez que se pueden realizar dependen de si Volatility puede encontrar un DTB, así que si ya conoces el perfil correcto (o si tienes una sugerencia de perfil de imageinfo), asegúrate de usarlo.
Siempre revisa el número de procesos que kdbgscan ha encontrado. A veces, imageinfo y kdbgscan pueden encontrar más de uno perfil adecuado, pero solo el válido tendrá algún proceso relacionado (Esto se debe a que para extraer procesos se necesita la dirección KDBG correcta).
El bloque de depuración del núcleo, conocido como KDBG por Volatility, es crucial para las tareas forenses realizadas por Volatility y varios depuradores. Identificado como KdDebuggerDataBlock
y del tipo _KDDEBUGGER_DATA64
, contiene referencias esenciales como PsActiveProcessHead
. Esta referencia específica apunta a la cabeza de la lista de procesos, lo que permite listar todos los procesos, lo cual es fundamental para un análisis exhaustivo de la memoria.
El plugin banners.Banners
se puede usar en vol3 para intentar encontrar banners de linux en el volcado.
Extraer hashes SAM, credenciales en caché de dominio y secretos lsa.
El volcado de memoria de un proceso extraerá todo el estado actual del proceso. El módulo procdump solo extraerá el código.
RootedCON es el evento de ciberseguridad más relevante en España y uno de los más importantes en Europa. Con la misión de promover el conocimiento técnico, este congreso es un punto de encuentro vibrante para profesionales de la tecnología y la ciberseguridad en cada disciplina.
Intenta encontrar procesos sospechosos (por nombre) o inesperados procesos hijos (por ejemplo, un cmd.exe como hijo de iexplorer.exe). Podría ser interesante comparar el resultado de pslist con el de psscan para identificar procesos ocultos.
¿Se ejecutó algo sospechoso?
Los comandos ejecutados en cmd.exe
son gestionados por conhost.exe
(o csrss.exe
en sistemas anteriores a Windows 7). Esto significa que si cmd.exe
es terminado por un atacante antes de que se obtenga un volcado de memoria, aún es posible recuperar el historial de comandos de la sesión desde la memoria de conhost.exe
. Para hacer esto, si se detecta actividad inusual dentro de los módulos de la consola, se debe volcar la memoria del proceso asociado conhost.exe
. Luego, al buscar strings dentro de este volcado, se pueden extraer potencialmente las líneas de comando utilizadas en la sesión.
Obtén las variables de entorno de cada proceso en ejecución. Podría haber algunos valores interesantes.
Verifique los tokens de privilegios en servicios inesperados. Podría ser interesante listar los procesos que utilizan algún token privilegiado.
Verifique cada SSID propiedad de un proceso. Podría ser interesante listar los procesos que utilizan un SID de privilegios (y los procesos que utilizan algún SID de servicio).
Útil saber a qué otros archivos, claves, hilos, procesos... un proceso tiene un handle (ha abierto)
Volatility nos permite verificar a qué proceso pertenece una cadena.
También permite buscar cadenas dentro de un proceso utilizando el módulo yarascan:
Windows realiza un seguimiento de los programas que ejecutas utilizando una función en el registro llamada UserAssist keys. Estas claves registran cuántas veces se ejecuta cada programa y cuándo fue la última vez que se ejecutó.
RootedCON es el evento de ciberseguridad más relevante en España y uno de los más importantes en Europa. Con la misión de promover el conocimiento técnico, este congreso es un punto de encuentro vibrante para profesionales de la tecnología y la ciberseguridad en cada disciplina.