
Statisches Code-Analyse-Tool basierend auf Elasticsearch

Bughound ist ein Open-Source-Tool zur statischen Codeanalyse, das Ihren Code analysiert und die Ergebnisse an Elasticsearch und Kibana sendet, um nützliche Einblicke in potenzielle Schwachstellen in Ihrem Code zu erhalten.
Bughound verfügt über ein eigenes Elasticsearch- und Kibana-Docker-Image, das mit Dashboards vorkonfiguriert ist, um eine starke Visualisierung der Ergebnisse zu ermöglichen.
Sie können verschiedene Arten von Schwachstellen erkennen, wie zum Beispiel:
Bughound kann derzeit PHP- und JAVA-Code analysieren und enthält eine Gruppe unsicherer Funktionen für diese Sprachen.
Ich werde sicherstellen, dass mit der Zeit immer mehr Funktionen/Sprachabdeckungen hinzugefügt werden, aber derzeit liegt der Hauptfokus auf der Stabilität des Projekts selbst.
Bitte beachten Sie, dass die Ergebnisse von Bughound nicht 100% genau sind; es wurde entwickelt, um Ihnen bei der Identifizierung potenzieller Schwachstellen während Ihrer Analyse zu helfen.
Zunächst erstellt Bughound eine Liste aller Dateien in Ihrem Projekt basierend auf der Erweiterung der Dateien, die Sie prüfen möchten. Dann liest es jede Datei und versucht, vordefinierte unsichere Funktionen für die Sprache Ihres Projekts zu finden.
Die Analysephase basiert auf vorkonfigurierten regulären Ausdrücken und einigen benutzerdefinierten Textabgleichen, um die potenziellen Schwachstellen zu erkennen. Daher müssen Sie erneut die manuelle Analyse durchführen, um zu überprüfen, ob diese Ergebnisse ausnutzbar sind.
Schließlich sendet es die Ergebnisse an das Bughound-Docker-Image, das einen vorkonfigurierten Elasticsearch und Kibana enthält, die die angepassten Dashboards für Ihre Ergebnisse enthalten.
Die Dashboards geben Ihnen Details zu den Ergebnissen, wie zum Beispiel:
Mit Kibana können Sie auch das potenziell anfällige Code-Snippet anzeigen, um mit Ihrer Analyse und Nachverfolgung zu beginnen und zu prüfen, ob es ausnutzbar ist.
Natürlich können Sie auch Ihren eigenen ELK-Stack verwenden, wenn Sie möchten, und Bughound führt die initiale Konfiguration für Sie durch. In diesem Fall haben Sie jedoch nicht die vorkonfigurierten Dashboards.
Sie können alle erforderlichen Abhängigkeiten für die Ausführung von Bughound mit folgendem Befehl installieren:
pip3 install -r requirements.txt
Dadurch wird sichergestellt, dass alle Anforderungen für den Code installiert sind.
Außerdem müssen Sie Docker installieren, um das Bughound-Image auszuführen. Mehr dazu im nächsten Abschnitt!
Wenn Sie Ihre eigenen Elasticsearch- und Kibana-Instanzen verwenden möchten, überspringen Sie den Docker-Installationsschritt
Stellen Sie sicher, dass Sie die neueste Version von Bughound mit folgendem Befehl erhalten:
git clone https://github.com/mhaskar/Bughound
Und nachdem Sie die Anforderungen aus dem vorherigen Schritt installiert haben, können Sie Bughound mit folgendem Befehl ausführen:
./bughound.py
Sie erhalten den Hauptbildschirm von 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]
└──╼ $
Um das Bughound-Docker-Image zu installieren, gehen Sie einfach wie folgt vor:
docker pull bughound/bughound
Und das wird die neueste Version des Images herunterladen und auf Ihrem Rechner speichern.
Sobald wir das Image heruntergeladen haben, können wir es mit folgendem Befehl ausführen:
docker run --name bughound -p5601:5601 -p 9200:9200 bughound/bughound
Dadurch wird das Image in einem neuen Container namens bughound ausgeführt und die Ports freigegeben, die Bughound benötigt, um mit Elasticsearch und Kibana auf Ihrem Host zu kommunizieren.
Möglicherweise müssen Sie den maximalen virtuellen Speicher erhöhen, um das Image zu verwenden. Führen Sie daher bitte diesen Befehl aus:
sysctl -w vm.max_map_count=262144
Nachdem Sie diese beiden Dinge erledigt haben, sind Sie bereit, Bughound zu verwenden!
Um den Analyseprozess für Ihren Code zu starten, sollten Sie die Datei Bughound.py verwenden, die einige Optionen bietet. Um diese Optionen über das Hilfebanner anzuzeigen, können Sie den folgenden Befehl verwenden:
┌─[✗]─[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]
└──╼ $
Zum Beispiel können Sie mit folgendem Befehl ein lokales PHP-Projekt scannen:
./bughound.py --path /opt/dummyproject --language php --extension .php --name dummyproject
Dieser Befehl erstellt ein neues Projekt namens 'dummyproject' im Elasticsearch-Index, durchsucht alle lokalen Dateien mit der Erweiterung '.php' im lokalen Pfad '/opt/dummyproject' und sendet die Ergebnisse an Elasticsearch.
Sie können auch ein entferntes Projekt aus einem Git-Repository mit der Option --git wie folgt abrufen:
./bughound.py --git https://github.com/DummyCode/DummyProject --language php --extension .php --name dummyproject
Bughound klont den Code für Sie, speichert ihn im Verzeichnis projects und scannt ihn dann.
Wenn Sie sich für die Verwendung des offiziellen Bughound-Docker-Images entschieden haben, erhalten Sie einige gebrauchsfertige Dashboards, die Ihnen bei Ihrer Analyse helfen.
Die folgenden Dashboards sind derzeit verfügbar:
Diese Dashboards liefern Ihnen Statistiken über die Funktionen und Code-Snippets, die im Code gefunden wurden, damit Sie mit Ihrem Analyseprozess beginnen können.
Weitere Informationen zu Bughound finden Sie in den folgenden Artikeln:
Dieses Projekt ist unter der GPL-3.0-Lizenz lizenziert – siehe die Datei LICENSE für Details.