Análisis forense de memoria RAM 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
Flujo de trabajo recomendado para análisis de memoria
Resumen de la metodología práctica (mini-metodología):
- Verificar la integridad del volcado.
- Identificar perfiles recomendados con imageinfo.
- Enumerar procesos (pslist, pstree) y buscar anomalías.
- Ejecutar detección e inyección (malfind) para extraer regiones sospechosas.
- Revisar historial de comandos (cmdscan) y conexiones de red (netscan).
- Analizar binarios/DLL extraídos con antivirus, sandbox y análisis estático.
- 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
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
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
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
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
Imágenes adicionales muestran los dumps extraídos y nombres generados para cada región.
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.
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:
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
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.
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
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)
- Aislar la máquina comprometida de la red.
- Adquirir volcado de memoria y registrar hash.
- Ejecutar imageinfo y determinar perfil.
- Enumerar procesos y volcar regiones sospechosas.
- Analizar extracciones en sandbox y con motores AV.
- Contener: bloquear IoCs, rotar credenciales.
- Recuperar: limpiar persistencia, reinstalar si es necesario.
- 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
- http://www.volatilityfoundation.org/24
- https://www.microsoft.com/security/portal/threat/encyclopedia/entry.aspx?Name=Trojan:Win32/EyeStye.N
Materiales similares

Fondos distintos por pantalla en Android

Contadores de rendimiento para Apache Tomcat

Protégete del clickjacking y doble clickjacking

Fondos distintos por pantalla en Android

Eliminar tus datos de data brokers
