Análisis Forense de Volcado de Memoria RAM en Linux con Volatility. Parte II

Una vez hemos realizado la adquisición de la memoria RAM y hemos aplicado todos los pasos del protocolo de adquisición (cadena de custodia, calcular hash del archivo, copia para custodia si procediera…etc). Vamos a realizar el análisis en si mismo, que es lo que realmente quieres ver, ¿a qué si?

El hecho es que tenemos ya la memoria volcada y se la pasamos a la herramienta volatility. Ahora es cuando vamos a descubrir que pasaba en esa máquina… ¡Pues no! Esto no va así señores, además seria demasiado fácil, no se disfrutaría igual.

Yo te explico tranquilo, mira, volatility para su funcionamiento, se basa en perfiles de cada sistema a analizar. Con esos perfiles localiza, en el volcado que hemos obtenido, los diferentes elementos que estructuran la memoria de los sistemas a analizar, y es por  ello que, si no disponemos del perfil correspondiente al origen del volcado, debemos generarlo previamente para poder analizarlo, así de simple.

Es evidente que hay muchas menos versiones de Windows,  que Kernels de Linux, por este motivo, en la versión 2.5 de volatility, que es con la que se va realizar este post, vienen ya preinstalados todos los perfiles de Windows, incluido Windows 10 y no viene ninguna de Linux o de Mac.

Solución: creamos un perfil de la versión de Linux que nos interese, lo importamos a Volatility y a funcionar.

Antes de empezar con el proceso, podéis probar a instalar Volatility en por ejemplo Ubuntu o Debian, ya sabéis “sudo apt-get install volatility” y ya está. Una vez instalado vais a esta dirección: /usr/lib/python2.7/dist-packages/volatility/plugins/overlays/

Ahí vais a ver algo así:

/Users/Diego/Dropbox/overlays.jpg

En esas tres carpetas están los profiles por defecto de las tres plataformas.

Veamos como esta la de Windows…

/Volumes/NO NAME/post/profiles_windows.jpg

Podéis ver las diferentes versiones de profiles de Windows

Ahora vemos la de Linux…

/Users/Diego/Dropbox/plugins_linux.jpg

Solo esta la de Linux Centos que es la que he importado yo para ese análisis, de no ser por ese profile, estaría vacío de ellos. Con estas imágenes espero que hayáis pillado ya la idea.

Una vez puestos en contexto pasemos a las trincheras que es lo que nos gusta.

Primer paso, necesitamos, al igual que con Lime, una máquina igual a la que tenemos que analizar para generar el profile que luego importaremos y usaremos para analizar la memoria volcada extraída. En esa máquina descargaremos e instalaremos dwarfdump esto es fácil ¿verdad que si? Pues no, el motivo es que en otras distros es relativamente fácil hacerlo pero esto es Cent0s y aunque es una gran distro que uso muy a menudo, para según que cosas toca un poco las narices. He realizado esto con otras distros (debían, ubuntu, suse) y da menos problemas, aunque es perfectamente realizable.

Obviamente necesitaremos lo típico (headers, gcc, ncurse, ncurse-devel, en este caso:

yum groupinstall “Development Tools” ). Si usáis la máquina en la que habéis compilado antes Lime, seguro que tendréis ahí todas las dependencias.

Aclarado esto, vamos al lío, descargamos esa librería de:

http://pkgs.fedoraproject.org/repo/pkgs/libdwarf/libdwarf20130207.tar.gz/64b42692e947d5180e162e46c689dfbf/

Despúes la descomprimimos:

/Users/Diego/Desktop/Captura de pantalla 2016-10-07 a las 20.28.41.png

Después toca lo de siempre…

/Users/Diego/Desktop/Captura de pantalla 2016-10-07 a las 20.27.57.png

Entramos dentro de la carpeta descomprimida y :

./configure && make && make install

Una vez compilado entramos en la carpeta dwarfdump y volvemos a compilar…

/Users/Diego/Desktop/Captura de pantalla 2016-10-07 a las 20.27.31.png

Y ya está hecho todo lo necesario para crear el profile, ahora necesitamos instalar volatility en esa máquina para que en conjunción con esa librería nos cree el perfil.

Bajamos volatility…

wget http://downloads.volatilityfoundation.org/releases/2.5/volatility_2.5.linux.standalone.zip

Una vez descomprimida, lo instalamos

/Users/Diego/Desktop/Captura de pantalla 2016-10-07 a las 20.26.32.png

