Brosec es una herramienta que permite utilizar y generar diferentes payloads en diferentes ambientes o escenarios. Es decir, cuando estamos en plena auditoria o pentesting podemos necesitar código ejecutable en distintas plataformas.
Brosec reúne esos códigos o
scripts necesarios para poder explotar debilidades y vulnerabilidades. Está escrito en
Nodejs y permite generar y configurar
shells inversas en lenguajes como Python,
Perl, Powershell, etcétera. Pero sin dejar de lado algunas otros
payloads para web o, incluso, exfiltration data como pudimos ver en el pasado con DET.
|
Figura 1: Brosec: Una mochila de pentester para almacenar payloads y personalizarlos automáticamente |
Brosec puede ser descargado desde su Github. Una vez descargado con
git clone, necesita instalar una serie de dependencias para poder ser ejecutado correctamente. En primer lugar debemos ejecutar
npm config set registry http://registry.npmjs.org. Posteriormente, se debe ejecutar
npm install g n. A posteriori,
n latest. Para finalizar
npm install y tendremos disponible la consola de
Brosec.
|
Figura 2: Proceso de instalación de Brosec |
Brosec tiene dos modos de ejecución. Con el primero se le pueden pasar por parámetro las acciones a realizar. Con el segundo, se puede ejecutar sin más el binario y acceder a un menú dónde se nos indican diferentes acciones, tal y como se puede visualizar en la imagen siguiente. Las opciones que tenemos disponibles en
Brosec son:
|
Figura 3: Menú de opciones de Brosec |
En la parte de
(1) Information Gathering nos podemos encontrar la posibilidad de crear código en distintas plataformas para recopilar información de un sistema. En el caso de
(2) Linux y
(3)Windows tenemos la posibilidad de crear código Powershell, Python,
WMI, etcétera, con el fin de ejecutar y obtener beneficio en la máquina. En el caso del apartado
(4)Web, podemos generar
payloads para SQLi y XXE. En
(5) Miscelánea, podemos generar
shells inversas en diferentes escenarios. El que quizá más me haya llamado la atención es haga uso del popular entorno
AWK, el cual es una herramienta potente para el exploiting de sistemas GNU/Linux.
Brosec tiene un apartado de configuración, al cual se puede acceder ejecutando config sobre la línea de comandos. Para poder configurar parámetros como
LHOST, LPORT, RHOST, RPORT, PATH, USER se debe indicar
set [parámetro] [valor]. Estos parámetros se utilizarán cuando
Brosec genere
Pyaloads que los necesiten.
|
Figura 4: Configuración de parámetros en Brosec para los payloads |
Ejemplo: Creando payloads en PowershellSi elegimos la opción de plataforma
Windows podemos ver diferentes opciones. Cada categoría genera acciones interesantes que se pueden ejecutar en esos ámbitos de
Windows. Por ejemplo, si pulsamos sobre
System Info podremos generar instrucciones o comandos útiles para obtener información en un sistema
Windows. Esto también nos puede servir de biblioteca en un
pentest. Hay que tener en cuenta que
Brosec se encuentra en la versión
0.0.1, por lo que el proyecto está comenzando, pero ya dispone de una gran serie de acciones que se pueden generar y que pueden ayudar a un
pentester en un proceso de ethical hacking.
|
Figura 5: Opciones del menú Windows en Brosec |
Para ver un ejemplo, si pulsamos sobre el
(5) de
Powershell podemos visualizar las opciones que nos ofrecen. Como podemos ver en la imagen siguiente, tenemos el código que debemos ejecutar en una
Powershell, o lo que puede ser mejor, en un
payload que ejecuta una
Powershell, en Metasploit tenemos alguno. Las opciones que nos proporcionan pueden ser interesantes si queremos descargar algún
script o funcionalidad concreta y no podemos meterla en el equipo de otra manera.
|
Figura 6: Código disponible para configurar el payload con Brosec |
Como se puede ver a continuación, tenemos un
script creado. En este caso el
script resultante se descargará código en remoto del parámetro
URI que le hayamos indicado.
|
Figura 7: Payload generado con Brosec |
Esta funcionalidad es muy interesante, y se pudo comprobar con la
P.o.C. de PSBot, el poder que proporciona una
Powershell a la hora de evadir firmas de soluciones
antimalware y la posibilidad de ejecutar código de forma dinámica.
Ejemplo: Creando un HTTP Simple y FTP FastEn algunas ocasiones es necesario montar un servidor
HTTP y un
FTP. En el lenguaje
Python se dispone de
SimpleHTTP y en
Brosec se proporciona la forma de montar un servidor web de forma, casi, aún más sencilla. Para ver la facilidad de crear o disponer un servidor
HTTP y
FTP se pueden ver las siguientes imágenes.
|
Figura 8: Configurando un servidor HTTP con la aplicación bros |
Como se puede apreciar, se invoca la aplicación
bros y se pasa como parámetros
http o
ftp. En el caso del
ftp se puede utilizar para la exilftración de datos en una organización.
|
Figura 9: Configuracndo un servidor FTP con bros |
Ejemplo: Reverse ShellsGenerar código de shells inversas puede ser muy útil, por ejemplo para exiltrar datos o para proporcionar el control remoto de una máquina fuera de los dominios de la organización durante la realización del
pentesting. A continuación se muestran, como en el apartado
(5) Miscelánea, se pueden conseguir diferentes tipos de códigos, en distintos lenguajes, con el objetivo de crear sesiones inversas.
|
Figura 10: Reverse shells disponibles |
Aparte de las shells inversas, podemos ver el código que se puede obtener para exfiltrar datos. Se utiliza
Python, principalmente. En algunos casos la herramienta genera instrucciones poco reales o poco usables. Si observamos en el caso
(3) para descargar o subir un archivo vía
SCP podría ser detectado por cualquier sistema de protección. Por otro lado, el uso de DET frente a
Brosec como herramienta de exfiltración de datos no tiene ningún color.
DET está mucho más orientada a no ser detectada.
|
Figura 11: Opciones de Exfiltración en Brosec |
En el apartado
(4) Web podemos encontrar
payloads o instrucciones de ejecución para vulnerabilidades
XML y SQLi. No muy extensa esta parte por ahora.
|
Figura 12: Opciones de explotación de vulnerabilidades web |
Como se puede ver
Brosec aporta cierto conocimiento y comandos e instrucciones que pueden ser útiles en un momento dado. El objetivo de la herramienta es personalizar los parámetros en los casos necesarios y aportar el conocimiento en un momento dato que sea necesario.
Autor: Pablo González Pérez (@pablogonzalezpe)Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking" y Pentesting con Powershell