Inguma is dead, long live Inguma
Nota: En un principio este artículo estaba escrito pensando en publicarlo un par de días antes de la RootedCon, pero un accidente inesperado me dejó sin poder asistir y me ha obligado a retrasar su publicación. Tenedlo en cuenta mientras lo leáis.
Aprovechando la reciente creación de nuestra página de herramientas, la próxima celebración de la primera edición de la RootedCon y que el Daman Ganga pasa por Silvassa voy a presentar un pequeño proyecto en el que he estado trabajando. El objetivo es que, bien por el blog, correo o twitter o en persona en la rooted, me deis vuestras opiniones, consejos, etc.
El proyecto en sí no es nuevo, fue creado por nuestro hamijo Joxean a principios del 2007, se llama Inguma y consiste en un framework escrito en Python para hacer tests de intrusión y buscar vulnerabilidades. Si alguno de vosotros visita la página le parecerá que el proyecto está muerto, pero sólo estaba dormido. Aparte de la propia web del proyecto, os dejo unos enlaces que hablan de Inguma para que os hagáis una idea de que va:
- Inguma – Penetration testing toolkit
- Inguma. Free Oracle Penetration Toolkit from Joxean Koret
- Running Inguma PL/SQL Fuzzer against 10.2.0.3 with October 2007 CPU
Durante mi último período de «vacaciones forzadas» aproveché para poner a prueba una idea que me rondaba la cabeza desde hacía tiempo, así que intenté crear una interfaz gráfica para Inguma (también programada en Gimp Python) que diese forma a esa idea: «todo en dicha interfaz ha de girar alrededor de los datos, no de las herramientas o los módulos». Se supone que de esta forma el usuario puede centrarse en los resultados, los objetivos, los datos, etc… en resumen, en el «Qué» en vez del «Cómo». Bonito eh?
Desde entonces ese pequeño proyecto privado ha ido creciendo poco a poco y hoy quiero mostraros por encima como está para que me deis vuestras opiniones. Así pues, vamos a lo que nos atañe; señoras y señores, les presento la nueva pantalla principal de Inguma:
En esta primera captura podemos ver una de las pantallas principales de Inguma, la que nos permite llevar a cabo la mayor parte del trabajo de red. Fijaos que prácticamente no hay señal de los módulos de Inguma. La barra superior nos permite Abrir, Guardar, Editar, mostrar/ocultar datos o modificar las preferencias; salvo esto tan sólo un par de botones dedicados a funcionalidades más «independientes» como el sniffer, el servidor web para «phishing» (o lo que surja) o el proxy TCP.
Por otro lado tenemos las dos vistas de los datos recopilados: la visual y la textual. La vista con el gráfico es la que centra la mayor parte del trabajo mediante el uso de menús contextuales que varían en función del nodo o el vértice seleccionado. El contenido de esta vista varía en función del tipo de datos y el nivel de detalle pero siempre bajo la misma premisa: representación visual y menús contextuales.
La vista con los datos en modo texto nos permite estudiar los datos de una forma más normal; que no es tan fácil visualizar todo tipos de datos y relaciones así como así! Por último tenemos una zona donde aparecen los diferentes mensajes de salida de la herramienta. Esta zona y la de datos en texto se pueden ocultar o redimensionar al gusto de sus señorías.
Si seguimos las pestañas de la parte izquierda nos encontramos con la siguiente pantalla, la de terminales.
Como Inguma no pretende ser capaz de hacer de todo y no todos los módulos tienen un equivalente en la interfaz gráfica (todavía), en esta página se agrupan todos los terminales que se van abriendo durante el trabajo; tanto los que abrimos nosotros como los que abren algunas herramientas de Inguma como el sniffer o scapy.
Una de las premisas que me marqué al crear esta interfaz fue que no quería perder toda la potencia de herramientas como scapy (y la linea de comandos en general) debajo de capas y capas de abstracción, así que me las he apañado para que los paquetes enviados/recibidos por todos los módulos de Inguma que usen scapy se queden guardados para que luego se puedan examinar en un terminal usando scapy.
La siguiente pestaña (es posible que cambie el orden) es la pestaña que agrupa las herramientas de ingeniería inversa de Inguma; a saber: un desensamblador (OpenDis, aunque seguramente acabe siendo Pyew o Radare), un depurador (sin pasarme de listo, que es el vtrace de kenshoto) y en un futuro el fuzzer Krash). Me temo que esta es la parte que más verde está de la interfaz.
Por último la pestaña de Exploits es la que nos permite gestionar (que no usar) los diferentes exploits de los que dispone Inguma: los propios, los de exploit-db y, en breve, los de metasploit.
Inguma incluye un simple editor que permite crear/modificar módulos para la propia herramienta o estudiar/modificar los exploits disponibles, pero el lanzamiento de exploits, como todo en esta herramienta, se hace desde los menús contextuales de la vista gráfica:
La parte de Metasploit me temo que está por llegar así que no hay capturas; aún así visto por el lado bueno, tenéis más margen para imaginar como os gustaría que fuese 😉 Por ahora me limito a lanzar un terminal con Metasploit y con los datos ya especificados cada vez que se selecciona la opción en un nodo:
Una de las bases de Inguma es que por defecto tiene que ser auto-suficiente en lo que sea capaz de hacer pero también dar la opción de usar herramientas más especializadas y, no nos engañemos, mejores en otras tareas. Ejemplos de esto son el mismo Metasploit, Nmap o el Nessus.
A parte de lo visto también tengo otras pruebas de concepto en diferentes estados de desarrollo, por ejemplo:
- Una nueva categoría de módulos centrada en Explotación Táctica.
- Geolocalización.
- Interfaz tipo VisualSploit para pyshellcodelib.
- Desde que comencé con esto me ha encantado la idea de poder hacer un MitM arrastrando un vértice hacia el nodo de localhost. Alguna idea más de este tipo?
- Informes, esta parte la tengo muy, muy verde; se agradecerían consejos para ver como transformar toda esa información en bonitos informes.
- Nuevos gráficos para otros tipos de datos/relaciones. También estoy buscando un diseño para los grafos más… bonito.
Pues me parece que como presentación del proyecto con esto ya tenemos bastante, no? Ahora ya todo es esperar vuestras opiniones y consejos. A parte de los comentarios, también podéis usar el correo o mi twitter donde iré poniendo las novedades del proyecto.
!!GRASIAS DE HANTEBRASO HAMIJOS!!
Una mala noticia: la descarga. Me temo que hasta que no me recupere del accidente no creo que pueda subir el código. En cuanto lo haga avisaré pero por el momento sólo podremos verlo en capturas; sí, yo incluido 😛