Análisis de memoria con Volatility

Procedimiento en análisis forense de memoria en entornos reales
El análisis forense de memoria (memory forensics) consiste en capturar la memoria RAM en un momento determinado y luego examinar ese volcado en busca de evidencias de actividad maliciosa. A diferencia de la forensia de discos, que permite recuperar todos los archivos de un sistema clonado, la forensia de memoria se enfoca en los programas y datos que estaban activos cuando se realizó la captura. Esto es crucial porque la RAM contiene datos volátiles que se pierden al apagar el equipo, incluyendo información que nunca se escribe en disco, como claves de cifrado o malware solo residente en memoria. Por ello, en entornos reales de respuesta a incidentes se procura preservar la memoria de los sistemas comprometidos antes de reinicios o apagados, obteniendo un volcado de RAM lo más pronto posible.
En un escenario de incidente real, el procedimiento típico comienza preparando una herramienta de volcado en un medio externo (por ejemplo, un USB) para minimizar la alteración del sistema investigado. Con privilegios de administrador, se ejecuta la herramienta para capturar la RAM y guardar la imagen resultante en un destino seguro (idealmente, en un almacenamiento externo o a través de la red, evitando escribir en el disco local comprometido). Tras la adquisición, se calcula el hash criptográfico del volcado para garantizar su integridad y se traslada la imagen de memoria a un entorno de análisis forense (por ejemplo, una estación con Volatility instalada) donde se realizará el examen detallado. Es importante recordar que este proceso debe hacerse rápidamente pero de forma controlada: la memoria es volátil y puede cambiar, pero también cualquier acción en el sistema puede sobrescribir datos en RAM. Por ello, las mejores prácticas recomiendan realizar el volcado como parte de la etapa de contención del incidente, antes de ejecutar otras acciones de remediación.
La captura de memoria suele ofrecer una ventaja de rapidez en comparación con el volcado de un disco completo. Por ejemplo, un servidor puede tener más de 100 GB de disco pero solo 16–32 GB de RAM; por tanto, obtener y transferir una imagen de memoria resulta más ágil. Esto permite priorizar el análisis de la RAM en busca de Indicadores de Compromiso (IoCs) mientras en paralelo se realiza la adquisición forense del disco duro. En entornos corporativos, es común incluir la toma de memoria en el plan de respuesta a incidentes, ya que brinda información inmediata sobre procesos en ejecución, conexiones de red activas, y posibles malware en memoria, que ayuda a confirmar la presencia de una amenaza antes incluso de completar otras pericias [1]. En sistemas virtualizados, el procedimiento es aún más sencillo: basta con tomar una instantánea (snapshot) de la máquina virtual, lo cual genera un archivo (p. ej. *.vmem
) con el contenido de su RAM que puede ser analizado con Volatility [2]. En resumen, en un entorno real el análisis de memoria implica: preparar las herramientas adecuadas, capturar la RAM de forma segura y rápida, y luego analizar el volcado con herramientas especializadas como Volatility para extraer evidencias forenses.
Métodos para obtener volcados de memoria en Windows y Linux
Existen múltiples métodos y utilidades para obtener una imagen de la memoria RAM, dependiendo del sistema operativo. En sistemas Windows, no se puede acceder directamente a la RAM sin ayuda de herramientas, por lo que se emplean utilidades especializadas para su adquisición en vivo. En Linux, aunque teóricamente se podría leer la memoria a través de dispositivos del sistema (/dev/mem
, /proc/kcore
), las restricciones de seguridad modernas suelen impedir un volcado completo de esta forma, requiriendo también herramientas específicas. A continuación, se describen los métodos más comunes por plataforma:
En Windows
Para volcar la memoria en Windows se usan herramientas de terceros diseñadas para ese fin, ya que el sistema operativo no provee un comando nativo para hacerlo. Algunas de las utilidades más utilizadas son FTK Imager, Redline, DumpIt, WinPmem (win32/64dd), Memoryze, Magnet RAM Capture, entre otras [3, 4]. Estas aplicaciones interactúan con el sistema a bajo nivel (a menudo instalando un controlador temporal) para leer toda la RAM física y volcarla a un archivo. Por ejemplo, WinPmem es una herramienta confiable y sencilla que se ejecuta desde la línea de comandos: tras descargar la versión adecuada (32 o 64 bits), se lanza con privilegios de administrador indicando el nombre del archivo de salida, produciendo un volcado en formato RAW. Un uso típico sería:
C:\> winpmem_mini_x64.exe captura.raw
Este comando creará un archivo captura.raw
que contiene una copia bit a bit de la memoria física del sistema. WinPmem muestra un progreso durante la adquisición y al terminar tendremos, por ejemplo, un fichero physmem.raw
con el tamaño aproximado de la RAM capturada.
Otra herramienta popular es FTK Imager (de AccessData), que incluye una opción gráfica para "Capture Memory": el analista selecciona esta opción, elige la ruta de destino y FTK Imager se encarga de crear el volcado (ofreciendo opcionalmente calcular un hash MD5/SHA1 durante la operación). De forma similar, DumpIt (antes de MoonSols) es una utilidad de un solo ejecutable que al ejecutarse vuelca automáticamente la memoria a un archivo (generalmente con extensión .bin
o .raw
) [2]. Redline (de FireEye) combina la adquisición y análisis en una suite, permitiendo capturar la RAM y luego analizar ciertos artefactos, aunque únicamente soporta plataformas Windows. En cualquier caso, en Windows siempre es necesario ejecutar con permisos de administrador la herramienta de volcado, y es recomendable hacerlo desde un medio externo, guardando la imagen resultante en otra unidad o servidor de red para no alterar el sistema investigado.
En Linux
En sistemas Linux/Unix, existen interfaces de dispositivo que representan la memoria, pero acceder a ellas directamente puede ser problemático. Históricamente se podía usar el comando dd
para leer de /dev/mem
(o /dev/kmem
) y escribir a un archivo, pero en kernels modernos el acceso a /dev/mem
está restringido por seguridad y generalmente solo permite leer regiones de memoria asociadas a hardware (no toda la RAM). Intentar volcar toda la RAM con dd if=/dev/mem of=mem.raw
en Linux actuales suele fallar o incluso bloquear el sistema por protección del kernel. Una alternativa es leer desde /proc/kcore
, que expone un volcado de núcleo simulado en formato ELF, pero su extracción completa también puede ser complicada y requiere suficiente espacio (representa la RAM del sistema como si fuera un archivo de volcado de crash).
Debido a estas limitaciones, la comunidad forense ha desarrollado herramientas dedicadas para Linux. Una de las pioneras es LiME (Linux Memory Extractor), un módulo de kernel que, al cargarse, puede extraer la memoria volátil de Linux (y dispositivos Android) de forma íntegra. LiME fue innovador al permitir por primera vez capturas fiables en Android y Linux, minimizando la interacción entre espacio de usuario y kernel durante la adquisición para evitar inconsistencias y lograr una captura forense sólida. Otra herramienta moderna es AVML (Acquire Volatile Memory for Linux), una utilidad de línea de comandos desarrollada por Microsoft que realiza el volcado de memoria desde espacio de usuario y de forma automatizada. AVML intenta distintas fuentes de memoria disponibles en el sistema – como /dev/crash
, /proc/kcore
o /dev/mem
– para obtener la RAM, eligiendo la que funcione según la configuración del sistema [5]. Esto le permite capturar la memoria sin necesidad de cargar un módulo de kernel personalizado, siendo muy útil especialmente en entornos cloud o donde no es trivial compilar módulos en el sistema objetivo.
En resumen, en Linux es común optar por herramientas como LiME o AVML en lugar de dd
puro. También existieron proyectos como fmem (un módulo que habilitaba un dispositivo /dev/fmem
para leer la RAM sin restricciones), pero actualmente LiME ha tomado su lugar como solución preferida. Los métodos difieren, pero todos tienen el mismo fin: producir un archivo de volcado (.raw
, .mem
, .lime
, etc.) que contenga una copia completa de la RAM para luego ser analizada. Tras obtener el volcado en Linux, es igualmente importante calcular sumas de verificación y proceder al análisis en una máquina separada, nunca en el sistema original.
Explicación y uso de herramientas para el volcado de memoria: LiME, dd y AVML
A continuación, profundizamos en tres herramientas representativas para volcado de memoria y cómo utilizarlas:
LiME (Linux Memory Extractor)
LiME es un módulo de kernel (LKM) que se incorpora dinámicamente al sistema Linux a investigar para realizar la captura de la RAM. Su principal ventaja es que reduce al mínimo la perturbación del sistema: al operar en kernel space y evitar interacciones innecesarias con procesos de usuario durante la copia, genera volcados muy consistentes y fiables. LiME soporta dos formatos de salida: raw (dumps en bruto de la memoria física) y lime (un formato propio con metadatos). El uso típico de LiME es:
- Compilación: Se compila el código fuente de LiME contra la versión exacta del kernel del sistema objetivo, obteniendo un archivo
lime.ko
. (El proyecto provee un Makefile para facilitar esto, requiriendo las headers del kernel y herramientas comodwarfdump
para generar información de depuración necesaria para Volatility). - Terminación: Una vez finalizada la extracción, el módulo LiME puede descargarse (rmmod) si se requiere. Ya con el archivo de memoria capturado (ya sea local o recibido remotamente), se procede a su análisis con herramientas forenses.
Inserción del módulo: Con privilegios de root, se carga el módulo en el kernel usando insmod
, especificando parámetros de módulo que indican cómo y dónde volcar la memoria. Por ejemplo, para volcar a un archivo local en formato raw:
# insmod lime.ko "path=/ruta/salida/memoria.raw format=raw"
Tras ejecutar esto, LiME escribirá toda la memoria física en el fichero indicado (memoria.raw
). Podemos verificar que el archivo se generó correctamente en la ruta dada. En caso de querer enviar el volcado por la red a otra máquina (para no almacenarlo localmente), LiME permite especificar un listener TCP:
# insmod lime.ko "path=tcp:<IP_destino>:<puerto> format=lime"
Con esta opción, LiME enviará el volcado a través de la red al host y puerto especificados (donde normalmente el analista tendrá un proceso escuchando, e.g. con netcat, que redirige lo recibido a un archivo .lime
).
LiME requiere cuidado en su uso: se debe compilar exactamente para el kernel del sistema (sino el insmod
fallará) y asegurar espacio suficiente en el destino para el tamaño de la RAM. No obstante, es una de las herramientas más efectivas para entornos Linux, incluyendo versiones de Android donde otras técnicas no funcionan, ya que LiME fue la primera solución en permitir capturar la memoria completa de dispositivos Android.
dd
La herramienta dd es una utilidad estándar en sistemas Unix para copiar bloques de datos a bajo nivel. Si bien dd no fue diseñada específicamente para forensia de memoria, históricamente se ha empleado en ocasiones para intentar volcar la RAM aprovechando interfaces del sistema operativo que la exponen como pseudo-archivo. Por ejemplo, en sistemas Linux antiguos se podía ejecutar:
# dd if=/dev/mem of=/mnt/usb/memoria.dump bs=1M
para leer la memoria física (/dev/mem
) y escribirla en un archivo de salida. Sin embargo, en la mayoría de sistemas modernos este método ya no es viable: el kernel Linux implementa protecciones (como STRICT_DEVMEM
) que evitan leer /dev/mem más allá de áreas de hardware mapeado, para impedir que programas de usuario accedan a la memoria kernel arbitrariamente. Intentos de leer /dev/mem completo pueden provocar errores de “Bad address” o congelamiento del sistema debido a estas protecciones. Del mismo modo, en Windows no existe un dispositivo similar accesible directamente; aunque hay variantes como win32dd.exe que aplican la técnica de dd en Windows mediante un controlador kernel (listada entre las herramientas de volcado), su uso ha caído en desuso en favor de utilidades más especializadas.
No obstante, dd sigue siendo útil en contextos forenses puntuales, por ejemplo, para copiar ciertos contenidos de memoria ya extraídos (como volcar un rango específico de un dump) o en sistemas embebidos sin herramientas dedicadas. En Linux, una alternativa con dd es utilizar /proc/kcore
, que representa la memoria en formato de archivo core de depuración. Un analista podría hacer dd if=/proc/kcore of=mem.kcore bs=1M
aunque el resultado no es un raw puro sino un ELF con la imagen de memoria (Volatility soporta analizar ciertos formatos de core dump también). Otra vía es aprovechar /dev/crash
en sistemas donde esté habilitado (por ejemplo, si el sistema tiene configurado kdump, /dev/crash
permite acceder a la memoria reservada para volcados de kernel). Herramientas modernas como AVML de hecho intentan automáticamente leer desde /dev/crash
o /proc/kcore
antes que de /dev/mem
, aprovechando el método más confiable disponible.
En resumen, si bien dd
forma parte del abanico de opciones (especialmente en entornos Unix), hoy en día se prefiere utilizar herramientas diseñadas específicamente para adquisición de memoria, que manejan mejor los detalles del sistema operativo. dd
podría considerarse la opción de último recurso si no se dispone de nada más, y usualmente requerirá que el sistema tenga desactivadas ciertas protecciones para que funcione.
AVML
AVML (Acquire Volatile Memory for Linux) es una herramienta ligera y de código abierto (creada por investigadores de Microsoft) para la adquisición de memoria en sistemas Linux [6]. A diferencia de LiME, que opera como módulo de kernel, AVML funciona completamente en espacio de usuario. Internamente, intenta acceder a fuentes de memoria expuestas por el sistema (como las ya mencionadas /dev/crash
, /proc/kcore
o /dev/mem
) y copiar los datos de RAM desde allí. Su diseño como binario autónomo facilita su uso en situaciones de respuesta a incidentes en las que compilar o cargar un módulo kernel no es práctico.
El uso de AVML es extremadamente simple: se descarga el ejecutable precompilado para la arquitectura del sistema (por ejemplo, avml
para x64 Linux, disponible en GitHub) y se ejecuta con permisos de root indicando el archivo de salida. No requiere parámetros adicionales ni conocer detalles del sistema; AVML detecta automáticamente cómo leer la memoria. Por ejemplo:
# ./avml /mnt/usb/memoria.avml
Con este comando, AVML volcará la RAM completa al fichero indicado (memoria.avml
). No es necesario especificar tamaño ni origen, la herramienta determina la fuente adecuada y comienza la copia. Se ha reportado que AVML puede capturar con precisión la totalidad de la memoria instalada (por ejemplo, en un sistema de 8 GB produce un volcado de ~8 GB). Dado que realiza un volcado en bruto, la extensión del archivo realmente no importa (puede ser .avml
, .mem
o .raw
), y Volatility podrá procesarlo reconociendo el contenido.
AVML ofrece una opción para comprimir el volcado en tiempo real, reduciendo el tamaño del archivo de salida, pero los desarrolladores aconsejan usarla solo si el entorno ha sido probado con esa función – en situaciones críticas es más seguro obtener el volcado sin compresión para evitar cualquier posible fallo. Otra característica es que existe una build especial de AVML pensada para entornos Azure, la cual puede subir automáticamente el volcado a Azure Storage, útil para cloud forensics. En su uso básico, sin embargo, AVML se destaca por su facilidad: descarga, asigna permisos de ejecución, ejecuta y listo. Esto la hace muy adecuada en emergencias donde se necesita rapidez y no se quiere (o no se puede) agregar componentes al kernel.
En resumen, LiME, dd y AVML representan tres enfoques distintos para obtener una imagen de memoria. LiME brinda un control granular desde el kernel, dd es una solución manual clásica (ahora limitada), y AVML es la comodidad de una herramienta plug-and-play. Cualquiera que sea la elegida, el resultado final será un archivo con el contenido de la RAM que podremos analizar con Volatility para extraer inteligencia forense.
Ejemplos prácticos de análisis de volcados de memoria con Volatility
Volatility es un framework de código abierto (disponible en Windows y Linux) que permite analizar volcados de memoria de diversos sistemas operativos. A través de comandos (plugins) especializados, Volatility extrae información estructurada de la masa de datos binarios que es un volcado de RAM. Con Volatility podemos identificar procesos activos, conexiones de red, módulos cargados, regiones de memoria sospechosas, entre muchos otros artefactos, e incluso extraer contenidos para un análisis más profundo. A continuación, se describen ejemplos concretos de análisis utilizando Volatility, enfocando en la detección de malware/procesos sospechosos y la recuperación de información valiosa.
Listado de procesos y detección de procesos sospechosos
Volatility permite listar todos los procesos que estaban activos en el sistema al momento del volcado, similar a un task manager post-mortem. Comandos como pslist
generan un listado lineal de procesos con sus PID, nombres, tiempos de inicio y fin, etc., mientras que pstree
organiza la jerarquía padre-hijo de los procesos. Inspeccionar estos listados es un primer paso fundamental: un dicho popular en forense es que "el malware puede ocultarse, pero debe ejecutarse", resaltando que si un código malicioso está presente, forzosamente tendrá algún proceso (o hilo) en memoria. Por ello, revisando la lista de procesos se puede detectar algo fuera de lo común.

