Random IRC quote :      <wzzx> se van a pelear <pancake> wzzx: quien? <wzzx> mi polla y tu paladar

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:

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!!

Correo:

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 😛

14 Comentarios para “Inguma is dead, long live Inguma”

  1. Comment por Ruben | 03/22/10 at 11:04 am

    Buff! Vaya currada hamijo!!! lo peta! Habría posibilidad de meterle libemu?

  2. Comment por matalaz | 03/22/10 at 11:06 am

    Está curradísimo Hugo, muy bien!

  3. Comment por wzzx | 03/22/10 at 11:11 am

    Buen trabajo 😀 Hacía tiempo que no se oía hablar de inguma y vienes con una grata sorpresa debajo del brazo 😀

  4. Comment por amian | 03/22/10 at 11:15 am

    ESTA MUY CHIDO, HINJUMA A BENIDO CON UN FLAN DEVAJO DEL VAZO.

  5. Comment por Maktutote | 03/22/10 at 11:27 am

    Pues si que queda chulo si. Una pena que no la presentarais en la Rooted. Felicito de paso a Rubén y Joxean, porque el toque 48bits molo!!!

    Anotar que creo que no he aplaudido más bromas en mi vida XD

    Saludetes!!

  6. Comment por Hugo Teso | 03/22/10 at 11:27 am

    Gracias Ru, la parte de RCE se quedará más o menos así hasta que pancake y joxean avancen con sus herramientas, pero lo de libemu (o similares) te lo pongo en el TODO.

  7. Comment por Dreg | 03/22/10 at 2:59 pm

    Joer, que ganas de ver el src! 🙂

  8. Comment por Rigolox | 03/23/10 at 3:42 am

    Me parece una idea muy interesante y currada. A ver si poco a poco va sufriendo más metamorfosis y luego la podemos probar.

    Se esperara con ganas.

    NaCl u2

  9. Comment por exaprotectbuddy | 03/23/10 at 6:18 am

    Hacía tiempo que no sabía de tí, me alegro de que sigas metido en asuntos interesantes.
    En cuanto a la geolocalización te recomiendo pygeoip, va muy bien para sacar los ISP´s, las coordenadas, etc …

  10. Comment por Hugo Teso | 03/23/10 at 8:34 am

    Gracias por la recomendación exaprotectbuddy, lo probaré a ver si me sirve.

  11. Comment por Iñaki | 03/25/10 at 11:06 am

    Deseoso me hallo de probarlo pues.

  12. Comment por Amián | 03/26/10 at 11:31 am

    Que honda wey, algun impostor ahorita estuvo intentando del suplantarme. ENHONDABUENA HUGO POR EL TRABAJO

  13. Comment por ZuriMan | 04/06/10 at 9:09 am

    Excelente trabajo ! me muero por probarlo ahora mismo!

  14. Comment por Fester | 05/17/10 at 11:28 am

    Muy bueno , la verdad ! Ahora, existe alguna forma de probarlo o son solo capturas ? Es posible que algun dia este codigo vea la luz? o no ? Lo espero con ansias de poder probarlo y jugar un poco con el … si algun dia llega ….

Se han cerrado los comentarios