Ein Sicherheitstest-Slackbot, gebaut mit einem Kubernetes-Backend auf der Google Cloud Platform
HINWEIS: Ich pflege dieses Projekt nicht mehr aktiv. Ich arbeite zusammen mit einigen anderen Leuten an v2 von Kubebot, das wahrscheinlich auf einer der kommenden Sicherheitskonferenzen vorgestellt wird.
1 - API-Anfrage (Tool, Ziel, Optionen), die vom Slackbot initiiert und an den API-Server gesendet wird, der als Docker-Container auf einem Kubernetes (K8s)-Cluster läuft und skaliert werden kann.
2 - Der API-Server legt die empfangene Anfrage als Nachricht in einem PubSub-Tool-Thema ab.
3 - Nachrichten werden an das Tool-Abonnement veröffentlicht.
4 - Subscription-Worker, die als Docker-Container auf dem K8s-Cluster laufen, verarbeiten die Nachricht aus dem Abonnement. Auch die Anzahl dieser Worker kann skaliert werden.
5 - Abhängig von Tool, Ziel und Optionen, die vom Endbenutzer empfangen werden, werden entsprechende Tool-Worker als Docker-Container im selben K8s-Cluster gestartet. Ergebnisse werden vorübergehend in einem lokalen Verzeichnis dieses Containers gespeichert. Das Github-Verzeichnis des Tools wird geklont.
6 - Es wird geprüft, ob die generierte Ergebnisdatei existiert hat oder nicht. Wenn sie nicht existierte, wird sie hinzugefügt und Änderungen werden an Github gepusht. Wenn sie existiert, werden Dateien verglichen, eine neue Datei wird an Github gepusht und nur Änderungen werden an den nächsten Schritt weitergegeben.
7 - Ein Webhook von den Tool-Workern sendet die Änderungen zurück an Slack. Die Tool-Worker werden gelöscht, da sie nicht mehr benötigt werden.
PS - Alle Docker-Images des API-Servers, der Subscription-Worker und der Tool-Worker werden vor der Bereitstellung auf dem K8s-Cluster aus der Google Container Registry dieses GCP-Kontos heruntergeladen.
Liste der bisher integrierten Tools (Diese Liste wird ständig aktualisiert, wenn weitere Tools hinzugefügt werden. Es gibt einige zusätzliche Tools im tools-Ordner, die sich noch in der Entwicklung befinden.)
api - Enthält den gesamten Code für den Kubebot-API-Server.
config - Enthält die Konfigurationsdateien zur Bereitstellung von Kubebot-Komponenten.
cronjobs - Enthält eine Beispiel-Bereitstellungsdatei (.yaml) zum Einrichten von Cronjobs, um ein bestimmtes Tool in einem bestimmten Intervall auszuführen und die Ergebnisse per Webhook an Slack zu senden.
Ein Dienstprogramm-Container namens checkfile wird verwendet, um die Diff-Operation auf Github-Dateien durchzuführen, um Änderungen zwischen der vorherigen und der letzten Ausführung eines Tools zu identifizieren. Dieser Container wird nach jedem Tool-Container ausgeführt.
Ein Dienstprogramm namens converttobq wird verwendet, um Daten aus Tools in ein BigQuery-kompatibles Format zu konvertieren. Dieses Dienstprogramm wird in Automatisierungs-Workflows ausgeführt, bei denen die Ergebnisse jedes Tools in BQ gespeichert werden, um von anderen Tools verarbeitet zu werden.
Ein Dienstprogramm namens wfuzzbasicauthbrute wird verwendet, um den Basisauthentifizierungsmechanismus von Endpunkten, die in einer BQ-Tabelle gespeichert sind, mit allen Geheimnissen aus einer anderen BQ-Tabelle zu brute-forcen.
.env.sample - Benennen Sie diese Datei in .env um und stellen Sie sicher, dass die darin enthaltenen Werte korrekt sind, wenn Sie Kubebot lokal bereitstellen möchten.
Makefile - Makefile zum Erstellen Ihrer Kubebot-Umgebung.
Erste Schritte
Voraussetzungen - Bitte stellen Sie sicher, dass alle diese Voraussetzungen erfüllt sind.
Kubebot lokal ausführen - Dies ist ein guter Ausgangspunkt, um sich mit Kubebot vertraut zu machen, bevor Sie es remote ausführen.
Integration eigener Tools - Wenn Sie Ihre eigenen Tools in Kubebot integrieren möchten, ist das recht einfach!
TODOS - Bitte helfen Sie mir, Kubebot besser zu machen!
Kubebot remote ausführen - Sobald Sie sicher sind, dass Kubebot lokal (mit Minikube) wie erwartet funktioniert, und es nun in der Cloud voll nutzen möchten, kann es auf einem Google Container Engine (GKE)-Cluster bereitgestellt werden. Allerdings kann ich noch keine Anleitungen zur Fernbereitstellung geben. Wenn Interesse besteht, helfe ich jedoch gerne weiter. Und wenn Sie Kubebot einfach als Slack-App nutzen möchten, ohne sich um die Backend-Infrastruktur zu kümmern, kann dies ebenfalls gegen eine kleine monatliche Abonnementgebühr arrangiert werden, da ich das Backend in meinem persönlichen GCP-Konto hosten werde und Sie nur für die normalen Kosten verantwortlich wären, die mit dem Hosting eines VPS bei einem Cloud-Anbieter verbunden sind. Zögern Sie nicht, mich zu kontaktieren, um diese Optionen zu besprechen.
Beachten Sie, wie Sie einen Slash-Befehl mit dem Namen des Tools, Optionen und dem/den Ziel(en) ausführen können. Ich sage Ziel(e), weil Sie einen Slash-Befehl ausführen können, um ein Tool mit einem Satz von Optionen gegen mehrere Ziele auszuführen. Beispiel: Der gitrob-Befehl unten wird gegen test und abc ausgeführt.
/runtool nmap|-Pn -p 1-1000|google.com
/runtool sublist3r|-t 50|test.com
/runtool gobuster|-m dns -w fierce_hostlist.txt -t 10 -fw|google.com