Thursday, October 20, 2016

Brosec Una mochila de pentester para almacenar payloads y personalizarlos automáticamente

Brosec Una mochila de pentester para almacenar payloads y personalizarlos automáticamente


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 Powershell

Si 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 Fast

En 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 Shells

Generar 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”

Available link for download