En la Figura I, por ejemplo, vemos la salida de pstree
donde la mayoría de procesos corresponden a nombres legítimos de Windows (svchost.exe, lsass.exe, etc.), pero destaca uno al final: SkypeC2AutoUpd (PID 1364). Un analista notaría este nombre inusual que sugiere una posible herramienta de Command & Control (por las letras "C2") camuflada como actualización de Skype. En un caso real, este proceso resultó ser malicioso, lanzado por otro proceso padre que no coincide con los estándares del sistema. Los atacantes a menudo nombran sus procesos maliciosos igual que procesos legítimos de Windows (ej. svchost.exe) para pasar desapercibidos, pero hay pistas para descubrirlos. Un proceso del sistema genuino suele ejecutarse desde ubicaciones estándar y con el padre esperado; por ejemplo, taskhostw.exe siempre reside en C:\Windows\System32\taskhostw.exe
y es hijo de svchost.exe. Si encontráramos un taskhostw.exe corriendo desde otra ruta o con un parent distinto, sería claramente sospechoso. Así, al analizar la lista de procesos con Volatility, se busca nombres desconocidos o duplicados extraños, y se verifica su contexto (ruta, usuario, proceso padre). Cualquier anomalía – como un proceso con nombre legítimo pero ubicado en un directorio incorrecto, o iniciado por otro proceso que no corresponde – es un fuerte indicador de presencia de malware.
Como buena práctica, tras identificar un proceso dudoso se puede profundizar: por ejemplo, comprobar los hilos e identificadores abiertos por ese proceso, los módulos (DLLs) que tiene cargados, y comparar con un sistema limpio. Volatility proporciona plugins como dlllist
(lista las DLL en el espacio de un proceso) o handles
(muestra objetos abiertos por procesos) que ayudan a reunir más contexto sobre el comportamiento de un proceso sospechoso.
Conexiones de red y actividad maliciosa
Además de procesos, un volcado de RAM preserva las conexiones de red que estaban establecidas o en curso en el momento de la captura. Esto es sumamente valioso para la investigación, ya que permite descubrir comunicacions con servidores remotos potencialmente maliciosos (por ejemplo, conexiones de comando y control). Volatility incluye el plugin netscan
(para volúmenes Windows modernos) que escanea estructuras de sockets y muestra todas las conexiones de red detectadas: direcciones locales y remotas, puertos, estado (LISTEN, ESTABLISHED, CLOSED) y el proceso asociado a cada socket. De forma análoga, en sistemas más antiguos se usan connections
/connscan
(para Windows XP) o herramientas equivalentes en Linux (Volatility 3 tiene plugins para conexiones Linux si se provee el perfil adecuado).

