Inicio / Blog / In memoria veritas

In memoria veritas

Publicado el 12/05/2016, por Miguel Herrero (INCIBE)
In memoria

 

Si Plinio el Viejo hubiera vivido en nuestra época y se hubiera dedicado al análisis de malware, seguro que su proverbio habría sido más parecido al título de este post. A medida que el malware evoluciona, las técnicas que utiliza para ocultarse dentro del sistema operativo van siendo cada vez más sofisticadas. Pueden esconderse en lo más profundo del disco duro, permanecer a simple vista confiando en que no se les descubra, o disfrazarse, pero, al final del día, un malware necesita ejecutarse.

Por tanto, tarde o temprano, deberá abandonar la "seguridad" ofrecida por el disco duro y sus cientos de miles de archivos y salir al campo abierto que es la memoria RAM, el lugar donde habitan los procesos que se están ejecutando en ese momento en nuestros equipos.

Cazarlos en la RAM es en lo que se confía cuando realizamos análisis dinámicos de malware, ahí podemos ver (si el malware nos deja y no utiliza técnicas de evasión avanzadas) cómo y con qué otros procesos y archivos se relaciona el malware. Es verdad que salir de caza por la RAM no es tarea simple, pero si estamos bien equipados, las herramientas de nuestro arsenal nos echarán una mano para no tener que confiar únicamente en la intuición y la suerte.

Lo primero que debes de hacer, si vas a buscar malware en memoria, es obtener una copia de lo que está en la RAM del equipo en ese momento, de forma que obtengamos una copia desempaquetada del mismo, si es posible. Si el ordenador está funcionando, hay muchas herramientas que podemos utilizar para hacer el volcado de memoria. Una opción es Dumpit de MoonSols, la cual ejecutada con un usuario que tenga permisos administrativos en un pendrive de mayor capacidad que la RAM del ordenador permite obtener una imagen de la RAM sobre la que trabajar después. Este proceso se encuentra explicado con más detalle en nuestra Guía de toma de evidencias en entornos Windows, donde además podréis encontrar otras herramientas utilizadas habitualmente para llevarlo a cabo.

captura_dumpit

Si trabajamos con los hipervisores más habituales, bastará con hacerse con los archivos .vmem de VMware(que contienen un volcado completo de la RAM), los .sav de VirtualBox (con un volcado parcial de la RAM), los .mem de Parallels o los .bin de Hyper-V a fin de poder hacer el análisis.

Una vez obtenido el volcado de la memoria, utilizaremos otras herramientas para buscar el rastro del malware. Quizá el primer paso podría consistir en analizar la captura utilizando Redline de Mandiant. Esta herramienta con un interfaz gráfico realiza un análisis automático que, si bien puede no ser suficiente, nos servirá para ponernos sobre la pista.

Pero la reina de las herramientas para el análisis de memoria tiene un nombre: Volatility. Esta herramienta de línea de comandos es básica para cualquiera que haga análisis dinámico. Multitud de plugins y de documentación hacen de Volatility un entorno muy completo y verdaderamente potente. Está centrado en máquinas Windows, pero también soporta Linux y Mac.

Para ilustrar el resto del artículo, se ha descargado un volcado de memoria de una máquina infectada por Zeus, el famoso troyano bancario. Diréis que es trampa porque ya conocemos el malware que estamos buscando. Tenéis razón, pero nos tomamos la licencia. Además se utilizará la versión 2.4 standalone de Volatility, que no requiere de la instalación de Python. El resto de versiones de Volatility funcionan de manera similar.

Lo primero que debemos hacer es ver, si no lo sabemos ya, de qué tipo de máquina se extrajo la memoria. Para ello Volatility proporciona el plugin imageinfo.

CMD

Del resultado de este plugin obtenemos algunos campos importantes. El primero, el Profile, que será necesario como parámetro de entrada, a través de la opción --profile para otros plugins que utilizaremos. Otro resultado importante de este comando es el valor de KDBG, una estructura mantenida por el kernel de Windows para depuración. Contiene una lista de los procesos en ejecución y los módulos del kernel cargados. Su valor será utilizado por otros plugins utilizan para encontrar estas listas y analizarlas. Si necesitáis más información sobre el KDGB, el plugin kdgbscan os la proporcionará, siendo necesario ejecutarlo si el perfil sugerido por imageinfo no proporciona resultados en otros plugins como pslist.

Precisamente pslist es el siguiente comando a ejecutar. Proporciona una lista de procesos en ejecución del sistema. Hay malware que se puede encontrar directamente así, camuflado entre otros procesos del sistema con nombres parecidos (algunos utilizan el nombre scvhost para mezclarse con los procesos legítimos svchost).

svchost

Nada raro a simple vista. Sigamos buscando… el plugin pstree muestra los mismos procesos expresándolo en árbol. Esto es útil para identificar procesos que no se arrancan como deberían arrancarse.

CMD svchost

Tampoco se ve nada preocupante. Echemos un vistazo a las conexiones del equipo a través del plugin connscan.

plugin connscan

Aquí hay algo interesante. El proceso 856 (si lo buscáis en la captura pslist veréis que es un svchost) ha realizado conexiones salientes. Svchost es un proceso que carga servicios definidos en el arranque de Windows, por lo que quizá esa conexión no sea legítima. Una búsqueda en internet de esa dirección y se la relaciona directamente con un servidor C&C de Zeus, el troyano bancario. Lógicamente, la captura de memoria es antigua y la dirección IP ya habrá sido reasignada, pero por lo menos nos pone tras la pista.

193.104.41.75

Para confirmar nuestras sospechas vamos a buscar el mutex característico de Zeus, que suele tener como nombre _AVIRA_ seguido de un número, tradicionalmente 2101, 2110, 2108, 2109 o 21099. Para encontrar este mutex, usaremos el plugin handles o mutantscan.

handles

mutantscan

El análisis de memoria puede ser un elemento clave de la gestión de incidentes a la hora de determinar el origen y el tipo de infección. Una vez realizada esta identificación, es posible obtener el ejecutable que originó la infección a fin de que los expertos en ingeniería inversa destripen dicho malware y, de esa forma, seamos capaces de generar los IOC necesarios para evitar futuras infecciones.