Guía de tecnologías

Análisis forense de memoria RAM con Volatility

9 min read Seguridad Actualizado 16 Sep 2025
Análisis RAM forense con Volatility
Análisis RAM forense con Volatility

Introducción

El análisis de la memoria de acceso aleatorio (RAM) es una pieza clave del análisis de malware y la respuesta a incidentes. A diferencia de los análisis basados en disco, el análisis de memoria captura el estado en ejecución: procesos activos, inyecciones de código, sockets abiertos, credenciales en memoria y el historial de comandos. Volatility es un framework open source, escrito en Python, diseñado para extraer esa visibilidad a partir de volcados volátiles (raw dumps) y formatos comunes de máquinas virtuales.

Definición breve: Volcado de memoria es una captura del contenido de la RAM en un momento dado; contiene procesos, pilas, heaps y estructuras del kernel necesarias para el análisis forense.

Importancia: muchos malwares solo son detectables en memoria porque no dejan artefactos persistentes en disco o usan técnicas de inyección para camuflarse.

Compatibilidad de formatos de memoria

Volatility soporta, entre otros, los siguientes formatos (según la versión referida):

  • Raw/Padded Physical Memory
  • Firewire (IEEE 1394)
  • Expert Witness (EWF)
  • Crash dumps de Windows 32 y 64 bits
  • Hibernación de Windows 32 y 64 bits
  • Archivos Mach-O 32 y 64 bits
  • Volcados de VirtualBox
  • VMware Saved State (.vmss) y Snapshot (.vmsn)
  • Formato HPAK (FastDump)
  • Volcados de memoria de QEMU

Nota: la identificación correcta del perfil de Volatility (por ejemplo Win7SP0x86) es crítica para interpretar las estructuras de memoria correctamente.

Instalación

Volatility está disponible para Windows, Linux y macOS. En Windows y macOS existen ejecutables standalone; en distribuciones GNU/Linux (ej. Ubuntu) puede instalarse desde repositorios con:

apt-get install volatility

Pantalla de instalación de Volatility

Flujo de trabajo recomendado para análisis de memoria

Resumen de la metodología práctica (mini-metodología):

  1. Verificar la integridad del volcado.
  2. Identificar perfiles recomendados con imageinfo.
  3. Enumerar procesos (pslist, pstree) y buscar anomalías.
  4. Ejecutar detección e inyección (malfind) para extraer regiones sospechosas.
  5. Revisar historial de comandos (cmdscan) y conexiones de red (netscan).
  6. Analizar binarios/DLL extraídos con antivirus, sandbox y análisis estático.
  7. Documentar hallazgos, preservar evidencia y generar reportes.

Cada paso se explica más adelante con ejemplos prácticos.

Verificación de integridad

Antes de comenzar, compruebe el hash del volcado para asegurar la integridad de la imagen y la cadena de custodia.

Ejemplo de MD5 calculado del volcado analizado:

MD5:               ee043142485a83f4d49a3a7899408500

Criterio: el hash debe coincidir con el valor registrado al adquirir la imagen; si difiere, documente y no proceda hasta entender la discrepancia.

Análisis con Volatility: identificación de perfiles

El primer paso técnico es identificar los perfiles compatibles del volcado usando imageinfo. En el caso examinado se ejecutó:

"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" imageinfo -f memdump3.raw

Resultado de imageinfo con perfiles sugeridos

Volatility sugirió los perfiles:

Win7SP0x86
Win7SP1x86

Elija el perfil más apropiado (pruebe ambos si la identificación es ambigua) para las siguientes etapas.

Enumeración de procesos y árbol de procesos

Listar procesos activos ayuda a detectar ejecutables con nombres inusuales o duplicados. Ejemplo de comando:

"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 pslist -f memdump3.raw

Listado de procesos detectados

El plugin pslist muestra procesos con PID y tiempos. Busque:

  • Ejecutables con nombres extraños (p. ej. 0KqEC12.exe).
  • Múltiples instancias de procesos del sistema que sorprenden (p. ej. varias iexplore.exe).
  • Procesos sin ruta válida o con inyección conocida.

Para ver relaciones padre/hijo use pstree:

"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 pstree -f memdump3.raw

Árbol de procesos con PID y PPID

La posición en el árbol ayuda a detectar procesos que se esconden bajo procesos legítimos (técnica de proceso padre comprometido).

Detección de inyección y extracción de regiones sospechosas

El plugin malfind localiza regiones de memoria con características de inyección (regiones ejecutables sin origen claro, combinaciones RWX, patrones de shellcode) y permite volcar el contenido a un directorio para análisis posterior.

Ejemplo: volcar regiones del proceso con PID 1120 (svchost.exe):

E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 malfind -D E:\output/pid-1120 -p 1120 -f memdump3.raw

Salida de malfind sin regiones detectadas

