28 jul 2016

Brosec: Una mochila 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. Brosec 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.

Instalación

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. 


Brosec tiene dos modos de ejecución, se le puede pasar por parámetro las acciones a realizar y 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. Las opciones que tenemos disponibles en Brosec son: Recopilación de información, Linux, Windows, Web y Miscelánea. 

En la parte de recopilación de información nos podemos encontrar la posibilidad de crear código en distintas plataformas para recopilar información de un sistema. En el caso de Linux y 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 Web, podemos generar payloads para SQLi y XXE. En miscelánea, podemos generar shells inversas en diferentes escenarios. El que quizá más me haya llamado la atención es el entorno AWK, el cual es una herramienta potente 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. 


Ejemplo: Creando payloads en Powershell

Si elegimos la opción de plataforma Windows podemos ver diferentes opciones:
System Info
File System
Networking
WMIC
Powershell
Windows Registry

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 pentesting.
 

Para ver un ejemplo, si pulsamos sobre el 5 de Powershell podemos visualizar las opciones que nos ofrecen. Como podemos ver 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.


Como se puede ver a continuación, tenemos un script o código creado. En este caso el código se descargará código en remoto del parámetro URI que le hayamos indicado. Esta funcionalidad es muy interesante, y se pudo comprobar con PSBot el poder que proporciona una Powershell a la hora de evadir AVs 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 con Brosec 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 web y ftp se pueden ver las siguientes imágenes. 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.



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 pentest. A continuación se muestran, como en el apartado Miscelánea, se pueden conseguir diferentes tipos de códigos, en distintos lenguajes, con el objetivo de crear sesiones inversas.


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 es bastante más poderosa. 


En el apartado Web podemos encontrar payloads o instrucciones de ejecución para vulnerabilidades XML y SQL. 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.



No hay comentarios:

Publicar un comentario