En la imagen se ha filtrado la salida de netscan
buscando referencias al proceso SkypeC2AutoUpd (PID 1364). Puede observarse que dicho proceso tenía conexiones ESTABLISHED a direcciones IP locales (127.0.0.1) y también conexiones CLOSED hacia una IP pública 54.174.131.235:80. Esta última dirección resulta ser el servidor C2 al que el malware intentó comunicarse. En un análisis real, identificaríamos esa IP externa y la marcaríamos como IOC. Volatility nos muestra claramente que el proceso sospechoso estuvo contactando ese host remoto. Además, podemos ver patrones en los puertos: por ejemplo, los atacantes a veces usan puertos curiosos o repetitivos (lo que se llama "poker hands", como 4444, 8080, 1234, etc.) para sus comunicaciones. En este caso, el puerto 80 podría pasar por legítimo (tráfico web), pero la recurrencia de la IP y el hecho de que el proceso que lo usa es anómalo confirman la actividad maliciosa.
Con esta información, un investigador sabrá qué direcciones y puertos bloquear o monitorear en la red corporativa, y puede buscar otros sistemas que hayan contactado la misma IP (indicando propagación). También podría utilizar Volatility para dumps de conexiones: por ejemplo, plugins como netscan
permiten volcar estructuras TCP/UDP y a veces incluso buffers de socket, potencialmente recuperando datos transmitidos. Si, por ejemplo, se trató de robo de datos vía memoria, podríamos encontrar restos en los buffers de red en la RAM. En la práctica, tras obtener la lista de conexiones con Volatility, se suelen cruzar esos datos con inteligencia externa (reputación de IPs, whois, etc.) para cualificar cuáles conexiones eran legítimas y cuáles sospechosas.
Detección de código malicioso inyectado en memoria
Otra técnica frecuente de malware es la inyección de código en procesos legítimos, para ocultar su presencia. En estos casos no aparece un proceso claramente extraño (porque el malware corre dentro de otro proceso como, digamos, explorer.exe
), pero igualmente reside en la memoria. Para descubrir estos escenarios, Volatility ofrece el plugin malfind
. El comando malfind
escanea la memoria de todos los procesos en busca de regiones con propiedades típicas de código inyectado: por ejemplo, páginas de memoria marcadas con permisos READ, WRITE, EXECUTE (RWX) o segmentos que contienen un PE header (cabecera de ejecutable) en medio de un proceso donde no cabría esperar uno [7]. Si Volatility encuentra dichas regiones anómalas, lista el proceso, la dirección de memoria y un volcado hexdump del contenido sospechoso.
El uso de malfind
facilita al analista ubicar injections rápidamente. Una vez identificadas, se debe profundizar: Volatility permite volcar a disco esas regiones de memoria sospechosas para luego analizarlas con un antivirus o herramienta de reversing. Por ejemplo, si en la salida de malfind vemos que el proceso explorer.exe
tiene un segmento en 0x7abcd000 con código sospechoso, podemos usar opciones o plugins para dumpear esa sección a un archivo binario. El analista podría entonces inspeccionar ese binario en busca de strings o incluso ejecutarlo en un entorno aislado para observar su comportamiento. Cuando malfind
muestra valores claros (por ejemplo, un fragmento de código que empieza con MZ
-indicador de archivo PE- y permisos RWX en un proceso que no debería tenerlos), prácticamente se confirma la presencia de malware inyectado. Esta técnica es muy útil para detectar inyecciones de tipo DLL hollowing, Process Hollowing o APC injections, donde el malware no crea un proceso nuevo sino que se incrusta en uno existente.
Otra forma de detectar malware en memoria es mediante búsqueda de patrones o reglas YARA en el volcado [8]. Volatility permite aplicar reglas YARA sobre la memoria para encontrar secuencias de bytes propias de ciertos malware conocidos. Por ejemplo, podríamos escanear toda la memoria en busca de la cadena "This program cannot be run in DOS mode" que aparece al inicio de muchos PE, o firmas más específicas. De esta manera se puede hallar malware aunque esté ofuscado en un proceso. En suma, Volatility provee múltiples enfoques (listas de procesos, scans de inyecciones, búsquedas por firmas) para descubrir código malicioso oculto en la RAM.
Recuperación de información y artefactos desde la memoria
Una vez identificados procesos o componentes sospechosos, el analista forense querrá extraer la mayor cantidad de información posible de la memoria. Afortunadamente, Volatility ofrece gran variedad de plugins para recuperar artefactos útiles:
- Extracción de archivos: Si el volcado de memoria contiene archivos abiertos o mapeados, es posible listarlos y extraerlos. Por ejemplo, con
filescan
se escanean estructuras FILE o FILE_OBJECT en memoria para listar nombres de archivos que estaban abiertos. Luego, usandodumpfiles
, Volatility puede volcar esos archivos desde la memoria a disco. Esto permite recuperar documentos, imágenes, adjuntos de correo o malware temporal que solo residía en RAM. Caso práctico: Supongamos que un ransomware cargó una nota de rescate en la memoria pero luego la borró del disco; confilescan
podríamos encontrarla en RAM y condumpfiles
recuperar su contenido. En un ejemplo de análisis, investigadores utilizaronfilescan
ydumpfiles
para encontrar archivos con extensión.ost
o.pst
(archivos de Outlook) en la memoria de un equipo comprometido, logrando extraerlos para revisar correos y adjuntos sospechosos. Incluso cuando un archivo ya no está en disco (borrado), si sus datos permanecen en caches de memoria, puede ser recuperable con estas técnicas. - Volcado de procesos y módulos: Para estudiar un proceso malicioso, es muy útil volcar el ejecutable completo desde la memoria. Volatility tiene plugins como
procdump
(en Volatility2) o la opción--dump
en Volatility3 que permiten tomar un proceso por PID y extraer su imagen ejecutable y módulos asociados. Por ejemplo, tras detectar el proceso sospechosoSkypeC2AutoUpd.exe
(PID 1364), podríamos hacer que Volatility volcara su memoria a un archivo1364.dmp
. Luego podemos calcular hash (MD5/SHA256) de ese dump y verificarlo contra bases de malware conocidas, o abrirlo en un desensamblador para estudiar su código. De hecho, es común que tras un incidente se dumpee el proceso malicioso principal y se envíe ese binario a VirusTotal o a un sandbox para identificación. En un caso de estudio, se usó Volatility para volcar el proceso con PID 6988 y luego se calculó su hash SHA256 para confirmar su identidad. Esta capacidad de obtener el payload directo desde la RAM es invaluable para el análisis de malware. Asimismo, se pueden extraer DLLs cargadas en memoria (moddump
odlldump
) si se sospecha que alguna biblioteca en proceso legítimo fue inyectada. - Historial de comandos y datos de usuario: La memoria suele conservar trazas de la actividad del usuario. Un plugin muy utilizado en análisis de Windows es
consoles
, que extrae el buffer de las consolas (símbolo del sistema/PowerShell) abiertas. Esto permite recuperar los comandos que se escribieron en la terminal, incluso si la ventana ya se cerró. Por ejemplo, se podrían revelar comandos del atacante como enumeración de sistema, movimientos laterales, ejecución de malware, etc., que de otro modo no quedarían en logs. Del mismo modo, Volatility puede recuperar el contenido del portapapeles (clipboard) con plugins específicos, revelar texto de ventanas de chat o documentos abiertos en aplicaciones (buscando cadenas en los heaps de procesos de Word, PDF readers, etc.), e incluso reconstruir capturas de pantalla en ciertos casos (si la tarjeta de video compartía memoria accesible, aunque esto es avanzado). Un ejemplo sencillo es extraer el texto no guardado de un archivo abierto en Notepad: Volatility puede localizar en la memoria del procesonotepad.exe
las cadenas Unicode del documento en edición, permitiendo recuperar ese texto aunque nunca se guardó en disco. - Credenciales y claves: Muchos secretos temporales viven en la RAM. Un objetivo frecuente en análisis de memoria de Windows es la obtención de hashes de contraseñas o credenciales en texto claro de la memoria de procesos como lsass.exe (el proceso de autenticación que almacena credenciales de usuarios logueados). Herramientas como Mimikatz se usan ofensivamente para extraerlas; en forense con Volatility podemos usar el plugin
lsass
(u otros) para volcar la memoria de LSASS y luego buscar credenciales. También se pueden encontrar claves criptográficas: por ejemplo, claves de sesión SSL/TLS en procesos de navegador o servidor web (lo que podría permitir desencriptar tráfico capturado si se obtienen a tiempo), o la clave maestra de un disco cifrado si el volumen estaba montado (pensemos en BitLocker: la clave de desencriptación reside en memoria mientras el disco está en uso). Investigadores han destacado que la RAM puede contener claves de cifrado, certificados y hashes que no existen en ninguna otra parte del sistema. Un caso caso de uso es la extracción de claves privadas de VPN y SSH de la memoria para comprometer comunicaciones. En Linux, Volatility (con el perfil adecuado) también puede extraer credenciales en memoria de procesos comosshd
o dumps de la memoria de kernel para obtener claves de cifrado de sistemas de archivos.
En conjunto, estos ejemplos demuestran el poder del análisis de memoria con Volatility. Con las herramientas y técnicas adecuadas, un analista puede reconstruir la historia de una intrusión: qué malware se ejecutó, cómo persistió, qué acciones realizó el atacante, qué datos pudo haber accedido, y recoger evidencia sólida (procesos maliciosos, conexiones, archivos, comandos, credenciales) para responder efectivamente al incidente. La memoria, correctamente volcada y analizada, se convierte así en una ventana temporal que revela la actividad volatil que de otra forma se perdería. Volatility, con su amplia gama de plugins y el apoyo de la comunidad forense, sigue siendo una de las herramientas imprescindibles para hacer accesible y comprensible esta gran cantidad de información oculta en los dumps de RAM.
Referencias
- Varonis. Memory forensics is the process of capturing the running memory of a device and then analyzing the captured output for evidence of malicious software... (Memory Forensics for Incident Response)
- LevelBlue (K. S. Bachchas). RAM contains transient data not stored on disk, such as encryption keys and in-memory malware. (Creating memory dumps using LiME and using | LevelBlue)
- Hack The Box (0xTejas). Memory forensics is a method in which volatile data (RAM) is collected and stored as a file using tools like Magnet RAM Capture, AVML, FTK Imager, etc. (Memory forensics with Volatility on Linux and Windows)
- luishcr. La extracción de un volcado de memoria se puede realizar de numerosas formas... herramientas para extraer la memoria: FTK Imager, Redline, DumpIt.exe, win32dd.exe, Memoryze, FastDump. (Herramientas de análisis forense: Volatility)
- Binary Zone. AVML (Acquire Volatile Memory for Linux) is a “userland volatile memory acquisition tool”. It tries to acquire memory from: /dev/crash, /proc/kcore, /dev/mem. (Acquiring Linux Memory using AVML and Using it with Volatility | B!n@ry)
- Medium (M. B. Firoj). AVML usage: give executable permission, then simply run
./avml <output_filename>
– no flags needed, the tool finds the memory source automatically (admin required). It accurately captured the whole memory (e.g., 8 GB). (Linux memory forensics — Memory capture using AVML and analysis using volatility | by Md. Mahim Bin Firoj | Medium) - Varonis. When a RAM dump is captured, any network connections at that time are stored in memory – allowing incident responders to identify malicious connections (source port, destination IP, destination port, and associated process). (How to Use Volatility for Memory Forensics and Analysis | Varonis)
- InfoSec Write-ups (Hacktivities). Volatility can retrieve many artifacts: list processes, list network connections, view browser history, retrieve files from the memory dump, read contents of notepad documents, retrieve command prompt history, scan for malware with YARA, retrieve screenshots and clipboard contents, retrieve hashed passwords, SSL keys and certificates. (Forensics — Memory Analysis with Volatility | by Hacktivities | InfoSec Write-ups)