
Herramienta de análisis de código estático basada en Elasticsearch

Bughound es una herramienta de análisis estático de código abierto que analiza tu código y envía los resultados a Elasticsearch y Kibana para obtener información útil sobre las posibles vulnerabilidades en tu código.
Bughound tiene su propia imagen Docker de Elasticsearch y Kibana que está preconfigurada con paneles para darte una fuerte visualización de los hallazgos.
Puedes detectar varios tipos de vulnerabilidades como:
Bughound puede analizar código PHP y JAVA por ahora, y contiene un grupo de funciones inseguras para estos lenguajes.
Me aseguraré de agregar cada vez más cobertura de funciones/lenguajes con el tiempo, pero por ahora el enfoque principal es la estabilidad del proyecto en sí.
Ten en cuenta que los resultados de Bughound no son 100% precisos, está diseñado para ayudarte a identificar posibles debilidades durante tu análisis para investigar.
En primer lugar, Bughound creará una lista de todos los archivos dentro de tu proyecto basándose en la extensión de los archivos que deseas auditar, luego leerá cada archivo e intentará encontrar cualquier función insegura predefinida para el lenguaje de tu proyecto.
La fase de análisis depende de expresiones regulares preconfiguradas y algunas coincidencias de texto personalizadas para detectar las posibles vulnerabilidades, así que nuevamente, necesitas realizar el análisis manual para verificar si estos hallazgos son explotables.
Finalmente, enviará los resultados a la imagen Docker de Bughound que tiene un Elasticsearch y Kibana preconfigurados que contienen los paneles personalizados para tus hallazgos.
Los paneles te darán detalles sobre los hallazgos como:
Además, usando Kibana, podrás ver el fragmento de código potencialmente vulnerable para comenzar tu fase de análisis y rastreo para verificar si es explotable o no.
Por supuesto, puedes usar tu propio stack ELK si lo deseas, y Bughound hará la configuración inicial por ti, pero en ese caso no tendrás los paneles preconfigurados.
Puedes instalar todos los requisitos para ejecutar el código de Bughound usando el siguiente comando:
pip3 install -r requirements.txt
Eso asegurará que todos los requisitos estén instalados para el código.
Además, necesitas instalar Docker para ejecutar la imagen de Bughound, ¡más sobre esto en la siguiente sección!
Si deseas usar tus propias instancias de Elasticsearch y Kibana, omite el paso de instalación de Docker
Asegúrate de obtener la última versión de Bughound usando el siguiente comando:
git clone https://github.com/mhaskar/Bughound
Y después de instalar los requisitos en el paso anterior, puedes ejecutar Bughound usando el siguiente comando:
./bughound.py
Obtendrás la pantalla principal de Bughound.
┌─[askar@hackbook]─[/opt/bughound]
└──╼ $./bughound.py
.______ __ __ _______ __ __ ______ __ __ .__ __. _______
| _ \ | | | | / _____|| | | | / __ \ | | | | | \ | | | \
| |_) | | | | | | | __ | |__| | | | | | | | | | | \| | | .--. |
| _ < | | | | | | |_ | | __ | | | | | | | | | | . ` | | | | |
| |_) | | `--' | | |__| | | | | | | `--' | | `--' | | |\ | | '--' |
|______/ \______/ \______| |__| |__| \______/ \______/ |__| \__| |_______/
\ /
oVo
\___XXX___/
__XXXXX__
/__XXXXX__\
/ XXX \
V V1.0 Beta
[+] Example: ./bughound3.py --path vulnerable_code/ --language php --extension .php --name testproject
usage: bughound.py [-h] [--path PATH] [--git GIT] --language LANGUAGE
--extension EXTENSION --name NAME [--verbose [VERBOSE]]
bughound.py: error: argument --language is required
┌─[✗]─[askar@hackbook]─[/opt/bughound]
└──╼ $
Para instalar la imagen Docker de Bughound, simplemente puedes hacer lo siguiente:
docker pull bughound/bughound
Y eso descargará la última versión de la imagen y la guardará en tu máquina.
Una vez que hayamos descargado la imagen, podemos ejecutarla usando el siguiente comando:
docker run --name bughound -p5601:5601 -p 9200:9200 bughound/bughound
Eso ejecutará la imagen en un nuevo contenedor llamado bughound y expondrá los puertos que necesita Bughound para comunicar Elasticsearch y Kibana con tu host.
Puede que necesites aumentar la memoria virtual máxima para usar la imagen, así que asegúrate de ejecutar este comando:
sysctl -w vm.max_map_count=262144
¡Después de hacer estas dos cosas, ya estás listo para usar Bughound!
Para iniciar el proceso de análisis de tu código, debes usar el archivo Bughound.py que tiene algunas opciones; para ver estas opciones mediante el banner de ayuda, puedes usar el siguiente comando:
┌─[✗]─[askar@hackbook]─[/opt/bughound]
└──╼ $./bughound.py -h
.______ __ __ _______ __ __ ______ __ __ .__ __. _______
| _ \ | | | | / _____|| | | | / __ \ | | | | | \ | | | \
| |_) | | | | | | | __ | |__| | | | | | | | | | | \| | | .--. |
| _ < | | | | | | |_ | | __ | | | | | | | | | | . ` | | | | |
| |_) | | `--' | | |__| | | | | | | `--' | | `--' | | |\ | | '--' |
|______/ \______/ \______| |__| |__| \______/ \______/ |__| \__| |_______/
\ /
oVo
\___XXX___/
__XXXXX__
/__XXXXX__\
/ XXX \
V V1.0 Beta
[+] Example: ./bughound3.py --path vulnerable_code/ --language php --extension .php --name testproject
usage: bughound.py [-h] [--path PATH] [--git GIT] --language LANGUAGE
--extension EXTENSION --name NAME [--verbose [VERBOSE]]
optional arguments:
-h, --help show this help message and exit
--path PATH local path of the source code
--git GIT git repository URL
--language LANGUAGE the used programming language
--extension EXTENSION
extension to search for
--name NAME project name to use
--verbose [VERBOSE] show debugging messages
┌─[askar@hackbook]─[/opt/bughound]
└──╼ $
Por ejemplo, para escanear un proyecto PHP local, puedes usar el siguiente comando:
./bughound.py --path /opt/dummyproject --language php --extension .php --name dummyproject
Este comando creará un nuevo proyecto llamado "dummyproject" en el índice de Elasticsearch, y recorrerá todos los archivos locales con la extensión ".php" en la ruta local "/opt/dummyproject" y enviará los resultados a Elasticsearch.
También puedes descargar un proyecto remoto desde un repositorio git usando el modificador --git de la siguiente manera:
./bughound.py --git https://github.com/DummyCode/DummyProject --language php --extension .php --name dummyproject
Bughound clonará el código por ti y lo guardará en el directorio projects, luego lo escaneará.
Si decidiste usar la imagen Docker oficial de Bughound, obtendrás un par de paneles listos para usar que te ayudarán a realizar tu análisis.
Los siguientes paneles están disponibles hasta ahora:
Estos paneles te darán estadísticas sobre las funciones y fragmentos de código que se encontraron en el código para que puedas iniciar tu proceso de análisis.
Para obtener más información sobre Bughound, consulta los siguientes artículos:
Este proyecto está licenciado bajo la Licencia GPL-3.0 - consulta el archivo LICENSE para más detalles.