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.
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:
- BoomER: https://github.com/Josue87/BoomER
- BoomER Metasploit (meterpreter Python): https://github.com/Josue87/BoomER-MSF-Meterpreter
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