Observación: para algunos procesos malfind no devuelve regiones; para otros sí. En el caso analizado, procesos como explorer.exe e instancias de iexplore.exe mostraron regiones sospechosas y se extrajeron DLLs y secciones ejecutables.

Ejemplo de volcado para PID 2240 (0KqEC12.exe):

E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 malfind -D E:\output/pid-2240 -p 2240 -f memdump3.raw

Resultado de malfind para proceso sospechoso

Imágenes adicionales muestran los dumps extraídos y nombres generados para cada región.

Dump de regiones extraídas por malfind

Análisis de los binarios extraídos

Tras extraer DLLs o ejecutables desde memoria, se deben analizar con herramientas alternativas:

  • Escáneres antivirus locales (Windows Defender, MalwareBytes).
  • Servicios de sandbox y análisis estático (VirusTotal, Hybrid Analysis, Payload Security).
  • Análisis estático con cadenas, imports y firmas.

En el caso práctico, Windows Defender identificó muestras como Trojan:Win32/EyeStye.N y Trojan:Win32/EyeStye.plugin.

Windows Defender identificando trojan EyeStye

Descripción general del comportamiento reportado por firmas: este tipo de troyano puede registrar teclas, monitorizar actividad web, robar credenciales y realizar inyección de código en procesos legítimos (cmd.exe, explorer.exe) para ocultarse. Se observó inyección en explorer.exe, que actuaba como padre de procesos maliciosos nombrados iexplore.exe.

MalwareBytes reportó las mismas extracciones como Trojan.Grabber:

MalwareBytes detectando Trojan.Grabber

Importante: detecciones por firmas aportan contexto pero no sustituyen el análisis manual. Algunas familias muestran comportamiento similar y requieren correlación con telemetría y comportamiento observacional.

Historia de comandos (CMD history)

El plugin cmdscan permite leer fragmentos del búfer de la consola de comandos presentes en memoria. Ejemplo de uso:

E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 cmdscan -f memdump3.raw

Salida de cmdscan con comandos ejecutados

En el análisis se encontraron comandos que ejecutaron los binarios iexplorer.exe e ieplore.exe y referencias a archivos como _lt112.spn. La búsqueda en servicios de análisis en línea mostró coincidencias con muestras maliciosas publicadas en repositorios de análisis.

Resultado de búsqueda de _lt112.spn en malwr

Resultado en Hybrid Analysis

Interpretación: la presencia del archivo y comandos asociados permiten trazar la campaña o la muestra y favorecer la búsqueda de IoCs.

Conexiones de red observadas en memoria

El plugin netscan muestra sockets abiertos y conexiones TCP/UDP captadas en el volcado. Ejemplo de ejecución:

E:\>"E:\volatility_2.4.win.standalone\volatility-2.4.standalone.exe" --profile=Win7SP0x86 netscan -f memdump3.raw

netscan parte 1 con sockets detectados

netscan parte 2 con conexiones remotas

netscan parte 3 con puertos locales y remotos

En el ejemplo, iexplore.exe estableció conexiones salientes en el puerto 80 (HTTP), lo que sugiere comunicación con C2 o exfiltración sobre protocolos no cifrados.

Caso práctico: hallazgos principales

  • Procesos sospechosos: 0KqEC12.exe, múltiples iexplore.exe y una instancia alterada de rdpclip.exe.
  • Inyección detectada en explorer.exe y en varias instancias de iexplore.exe mediante malfind.
  • Extracciones analizadas por Windows Defender y MalwareBytes identificadas como variantes de Trojan/Grabber y EyeStye.
  • Historial de comandos y artefactos (_lt112.spn) coinciden con muestras públicas en repositorios de análisis.
  • Conexiones de red activas desde procesos maliciosos hacia puertos HTTP remotos.

Conclusión técnica: la evidencia en memoria confirma ejecución y persistencia en ejecución (inyección en procesos legítimos), así como comunicación de red desde procesos comprometidos.

Listas de verificación por rol

Investigador forense:

  • Verificar hash de la imagen antes y después del análisis.
  • Ejecutar imageinfo, pslist y pstree.
  • Extraer regiones sospechosas con malfind y conservar copias.
  • Correlacionar con logs y telemetría.

Analista de malware:

  • Ejecutar análisis estático y dinámico de los binarios extraídos en un entorno aislado.
  • Revisar imports, strings y posibles C2 en las muestras.
  • Comparar con firmas y reportes públicos.

Administrador de TI / Respuesta a incidentes:

  • Aislar sistemas comprometidos.
  • Bloquear dominios/IPs identificados temporalmente.
  • Restablecer credenciales y revisar privilegios.

Matriz de riesgos y mitigaciones

Riesgos observados:

  • Exfiltración de credenciales y datos.
  • Persistencia mediante inyección en procesos del sistema.
  • Uso de canales HTTP no cifrados para C2.

Mitigaciones recomendadas:

  • Rotación de credenciales y revocación de sesiones afectadas.
  • Parcheo y endurecimiento de procesos susceptibles a inyección.
  • Inspección de tráfico saliente y bloqueo de indicadores de compromiso (IoC).

