cridex.vmem es uno de los casos de estudio más famosos del análisis forense de memoria. Se trata de un volcado de RAM de un sistema Windows XP infectado con el malware Cridex: un troyano bancario, antecesor del conocido Dridex, que se inyecta en procesos legítimos para robar credenciales bancarias y comunicarse con servidores C2.
A lo largo de este ejercicio usarás Volatility (v2 para el análisis principal y v3 como alternativa), bulk_extractor, Wireshark y VirusTotal para reconstruir toda la cadena de infección desde la RAM.
⬇ Fichero de práctica
Descarga el volcado de memoria para seguir este ejercicio. El ZIP contiene cridex.vmem listo para usar con Volatility.
📦 cridexmemdump.zip🔗 SourceForge⚠️ Usar en VM aislada
Este fichero contiene un volcado de RAM con malware real. Trabaja siempre dentro de una máquina virtual aislada sin acceso a red o con red restringida. No ejecutes los binarios extraídos fuera de un entorno controlado.
01
// volatility · imageinfo
Identificación del Sistema
🎯 Objetivo
Confirmar el perfil del sistema operativo del volcado. En Volatility 2 es necesario especificar el profile; en la versión 3 la herramienta lo detecta automáticamente.
Empezamos siempre identificando el sistema operativo y su arquitectura. En Volatility 2 (que es el que produce la mayoría de capturas de este ejercicio) usamos imageinfo:
PowerShell / Terminal — Volatility 2
$ vol.py -f cridex.vmem imageinfo
En Volatility 3 (instalación Windows con vol.exe) no necesitas especificar el profile:
PowerShell — Volatility 3
PS> vol.exe -f cridex.vmem windows.info
Captura 01 — imageinfo output
🔍Hallazgo
El Suggested Profile indica WinXPSP3x86 — Windows XP Service Pack 3, 32 bits.
El huso horario es UTC-0400. Deberás tenerlo en cuenta al analizar marcas temporales.
Anota el profile exacto; lo necesitarás en todos los comandos de Volatility 2: --profile=WinXPSP3x86
📝Tarea del alumno
Ejecuta el comando y localiza el campo Suggested Profile(s).
¿Cuántos profiles sugiere Volatility? ¿Qué implica que haya más de uno?
Apunta el huso horario del sistema. ¿Cuántas horas de diferencia hay con UTC?
02
// volatility · pstree / pslist
Análisis de Procesos — El «Árbol Genealógico»
🎯 Objetivo
Identificar procesos activos en el momento del volcado y detectar relaciones padre-hijo anómalas que delaten la presencia del malware.
El primer paso forense siempre es ver qué se estaba ejecutando. pslist muestra los procesos en formato tabla ordenados por PID; pstree muestra la jerarquía de procesos, lo que es crítico para detectar anomalías.
Captura 02 — pslist: procesos ordenados por fecha de inicio
🚨Anomalía detectada
reader_sl.exe (PID 1640) aparece como proceso hijo de explorer.exe (PID 1484).
reader_sl.exe es el proceso del Adobe Acrobat Speed Launcher. Aunque es legítimo, nunca debería ser hijo de explorer.exe de forma persistente y sin interacción del usuario.
El momento de inicio de los dos procesos es sospechosamente similar, lo que sugiere que uno lanzó al otro.
📝Tarea del alumno
¿Qué PID tiene explorer.exe? ¿Y reader_sl.exe?
Busca en la salida de pstree la relación padre-hijo entre ambos procesos y descríbela.
¿Qué otros procesos te parecen inusuales? Justifica tu respuesta.
03
// volatility · connections / connscan / netscan
Análisis de Conexiones de Red
🎯 Objetivo
Cridex es un troyano que necesita comunicarse con su servidor de Comando y Control (C2). Vamos a identificar conexiones activas y los procesos que las generan.
En sistemas Windows XP, Volatility ofrece dos plugins de red: connections muestra conexiones TCP activas en el momento del volcado; connscan hace un escaneo más profundo del pool de memoria para recuperar también conexiones ya cerradas.
Captura 11_2 — Sockets: PID 1484 escuchando en puerto 1038
📝Tarea del alumno
¿A qué puertos remotos se conecta explorer.exe? ¿Son puertos inusuales para este proceso?
Busca las IPs encontradas en IPVoid o AbuseIPDB. ¿En cuántas listas negras aparecen?
¿Qué puerto usa explorer.exe como socket a la escucha? ¿Para qué podría servir?
04
// bulk_extractor · wireshark · pcap
Extracción de Tráfico de Red con bulk_extractor
🎯 Objetivo
Extraer el tráfico de red embebido en el volcado de memoria y analizarlo con Wireshark para identificar comunicaciones HTTP, IPs adicionales y rutas de C2.
bulk_extractor es una herramienta que escanea un fichero binario (incluyendo volcados de memoria) buscando artefactos como paquetes de red, emails, URLs, números de tarjeta, etc. Puede reconstruir un PCAP a partir de la RAM:
bulk_extractor — Extracción de PCAP
$ bulk_extractor -o output_dir cridex.vmem # El PCAP se genera en output_dir/packets.pcap
Captura 06 — bulk_extractor en ejecución
Una vez generado el PCAP, lo abrimos en Wireshark para analizarlo visualmente:
Captura 07 — Wireshark: protocolos identificados en el tráfico
Captura 08 — Wireshark: IPs activas en la captura
🔍Nuevas IPs descubiertas
El tráfico capturado revela IPs adicionales no visibles desde Volatility directamente.
211.44.250.173 — nueva IP sospechosa
190.81.107.70 — segunda IP adicional
Captura 09 — Reputación 211.44.250.173
Captura 10 — Reputación 190.81.107.70
🔍Resultado reputación IPs adicionales
Ambas IPs aparecen en listas negras. La 211.44.250.173 aparece en tres listas negras.
Filtrando el tráfico de Wireshark por la IP más relevante, descubrimos actividad HTTP específica:
Captura 11 — HTTP POST hacia la ruta de C2
🚨Ruta de C2 identificada
Se detecta un HTTP POST hacia la IP 41.168.5.140.
La ruta del POST es: /zb/v_01_a/in/ — ruta característica del malware Cridex.
Las conexiones se realizan al puerto 1038.
📝Tarea del alumno
Abre el PCAP en Wireshark y usa el filtro http.request.method == "POST". ¿Qué encuentras?
¿Qué protocolo predomina en el tráfico? ¿Tiene sentido para un troyano bancario?
Verifica las cuatro IPs encontradas en IPVoid. ¿Cuál tiene peor reputación?
¿Qué información podría estar enviando el malware en el POST a /zb/v_01_a/in/?
05
// volatility · malfind · virustotal
Detección de Código Inyectado — malfind
🎯 Objetivo
Cridex utiliza Code Injection para ocultarse dentro de procesos legítimos. El plugin malfind detecta regiones de memoria con permisos RWX (lectura, escritura, ejecución) que suelen indicar código inyectado.
La técnica de inyección de código consiste en escribir código malicioso en el espacio de memoria de un proceso legítimo (como explorer.exe) para que se ejecute bajo su identidad y evite detección. La señal de alarma es encontrar páginas de memoria con permisos PAGE_EXECUTE_READWRITE — algo anormal en condiciones normales.
Volatility 2
$ vol.py -f cridex.vmem --profile=WinXPSP3x86 malfind $ vol.py -f cridex.vmem --profile=WinXPSP3x86 malfind -D dump/ # -D dump/ extrae las regiones sospechosas a disco
Volatility 3
PS> vol.exe -f cridex.vmem windows.malfind
Captura 12 — malfind: procesos afectados
Captura 13 — malfind: hex dump con cabecera MZ
🚨Procesos con código inyectado
csrss.exe — proceso del subsistema de cliente/servidor de Windows
winlogon.exe — proceso de inicio de sesión de Windows
explorer.exe (PID 1484) — el escritorio de Windows
reader_sl.exe (PID 1640) — el proceso sospechoso que ya conocemos
En el hex dump, fíjate en los primeros bytes: 4D 5A (caracteres MZ) es la firma de un ejecutable PE (Portable Executable). Haber encontrado un ejecutable completo oculto dentro de la memoria de otro proceso confirma la inyección.
Ahora extraemos los volcados de malfind a disco y los analizamos con file para identificar cuáles son ejecutables:
Captura 14 — Comando file sobre los volcados
Captura 15 — MD5 de los ejecutables extraídos
Subimos los hashes MD5 a VirusTotal para confirmar su naturaleza maliciosa:
Captura 16 — VirusTotal: volcado de explorer.exe
Captura 17 — VirusTotal: volcado de reader_sl.exe
🔍Confirmación — Malware identificado
La inmensa mayoría de motores antivirus de VirusTotal identifican ambos ejecutables como malware.
Varios motores los etiquetan específicamente como Cridex.
Procesos infectados confirmados: explorer.exe (PID 1484) y reader_sl.exe (PID 1640).
📝Tarea del alumno
¿Qué significa que una región de memoria tenga permisos PAGE_EXECUTE_READWRITE? ¿Por qué es sospechoso?
¿Qué es la firma MZ (4D 5A)? ¿Qué implica encontrarla al principio de una región inyectada?
Calcula el MD5 de los ficheros extraídos con md5sum y busca los hashes en VirusTotal.
¿Cuántos motores detectan cada fichero? ¿Qué familia de malware identifican?
06
// volatility · handles · mutants · filescan
Análisis de Handles, Mutants y Persistencia
🎯 Objetivo
Los mutexes (objetos de exclusión mutua) son «marcas» que el malware crea para evitar ejecutarse dos veces. Identificar estos mutants nos da indicadores únicos del malware (IOCs). También analizamos cómo se asegura la persistencia.
Empezamos examinando los handles del proceso sospechoso reader_sl.exe:
Volatility 2 — Handles de reader_sl.exe (PID 1640)
Se identifica el Mutant _SHuassist.mtx — otro IOC conocido de Cridex.
Múltiples Mutants con prefijo XM confirman la presencia del mismo malware.
Captura 23 — Eventos relacionados con los Mutants
Persistencia — Mecanismo de arranque
Para asegurar que el malware sobreviva a un reinicio, Cridex utiliza el ejecutable reader_sl.exe como mecanismo de persistencia (probablemente via clave de registro Run):
Captura 24 — Identificación del mecanismo de persistencia
Localizamos el fichero en el sistema de ficheros del volcado con filescan y lo extraemos:
El fichero extraído es reconocido por varios motores como Artemis: un browser hijacker / adware que redirige a páginas maliciosas y descarga componentes adicionales.
Esto encaja con el comportamiento de Cridex: instala un componente secundario como persistencia disfrazado de software legítimo.
📝Tarea del alumno
¿Para qué sirve un mutex en programación? ¿Por qué los usa el malware?
Anota todos los nombres de Mutant encontrados — son IOCs que podrías buscar en otras máquinas comprometidas.
Busca en el registro HKCU\Software\Microsoft\Windows\CurrentVersion\Run (mediante el plugin printkey) si reader_sl.exe está listado.
¿Cuál es la diferencia entre los plugins filescan y dumpfiles? ¿Cuándo usarías cada uno?
07
// volatility · memdump · strings · grep
Volcado de Memoria y Análisis de Strings
🎯 Objetivo
Extraer el espacio de memoria completo de los procesos infectados y buscar cadenas de texto que revelen URLs, IPs, rutas y configuración del malware.
Con memdump extraemos toda la memoria del proceso a un fichero binario. Luego usamos strings para extraer cadenas de texto legibles, y grep para filtrar las más relevantes:
Captura 28 — Strings: primeros resultados de explorer.exe
Captura 29 — Strings: URLs y emails en explorer.exe
🔍Hallazgos en strings de explorer.exe
Se confirma la ruta POST /zb/v_01_a/in/ que vimos en Wireshark.
Se encuentran URLs, direcciones de correo y otras cadenas de interés.
Aparecen rutas locales sospechosas y la IP C2 ya conocida.
Captura 30 — Rutas locales sospechosas
Captura 31 — IP C2 en strings
Usando grep con la carpeta sospechosa encontrada, obtenemos más artefactos:
Captura 32 — grep sobre carpeta sospechosa: nueva IP y cp.php
Captura 33 — grep sobre todas las IPs conocidas
💡 Nota interesante
Si subimos el volcado completo del proceso a VirusTotal, lo detectará como limpio. Esto es porque los volcados memdump incluyen la memoria legítima del proceso mezclada con el código inyectado, diluyendo las firmas. Los fragmentos específicos extraídos por malfind son más concentrados y por eso se detectan.
Captura 34 — Volcado explorer.exe: limpio en VirusTotal
Captura 35 — Volcado reader_sl.exe: limpio en VirusTotal
Sin embargo, el análisis de strings sobre el proceso reader_sl.exe (PID 1640) revela masivamente su naturaleza de adware:
Captura 36 — Strings reader_sl.exe: multitud de URLs
Captura 37 — Más URLs de adware en reader_sl.exe
Captura 38 — IP y ruta C2 confirmadas en reader_sl.exe
Captura 39 — Más referencias a C2 en reader_sl.exe
🔍Hallazgos en strings de reader_sl.exe
Centenares de URLs de dominio diverso confirman el componente adware (Artemis).
La IP 41.168.5.140 y la ruta /zb/v_01_a/in/ aparecen también aquí.
El proceso reader_sl.exe actúa tanto como dropper/backdoor (componente Cridex) como adware (redireccionador de navegador).
Busca con grep referencias a archivos .php. ¿Encuentras cp.php u otros? ¿Para qué podría usarse?
¿Por qué un volcado memdump de un proceso infectado puede ser detectado como «limpio» por VirusTotal mientras que los fragmentos extraídos por malfind sí se detectan?
¿Qué diferencia conceptual hay entre el comportamiento de explorer.exe (Cridex bancario) y reader_sl.exe (Artemis adware)?
08
// volatility · timeliner · mactime
Generación de la Línea Temporal
🎯 Objetivo
Reconstruir la secuencia de eventos de la infección ordenados cronológicamente para entender cuándo y en qué orden ocurrió todo.
El plugin timeliner recopila todas las marcas temporales del volcado (procesos, ficheros, entradas de registro, conexiones...) y las agrega en un único fichero cronológico. El formato de salida es compatible con mactime de The Sleuth Kit:
Captura 40 — timeliner: generación del fichero de línea temporal
Captura 41 — mactime: eventos de reader_sl.exe filtrados
🔍Línea temporal de la infección
mactime permite filtrar por proceso, fichero o extensión para aislar eventos específicos.
Puedes ver exactamente cuándo se creó reader_sl.exe, cuándo fue accedido y cuándo se ejecutó.
Combina esta información con los timestamps de los procesos de pslist para reconstruir el orden de infección.
📝Tarea del alumno
Ejecuta timeliner y busca el evento de creación de reader_sl.exe. ¿Cuándo se creó?
Filtra también por explorer.exe y compara los timestamps. ¿Qué proceso fue primero?
¿Hay algún evento de modificación del registro cerca del momento de infección? Usa grep -i "\\Run\\"
Construye una línea temporal narrativa de la infección con al menos 5 eventos ordenados cronológicamente.
🏁 Resumen del Análisis — Conclusiones
Tras completar los 8 pasos, hemos reconstruido la cadena de infección completa del volcado cridex.vmem:
Fase
Técnica
Herramienta
Hallazgo
Infección
Code Injection
malfind
MZ header en explorer.exe PID 1484
Persistencia
Proceso hijo falso
pstree / filescan
reader_sl.exe PID 1640 hijo de explorer
C2 activo
HTTP POST puerto 8080
connscan + Wireshark
41.168.5.140 → /zb/v_01_a/in/
C2 adicional
Múltiples IPs
bulk_extractor + IPVoid
125.19.103.198 / 211.44.250.173
IOCs Mutex
Anti-doble ejecución
handles
XM00000668 / _SHuassist.mtx
Identificación
Hash + VirusTotal
md5sum + VT
Familia: Cridex / Artemis
Técnica usada por Cridex: El malware se inyectó en el proceso legítimo explorer.exe usando secciones de memoria con permisos RWX. Desde allí creó un proceso hijo falso (reader_sl.exe) para asegurar la persistencia, y mantuvo conexiones HTTP activas con servidores C2 para recibir órdenes y exfiltrar datos bancarios robados.