22 junio 2016

Evolve: una GUI web para Volatility





Una de las primeras tareas que hay que llevar a cabo al atender un incidente de seguridad en un sistema, es adquirir el contenido de la memoria RAM. Para ello, podemos utilizar herramientas como Dumpit o Ram capture. Si utilizamos la suite de herramientas para Windows que vienen en WIN-UFO, dentro de la distribución CAINE, en su formato Live (ya sea USB o CD), además contamos con una de las herramientas favoritas de cualquier analista forense: FTK Imager Lite.

Tan complejo que puede llegar a ser la adquisición de la memoria en Linux, y tan sencillo que se hace con FTK, en entornos Windows. Le damos a un botón y se extrae un dump de la memoria en un fichero.

A partir de ahora, toca trabajo de análisis en laboratorio y a destripar la imagen con una de las mejores herramientas que hay: Volatility.

Para ello, toca pasarle como parámetro a este script hecho en python, la imagen de memoria adquirida, el perfil que indicará el sistema operativo al que pertenece el dump, así como el comando o el script que queramos ejecutar sobre la memoria. 

En esta línea, una ejecución válida sería: "python vol.py pslist -f fichero.mem —profile Win2008R2SP1x64” que nos devolvería la lista de procesos que tenía en ejecución la máquina cuando le copiamos "el cerebro”. Volatility, al estar hecho en Python, permite ser ejecutado en multiplataforma, pero siempre bajo una línea de comandos. Esto está bien, en algunos casos, pero cuando requieres trabajo en grupo, o poder procesar varios scripts sobre una misma imagen, puede ser interesante contar con una interfaz web que permita preprocesar ciertos scripts sobre la imagen adquirida, así como mostrar y almacenar los resultados. 

Aquí es cuando llega, al fin, Evolve.

Su instalación y ejecución no puede ser más sencilla:

git clone https://github.com/JamesHabben/evolve
cd evolve
python setup.py install

Para determinados plugins es necesario disponer de ciertas librerías: 

pip install bottle
pip install yara
pip install distorm3
pip install maxminddb

En el caso de mi instalación, en una distribución CAINE 7, además tuve que ejecutar pip install distorm3 —upgrade

La ejecución de Evolve, necesita varios parámetros. Entre otros, el fichero con el volcado de memoria a analizar, el perfil de Volatility correspondiente a la versión de sistema operativo al que corresponde la memoria analizada, así como el puerto en el que escuchará el servidor web por el que se publicará la información analizada de la memoria.  

 python evolve.py -w 8000 -f /opt/imagen.mem —profile Win2008R2SP1x64 


Si nos conectamos vía web a dicho servicio se nos muestra algo como lo siguiente:



En el panel de la izquierda se puede ver la posibilidad de ejecución de los diferentes plugins, que según se va terminando su ejecución el botón se transforma de run a show. 

La información procesada queda en el mismo directorio donde se encuentra el dump de memoria, en un fichero con formato SQLite, en el que se genera una tabla por cada plugin ejecutado.

sqlite> .tables
AmCache   AtomScan  Auditpol  CmdScan   PSList    PSTree    YaraScan ApiHooks  Atoms  BigPools  Cmdline   PSScan    VerInfo 

Como digo, una herramienta más o incluso una ayuda para hacer más visual el resultado que interpreta una herramienta. Sin embargo, el trabajo real lo tiene que hacer el ojo y mente humanas, que son las que realmente entienden lo que ven.