Criterios de aceptación

Para considerar un análisis de memoria como satisfactorio y aceptable en un informe forense:

  • Se ha verificado la integridad del volcado con un hash registrado.
  • Se han documentado los comandos ejecutados (cmdscan) y las conexiones de red (netscan).
  • Las regiones sospechosas fueron volcadas y analizadas con al menos dos mecanismos (sandbox y firmas).
  • El reporte incluye IoCs, fase de compromiso y recomendaciones de remediación.

Heurística y modelos mentales rápidos

  • Si un proceso legítimo (explorer.exe, svchost.exe) contiene regiones ejecutables no firmadas o con cadenas sospechosas, sospeche inyección.
  • Buscar duplicados de nombres de procesos (iexplore vs iexplorer) suele indicar camuflaje por nombre.
  • El historial de comandos puede revelar herramientas y operadores manuales: correlacione con tiempos de conexión.

Ejemplos de cuándo la técnica puede fallar

  • Volcados de memoria muy parciales o truncados pueden omitir regiones críticas.
  • Técnicas avanzadas de anti-forense (encriptación de regiones en memoria, trampas para volcado) pueden ocultar trazas.
  • Sistemas con protección de kernel o drivers personalizados pueden requerir perfiles de Volatility específicos o versiones parcheadas.

Minicaja de hechos (Fact box)

  • Volatility es multi-plataforma y soporta formatos de VM comunes.
  • Profile selection es crítico para interpretar estructuras internas.
  • Plugins clave: imageinfo, pslist, pstree, malfind, cmdscan, netscan.

Playbook rápido para respuesta (SOP)

  1. Aislar la máquina comprometida de la red.
  2. Adquirir volcado de memoria y registrar hash.
  3. Ejecutar imageinfo y determinar perfil.
  4. Enumerar procesos y volcar regiones sospechosas.
  5. Analizar extracciones en sandbox y con motores AV.
  6. Contener: bloquear IoCs, rotar credenciales.
  7. Recuperar: limpiar persistencia, reinstalar si es necesario.
  8. Reportar y documentar cadena de custodia.

Diagrama de decisión para análisis inicial

flowchart TD
  A[¿Se tiene volcado de memoria?] -->|No| B[Adquirir volcado]
  A -->|Sí| C[Verificar integridad]
  C --> D{¿Profile detectado?}
  D -->|No| E[Probar perfiles manualmente]
  D -->|Sí| F[pslist y pstree]
  F --> G{¿Procesos sospechosos?}
  G -->|Sí| H[malfind y extracción]
  G -->|No| I[Revisar netscan y cmdscan]
  H --> J[Analizar muestras en sandbox]
  J --> K[Tomar acciones: contener y remediar]
  I --> K
  E --> F

Glosario rápido

  • Volcado: captura de la RAM en un momento dado.
  • Profile: conjunto de estructuras de un sistema operativo que Volatility usa para interpretar la memoria.
  • Inyección: técnica por la que código malicioso se inserta en procesos legítimos.
  • IoC: indicador de compromiso (IPs, hashes, dominios).

Notas importantes

  • Mantenga copias forenses inalteradas de los volcados; realice análisis sobre copias.
  • No ejecute binarios extraídos en sistemas de producción. Use entornos aislados.

Conclusión

El análisis de memoria con Volatility proporciona visibilidad crítica para detectar malwares que operan en memoria, realizan inyección de código y mantienen comunicaciones con servidores remotos. Combinando plugins como malfind, cmdscan y netscan con análisis en sandbox y correlación con servicios de inteligencia de amenazas, se puede construir un caso forense sólido y aplicar remediaciones efectivas.

Resumen: comprobar integridad, identificar perfil, enumerar procesos, volcar regiones sospechosas, analizar muestras y contener la amenaza.

Referencias

  1. http://www.volatilityfoundation.org/24
  2. https://www.microsoft.com/security/portal/threat/encyclopedia/entry.aspx?Name=Trojan:Win32/EyeStye.N

Captura de procesos sospechosos detectados

Salida de pstree con procesos resaltados

Dump extraído del proceso explorer.exe

Dump extraído del proceso iexplore.exe

Autor
Edición

Materiales similares

Fondos distintos por pantalla en Android
Android Personalización

Fondos distintos por pantalla en Android

Contadores de rendimiento para Apache Tomcat
Monitorización

Contadores de rendimiento para Apache Tomcat

Protégete del clickjacking y doble clickjacking
Seguridad web

Protégete del clickjacking y doble clickjacking

Fondos distintos por pantalla en Android
Android

Fondos distintos por pantalla en Android

Eliminar tus datos de data brokers
Privacidad

Eliminar tus datos de data brokers

Fondo distinto por cada pantalla en Android
Android

Fondo distinto por cada pantalla en Android