Una vez esta instalado en esa máquina tan solo nos queda ejecutar la siguiente orden:

zip <nombre_del_profile.zip> module.dwarf /boot/System.map –uname –r

¡Y ya esta creado el perfil!

/Users/Diego/Desktop/Captura de pantalla 2016-10-07 a las 20.25.09.png

En este caso se creo un profile con el nada ingenioso nombre “Profile_1.zip” (luego le cambié el nombre por el otro mucho mas pro, tranquilos). Esta imagen es a modo de ejemplo.

Luego lo bajas del server o equipo analizar y te lo llevas a tu maquina de trabajo, donde lo analizas

En este caso, en la máquina de trabajo al ser una distro Ubuntu, la ruta donde se debe importar el archivo profile es:

/usr/lib/python2.7/dist-packages/volatility/plugins/overlays/linux

Por tanto :

Sudo cp Cent0s72.zip /usr/lib/python2.7/dist-packages/volatility/plugins/overlays/Linux

Perfecto ya tenemos el profile, creado, compilado y en su ubicación, ahora, finalmente podemos comenzar al análisis en si.

Comencemos averiguando el tipo de Linux que es:

../../../Volumes/NO%20NAME/post/prime

La orden es: volatility imageinfo –f (ubicación de la ram volcada)

Ahí lo tenemos , perfecto, parece que esto comienza a funcionar, veamos que podemos extraer, para saber las opciones que nos da la herramienta escribimos la siguiente orden:

volatility –info | grep –i linux

Resultado…

../../../Volumes/NO%20NAME/post/opciones

Hay unas cuantas cosillas para mirar ¿verdad?

Abramos una consola dentro la imagen:

../../../Volumes/NO%20NAME/post/linux

Ahí está, expliquemos la instrucción:

  1. -f es la ubicación de la imagen a analizar
  2. -Linux_volshell le indicamos que nos abra una Shell dentro de la imagen
  3. –profile=LinuxCent0s72x64 le indicamos en perfil de Linux que debe usar

Veamos ahora los hilos que tiene esa máquina…

../../../Volumes/NO%20NAME/post/hilos

Resultado:

../../../Volumes/NO%20NAME/post/hilos_l

Ahora veamos el history de los comandos de bash usados en esa máquina analizada:

../../../Volumes/NO%20NAME/post/linu

Y así podríamos seguir mucho tiempo. Pero mi intención no es enseñar todas las posibilidades que tiene esta maravillosa herramienta, tan solo mostrar el camino que debéis seguir. Os animo a que la exploréis porque os aseguro que tiene unas posibilidades enormes, podréis ver conexiones, podréis ver sockets, módulos del kernel cargados…etc.

Un mundo de posibilidades que os ayudarán a realizar un gran trabajo.

Y esto es todo por hoy, no os quiero aburrir mas que ya vale, en la siguiente os enseñare a analizar estas imágenes de la RAM usando una interfaz gráfica. Os anticipo algo con esto…

../../../Volumes/NO%20NAME/post/ev

Hasta la próxima…

¡Ups! Se me olvidaba algo…

Si vais algo justos de tiempo hay una repo en github donde se han creado ya unos cuantos profiles de diferentes sistemas Unix, tanto Mac como Linux que se pueden usar perfectamente.

Captura%20de%20pantalla%202016-10-08%20a%20las%2014.09.32.png

Esta es la url de la descarga:

https://github.com/volatilityfoundation/profiles.git

Estos son algunos de los profiles que tienen:

../../../Volumes/NO%20NAME/post/prof

../../../Volumes/NO%20NAME/post/prof

Selecionamos Centos y seguimos…

../../../Volumes/NO%20NAME/post/prof

Entramos en 64 bits

../../../Volumes/NO%20NAME/post/prof

Yo he hecho pruebas con algunos, no con todos lógicamente y me han dado un resultado perfecto. De modo que si queréis ahorrar tiempo y las versiones os coinciden podéis usar estos tan tranquilamente.

Se me había pasado hasta ahora contar esto, perdonadme, pero mi intención era que aprendáis a hacerlo a mano antes de dar algo que os haga el trabajo a vosotros. Estos profiles están geniales, pero no hay de todos los necesarios, por tanto, una vez sabéis hacerlo a mano, esto os agilizará el trabajo y os permitirá avanzar mas rápido.

Ahora si, un saludo…

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *