Kubesploit ist ein plattformübergreifender Post-Exploitation-HTTP/2-Command-&-Control-Server und -Agent, geschrieben in Golang, ausgerichtet auf containerisierte Umgebungen.
Kubesploit ist ein plattformübergreifender HTTP/2 Command & Control-Server und -Agent für containerisierte Umgebungen, geschrieben in Golang und aufbauend auf dem Merlin-Projekt von Russel Van Tuyl (@Ne0nd0g).
Bei der Recherche zu Docker und Kubernetes ist uns aufgefallen, dass die meisten derzeit verfügbaren Tools auf das passive Scannen nach Schwachstellen im Cluster abzielen und es an komplexeren Angriffsvektoren mangelt. Sie zeigen vielleicht das Problem, aber nicht, wie man es ausnutzt. Es ist wichtig, den Exploit auszuführen, um einen realistischen Angriff zu simulieren, der die Widerstandsfähigkeit des Unternehmens im gesamten Netzwerk auf die Probe stellt. Beim Ausführen eines Exploits wird das Cyber-Ereignismanagement der Organisation trainiert – etwas, das beim Scannen nach Cluster-Problemen nicht passiert. Das hilft der Organisation zu lernen, wie sie bei echten Angriffen reagieren soll, ob andere Erkennungssysteme wie erwartet funktionieren und welche Änderungen vorgenommen werden sollten. Wir wollten ein offensives Tool schaffen, das diese Anforderungen erfüllt.
Aber wir hatten einen weiteren Grund, ein solches Tool zu entwickeln. Wir hatten bereits zwei Open-Source-Tools (KubiScan und kubeletctl) rund um Kubernetes und hatten Ideen für weitere. Anstatt für jedes Tool ein separates Projekt zu erstellen, dachten wir, es wäre besser, ein neues Tool zu entwickeln, das die neuen Werkzeuge zentralisiert – und so entstand Kubesploit.
Wir suchten nach einer Open-Source-Lösung, die die schwere Arbeit für ein plattformübergreifendes System übernimmt, und fanden Merlin, geschrieben von Russel Van Tuyl (@Ne0nd0g), als geeignet.
Unser Hauptziel ist es, zur Sensibilisierung für die Sicherheit containerisierter Umgebungen beizutragen und die in den verschiedenen Netzwerken implementierten Gegenmaßnahmen zu verbessern. All dies wird durch ein Framework ermöglicht, das den PT-Teams und Red Teamern die geeigneten Werkzeuge für ihre Aufgaben in diesen Umgebungen bietet. Mit diesen Tools können Sie die Stärken dieser Umgebungen bewerten und die erforderlichen Änderungen zu deren Schutz vornehmen.
Da die C&C- und die Agent-Infrastruktur bereits von Merlin bereitgestellt wurde, integrierten wir den Go-Interpreter („Yaegi“), um Golang-Code vom Server auf dem Agenten ausführen zu können. Dadurch können wir unsere Module in Golang schreiben, mehr Flexibilität bei den Modulen bieten und neue Module dynamisch laden. Es handelt sich um ein laufendes Projekt, und wir planen, in Zukunft weitere Module zu Docker und Kubernetes hinzuzufügen.
Die derzeit verfügbaren Module sind:
Container-Ausbruch durch Mounten
Container-Ausbruch über docker.sock
Container-Ausbruch mit Exploit CVE-2019-5736
Scannen auf bekannte Kubernetes-Cluster-CVEs
Port-Scannen mit Fokus auf Kubernetes-Dienste
Kubernetes-Dienst-Scan aus dem Container heraus
Leichtgewichtige kubeletctl-Integration mit folgenden Optionen:
cGroup-Ausbruch
Kernel-Modul-Ausbruch
Var-Log-Escape
Deepce: Docker-Enumeration (Open-Source-Projekt als Modul integriert)
Schwachstellentest: Prüfen, für welche Kubesploit-Exploits Ihr Container anfällig ist
Ausführliche Informationen zu den Modulen finden Sie auf der WiKi-Seite
Wir haben eine spezielle Kubernetes-Umgebung in KillerCoda für Sie erstellt, um Kubesploit auszuprobieren. Es handelt sich um eine vollständige Simulation mit einem kompletten Satz automatisierter Anweisungen zur Verwendung von Kubesploit. Wir ermutigen Sie, es zu erkunden.
Server starten:
./kubesploitServer
Agent starten:
./agent -url https://<server_ip>:443 &

Um dieses Projekt zu bauen, führen Sie den Befehl make aus dem Stammverzeichnis aus.
HINWEIS: Derzeit müssen Sie Golang 1.18 oder Go 1.19 (die letzten beiden Hauptversionen) verwenden, basierend auf den Golang-Anforderungen von traefik/yaegi v0.14.3.
Für einen schnellen Build unter Linux können Sie Folgendes ausführen:
export PATH=$PATH:/usr/local/go/bin
go build -o agent cmd/merlinagent/main.go
go build -o server cmd/merlinserver/main.go
Um den Server in einem Container auszuführen, müssen Sie den Kubesploit-Server auf dem Interface 0.0.0.0 (und nicht 127.0.0.1) lauschen lassen.
Sie können das Interface-Feld in der config.yaml aktualisieren.
Nebenbei: Stellen Sie sicher, dass Sie Ports zwischen Host und Container binden (der Standardport ist
443und kann ebenfalls in der config.yaml konfiguriert werden).
Wir haben YARA-Regeln erstellt, die helfen, Kubesploit-Binärdateien zu erkennen. Die Regeln stehen in der Datei kubesploit.yara.
Jedes Go-Modul, das in den Agenten geladen wird, wird auf dem Opferrechner protokolliert.
Wir haben eine MITRE-Karte der von Kubesploit verwendeten Angriffsvektoren erstellt.
Für jedes von uns erstellte Modul haben wir eine Beschreibung und Hinweise zur Verteidigung dagegen verfasst. Wir haben dies in der Datei MITIGATION.md zusammengefasst.
Wir begrüßen Beiträge aller Art zu diesem Repository. Eine Anleitung zum Einstieg und Beschreibungen unserer Entwicklungsabläufe finden Sie in unserem Beitragsleitfaden.
Wir möchten Russel Van Tuyl (@Ne0nd0g) dafür danken, dass er Merlin als Open-Source-Projekt zur Verfügung gestellt hat, auf dessen Grundlage wir Kubesploit entwickeln konnten. Wir danken auch Traefik Labs (@traefik) für die Entwicklung des Go-Interpreters („Yaegi“), der es uns ermöglicht, die Golang-Module einfach auf einem entfernten Agenten auszuführen.
Copyright (c) 2021 CyberArk Software Ltd. Alle Rechte vorbehalten.
Dieses Repository ist unter der GPL-3.0-Lizenz lizenziert.
Den vollständigen Lizenztext finden Sie unter LICENSE.
Bei weiteren Kommentaren, Vorschlägen oder Fragen können Sie Eviatar Gerzi (@g3rzi) von CyberArk Labs kontaktieren oder ein Issue eröffnen. Weitere von uns entwickelte Projekte finden Sie unter https://github.com/cyberark/.