VolGUI: Interfaz gráfica de usuario para Volatility

Volatility es una herramienta software que permite hacer un estudio del contenido de la memoria RAM. Está formada por un conjunto de utilidades de código abierto implementadas en el lenguaje de programación Python con licencia GNU General Public License versión 2 permitiendo, de esta forma, leer su código fuente, aprender de él y ampliarlo. Es una herramienta de análisis muy completa y muy usada en el mundo de la informática forense, pero ésta también presenta una serie de “inconvenientes:

  • Para funcionar necesita una interfaz de línea de comandos por lo que su funcionamiento se vuelve menos intuitivo para el usuario ya que el analista ha de memorizar o consultar los comandos cada vez que quiera ejecutar sus funciones, y ha de escribirlas correctamente puesto que de lo contrario fallarán.
  • Volatility sólo muestra los resultados por pantalla, y estos no son almacenados de ninguna forma lo que presenta una serie de desventajas e inconvenientes. Por ejemplo, cada vez que el analista forense ejecuta una instrucción, se vuelve a procesar el resultado y si éste es muy complejo, provoca un mayor tiempo de espera para obtenerlo. Del mismo modo provoca que las búsquedas en los resultados obtenidos puedan ser complejas.

Para solventar los inconvenientes que presenta Volatility como Trabajo Final de Grado decidí diseñar VolGUI, una interfaz gráfica de usuario para Volatility basada en el proyecto open source VolUtility, que posee las siguientes características:

  1. Interfaz usable con un diseño centrado en el usuario, fácil de aprender, flexible y robusta.
  2. Programa que permite almacenar los resultados en una base de datos para sus posteriores análisis.
  3. Aplicación que proporciona un análisis de resultados inicial de algunos comandos de Volatility para ayudar al analista a localizar de forma más rápida la presencia de software malicioso.

Arquitectura y Tecnología de VolGUI

La interfaz VolGUI está basada en el modelo de aplicación distribuida Cliente-Servidor, donde será el servidor quien ejecutará Volatility y el cliente quien recibirá los resultados de la ejecución de los comandos y solicite al servidor nuevos resultados.

1modelo-clienteservidor

El software de VolGUI utiliza Django y por ello está desarrollado en el modelo de tres capas. La ventaja de este modelo es la separación lógica de sus capas, por lo que si hay que realizar algún cambio, éste sólo afectará a la capa correspondiente sin tener que modificar el resto.

2modelo-de-tres-capas

Las capas que representa este modelo en relación con VolGUI son:

  • Capa de presentación: es la capa que presenta la información al usuario y que permite la comunicación entre el sistema y el usuario, a través de la interfaz. En VolGUI, esta capa reside en los ordenadores de los clientes que han de tener un navegador web para poder visualizar correctamente la interfaz. El navegador web, utilizando HTML, CSS y JavaScript, es quien enviará la información a la capa de negocio y quien la recibirá de ésta.
  • Capa de negocio: es la capa que contiene los programas Django y Volatility y que reside en el servidor. Esta capa se comunica con la capa de datos y con la capa de presentación.
  • Capa de datos: es donde está almacenada la información. La capa de negocio se comunica con la capa de datos para solicitarle al gestor de base de datos MongoDB que almacene o recupere datos de él. En VolGUI esta capa reside en el mismo servidor que la capa de negocio, aunque se pude configurar para que resida en un servidor distinto.

La aplicación VolGUI se compone de una serie de archivos relacionados con el modelo de tres capas y con el modelo Cliente-Servidor. En la siguiente ilustración se muestra la arquitectura de VolGUI relacionando los archivos más destacados que componen su código fuente con el modelo Cliente-Servidor y con el modelo de tres capas.

3arquitectura-volgui

Interfaz VolGUI

La interfaz VolGUI está dividida principalmente en tres páginas, cuyas características son:

Página Inicial: esta es la primera página que se muestra cuando se inicia VolGUI. Tras arrancar Django su función principal es la de mostrar una guía rápida para facilitar el aprendizaje de la interfaz. En la siguiente ilustración se puede ver una captura de esta página.

4pagina-inicial

Página Session List: la principal función de esta página es mostrar un listado de las sesiones de análisis creadas, donde cada sesión está relacionada con un archivo de imagen de volcado de memoria RAM. La siguiente ilustración nos muestra esta página con 14 sesiones creadas a modo de ejemplo.

5-session-list-volgui

Página Session: su función principal es ver y analizar el contenido del archivo de volcado de la memoria RAM asociado a la sesión creada previamente. El cuerpo de la página está compuesto por dos paneles: Command Output, el cual contiene el resultado de la salida de los comandos de Volatility que se han ejecutado y almacenado en la base de datos; y Analysis Output, el cual permite ver el análisis de los resultados de algunos de los comandos de Volatility. En la ilustración que viene a continuación se muestra la página Session con los paneles Command Output y Analysis Output desplegados.

6paginasession-de-volgui

La diferencia principal con el resto de interfaces existentes es que VolGUI es capaz de analizar los resultados de algunos de los comandos de Volatility mostrándolos en el panel Analysis Output. La ventaja de ofrecer un análisis de resultados es que permite al analista forense ahorrar una gran cantidad de tiempo en encontrar evidencias digitales, ya que señala en los resultados los datos que son sospechosos por cumplir ciertas características. Los comandos de Volatility que se han analizado son: Atomscan, Callback, Connections, Connscan, Consoles, Cmdscan, Deskscan, Dlllist, Envars, Getsids, Handles, Iehistory, Ldrmodules, Netscan, Objtypescan, Privs, Psscan, Pslist, Psxview, Shimcache, Sockets, Sockscan, Svcscan, Symlinkscan y Timers. A continuación se pueden ver capturas de pantalla del análisis de algunos comandos.

7captura-privs

8captura-pslist

Toda esta información y más la tenéis en la memoria de mi TFG en el siguiente enlace: https://riunet.upv.es/handle/10251/70831

¿Quieres contribuir al proyecto? ¡Fantástico!

Si quieres contribuir a continuar con este proyecto, te animamos a ello. Cualquier idea de mejora es bien recibida.
Toda la información necesaria para contribuir la tenéis en la memoria del proyecto y además su código fuente (open source) lo tienes en el siguiente enlace: https://github.com/SecurityArtWork/VolGUI

Estas son algunas tareas que quedan pendientes:

  • Redactar la documentación para desarrolladores.
  • Solucionar los problemas que se han detectado en la fase de pruebas.
  • Ampliar la seguridad de la aplicación permitiendo que cada usuario tenga nombre y contraseña y realizar un análisis de vulnerabilidades software que permita evitar posibles ataques a la interfaz.
  • Permitir al usuario que pueda añadir y quitar más paneles Command Output y Analysis Output para que pueda visualizar al mismo tiempo más cantidad de resultados de los comandos y de los analizadores.
  • Incluir en la aplicación más comandos de Volatility y que se pueda introducir parámetros adicionales.
  • Aumentar la eficiencia de la aplicación.
  • Convertir aquellos comandos que su formato de salida es texto en tablas.
  • Añadir comandos de Volatility y analizadores para Linux y MacOS.

Agradecimientos

Por último, me gustaría de nuevo dar las gracias:

  • A la escuela de ciberseguridad donde se desarrolló el proyecto: ENIGMA: S2 UNIVERSITY. http://s2grupo.es/s2grupo/enigma-s2-university/
  • A los tutores del proyecto: Francisco José Abad Cerda, Jaume Martín Claramonte, José Miguel Holguin Aparicio.
  • Y al autor de VolUtility que inspiró VolGUI, Kevthehermit.