BoomER - Local Exploiting - BoomerNiX

jueves, 2 de agosto de 2018

BoomER - Local Exploiting

Hoy vengo a presentaros BoomER el proyecto que he desarrollado para el trabajo fin de máster junto a Antonio Marcos y con la idea de Pablo González. Después de la presentación del trabajo en la universidad, comente con algún compañero que ya lo escribiría después del verano, pero bueno por si alguien se aburre y quiere trastear, mejorar y/o agregar cosas, lo dejo aquí ya.

El principal objetivo de este proyecto fue aprender, pasarlo bien y obtener una buena nota >> ¡Todo ello se ha cumplido!

¿Qué es BoomER?

BoomER es un framework de código abierto, desarrollado en Python. La herramienta está centrada en la post-exploitación, con un principal objetivo, la detección y explotación de vulnerabilidades locales, así como la recolección de información de un sistema, como pueden ser las aplicaciones instaladas que tienen.

Características de BoomER

Para ver las características de la herramienta, la mejor idea que se me ocurre es a través de una imagen, que se puede ver abajo:



Diseño de BoomER

Y para continuar y ver el “diseño” a alto nivel, sin detalles, veamos cómo se ha dividido el código:


¿Cómo desarrollar un módulo?

Al terminar las vacaciones o cuando encuentre un hueco, entraré en mayor detalle en este aspecto, pero por darnos una idea:

Tenemos 2 clases para heredar, depende si necesitamos manejar payloads (PayloadModule) o no (Module). Tendremos una funcionalidad run, que hay que implementar si o si, ya que es la encargada de lanzar el módulo. Se contará con funcionalidad para agregar y/o quitar funcionalidad al módulo, tendremos la opción de agregar opciones e información. Un ejemplo de módulo sencillo se deja a continuación:

Comandos disponibles en BoomER

Aunque tú puedes agregar nuevos comandos a tu módulo, actualmente para trastear con la herramienta, dispones de los siguientes:

Global:
  • help [comando]: muestra la ayuda por pantalla, si se le indica un comando, muestra información más detallada y específica.
  • load <módulo>: carga en la herramienta el módulo especificado, si no es posible devuelve un mensaje de error.
  • show <opción>: con este comando podremos listar los módulos existentes (total o por sistema) y los parámetros de los módulos.
  • exit: para salir de la herramienta.
  • sessions: muestra las sesiones abiertas y en segundo plano. (Tiene que ver con la funcionalidad de boomerpreter).
  • interact <nº sesión>: devolvemos al primer plano la sesión especificada, si no existe, se muestra un mensaje. (Tiene que ver con la funcionalidad de boomerpreter).
Con módulo cargado:
  • back: cuando un módulo se encuentra cargado, con este comando lo quitamos de memoria.
  • background: sirve para enviar a segundo plano la sesión que se encuentre activa, y así poder seguir utilizando el resto de funcionalidad de BoomER. (tiene que ver con la funcionalidad de boomerpreter).
  • run: cuando un módulo está cargado en BoomER, este comando lo lanza.
  • check: funcionalidad que comprueba si el sistema es vulnerable a un exploit, no todos los módulos lo tendrán implementado, para esos casos, se mostrará un mensaje.
  • put <parámetro> <valor>: los módulos de BoomER cuentan con opciones configurables, con este comando podemos darles valor.
  • list_payloads: cuando un módulo permite configurar payloads se activará este comando, que ayudará al usuario a ver cuál puede seleccionar.

Módulos disponibles en BoomER

Se pueden apreciar en la siguiente imagen:


La funcionalidad está centrada en explotación local, por lo que la parte de Overflow no tiene ningún exploit remoto, aunque se podría crear, ya que la herramienta nos da esa flexibilidad.

Probando BoomER

Antes de probarlo, a parte de tener Python 3.X, es necesario instalar unas librerías, para ello se puede hacer uso de pip y el archivo .txt de requirements para cada sistema operativo (falta por subir el archivo para mac, que necesita una librería para permitir el autocompletado con el tabulador, es gnureadline). Veamos unas pruebas de concepto, empezando por la ayuda sobre un comando:


La carga de un módulo:


Lanzando el módulo (se acorta la salida):


Ejecutando algún exploit (comentar que la -e era una opción inicial, actualmente hay un parámetro en la herramienta):


Y este exploit nos abre una sesión con usuario root en Metasploit:


Por último, unas capturas del uso en macOS, primero viendo las opciones de un módulo cargado:


Y a continuación la ejecución de ese módulo para elevar privilegios:


Existe mucha funcionalidad, no se va a poner todo aquí, ya que el post se extendería mucho, seguro que más adelante se escribe algo más sobre la herramienta.

Opción del meterpreter

Hemos creado un meterpreter dentro de BoomER, actualmente solo existe el reverse_tcp, para Python, para conseguir un payload que nos abra la conexión, podemos utilizar msfvenom (payload/python/meterpreter/reverse_tcp). El uso de este meterpreter se puede ver a continuación (ya se habló sobre está funcionalidad en el post sobre Boomerpreter):


También se agregó una funcionalidad al meterpreter de Python que nos ofrece Metasploit, se explica cómo se consiguió llegar a esa funcionlidad en el post en elladodelmal (Metasploit: Cómo extender las funcionalidades de meterpreter).

Repositorio

Para terminar, se deja aquí los enlaces al repositorio en GitHub del código creado:

Pues nada, hasta aquí llega el post dedicado a BoomER, quién quiera mejorar el código, arreglar posibles bugs o agregar nueva funcionalidad, es bienvenido. Que se de bien el mes de agosto, que disfrutéis de las vacaciones (a quién le toqué, como a mi =D).

No hay comentarios:

Publicar un comentario