Kube-Hunter steht nicht mehr unter aktiver Entwicklung. Wenn Sie sich für bekannte Schwachstellen an Kubernetes -Cluster scannen möchten, empfehlen wir die Verwendung von Trivy. Insbesondere das Misskonfigurations -Scannen von Trivy und das Scannen von KBOM -Sicherheitsanfällen. Erfahren Sie mehr in den trivischen Dokumenten.
Kube-Hunter jagt nach Sicherheitsschwächen in Kubernetes-Clustern. Das Tool wurde entwickelt, um das Bewusstsein und die Sichtbarkeit für Sicherheitsprobleme in Kubernetes -Umgebungen zu schärfen. Sie sollten Kube-Hunter nicht auf einem Kubernetes-Cluster ausführen, den Sie nicht besitzen!
Kube-Hunter ausführen : Kube-Hunter ist als Container (Aquasec/Kube-Hunter) erhältlich. Wir bieten auch eine Website bei kube-hunter.aquasec.com an, auf der Sie sich online registrieren können, um ein Token zu erhalten, um die Ergebnisse online anzuzeigen und zu teilen. Sie können den Python -Code auch wie unten beschrieben ausführen.
Schwachstellen erkunden : Die Kube-Hunter-Wissensbasis enthält Artikel über entdeckbare Schwachstellen und Themen. Wenn Kube-Hunter ein Problem berichtet, zeigt es seine vid (Schwachstellen-ID), sodass Sie es im KB unter https://aquasecurity.github.io/kube-hunter/ nachsehen können
Wenn Sie an Kube-Hunters Integration in die Kubernetes Att & Ck Matrix interessiert sind
Kube-Hunter Demo Video
Kube-Hunter unterstützt jetzt das neue Format der Kubernetes Att & CK-Matrix. Während Kube-Hunters Schwachstellen eine Sammlung kreativer Techniken sind, die einen Angreifer im Cluster (oder außerhalb deshalb) nachahmen sollen, definiert ATT & CK des Gehrers eine allgemeinere standardisierte Kategorien von Techniken, um dies zu tun.
Sie können sich Kube-Hunter-Schwachstellen als kleine Schritte für einen Angreifer vorstellen, der der Spur einer allgemeineren Technik folgt, die er anstreben würde. Die meisten Jäger und Schwachstellen von Kube-Hunter können eng unter diese Techniken fallen, deshalb haben wir uns um den Matrixstandard bewegt.
Einige Kube-Hunter-Schwachstellen, die wir nicht der Gehrungstechnik zuordnen konnten, sind mit dem General Schlüsselwort vorangestellt
Es gibt drei verschiedene Möglichkeiten, Kube-Hunter zu führen, wobei jeder einen anderen Ansatz zum Erkennen von Schwächen in Ihrem Cluster bietet:
Führen Sie Kube-Hunter auf jedem Computer (einschließlich Ihres Laptops) aus, wählen Sie Remote-Scan und geben Sie die IP-Adresse oder den Domänennamen Ihres Kubernetes-Cluster an. Dadurch erhalten Sie eine Angreiferin für Ihr Kubernetes-Setup.
Sie können Kube-Hunter direkt auf einer Maschine im Cluster ausführen und die Option auswählen, alle lokalen Netzwerkschnittstellen zu untersuchen.
Sie können Kube-Hunter auch in einem Pod innerhalb des Clusters ausführen. Dies zeigt an, wie ausgesetzt wäre, wie Ihr Cluster ausgesetzt wäre, wenn einer Ihrer Anwendungskapseln beeinträchtigt wird (z. B. durch eine Softwareanfälligkeit). ( --pod Flag )
Erste Prüfung dieser Voraussetzungen .
Standardmäßig öffnet Kube-Hunter eine interaktive Sitzung, in der Sie eine der folgenden Scan-Optionen auswählen können. Sie können die Scan -Option auch manuell aus der Befehlszeile angeben. Dies sind Ihre Optionen:
Um Remote -Maschinen für die Jagd anzugeben, wählen Sie Option 1 oder verwenden Sie die Option --remote . Beispiel: kube-hunter --remote some.node.com
Um das Scannen der Schnittstelle anzugeben, können Sie die Option --interface verwenden (so scannt alle Netzwerkschnittstellen des Geräts). Beispiel: kube-hunter --interface
Um ein bestimmtes CIDR zum Scannen anzugeben, verwenden Sie die Option --cidr . Beispiel: kube-hunter --cidr 192.168.0.0/24
SET --k8s-auto-discover-nodes Flag, um Kubernetes für alle Knoten im Cluster abzufragen, und versuchen Sie dann, sie alle zu scannen. Standardmäßig wird In-Cluster-Konfiguration verwendet, um eine Verbindung zur Kubernetes-API herzustellen. Wenn Sie eine explizite Kubeconfig -Datei verwenden möchten, setzen Sie --kubeconfig /location/of/kubeconfig/file .
Beachten Sie auch, dass dies bei Verwendung des --pod -Modus immer erfolgt.
Um einen Angreifer in den frühen Stadien nachzuahmen, benötigt Kube-Hunter keine Authentifizierung für die Jagd.
Imitata -Sie können Kube-Hunter ein bestimmtes Service-Account-Token zur Verfügung stellen, indem Sie das JWT-Träger-Token des Service-Account --service-account-token manuell übergeben.
Beispiel:
$ kube-hunter --active --service-account-token eyJhbGciOiJSUzI1Ni... Beim Laufen mit --pod Flag verwendet Kube-Hunter das im Pod montierte Service-Account-Token, um sich mit Diensten zu authentifizieren, die es während der Jagd findet.
--service-account-token Flagge Priorität beim Ausführen als PODAktive Jagd ist eine Option, bei der Kube-Hunter Schwachstellen ausnutzt, die es findet, um weitere Schwachstellen zu erkunden. Der Hauptunterschied zwischen normaler und aktiver Jagd besteht darin, dass eine normale Jagd den Zustand des Clusters niemals verändern wird, während eine aktive Jagd möglicherweise staatlich ändernde Operationen am Cluster durchführen kann, was schädlich sein könnte .
Standardmäßig macht Kube-Hunter keine aktive Jagd. Verwenden Sie zum aktiven Jagd eines Clusters das --active Flag. Beispiel: kube-hunter --remote some.domain.com --active
Sie können die Liste der Tests mit der Option --list sehen: Beispiel: kube-hunter --list
Active Hunting Tests sowie Passive: kube-hunter --list --active
Um nur eine Zuordnung Ihres Knotennetzwerks zu sehen, laufen Sie mit der Option --mapping . Beispiel: kube-hunter --cidr 192.168.0.0/24 --mapping Dies gibt alle Kubernetes-Knoten aus, die Kube-Hunter gefunden hat.
Um die Protokollierung zu steuern, können Sie eine Protokollebene mit der Option --log angeben. Beispiel: kube-hunter --active --log WARNING Die verfügbaren Protokollpegel sind:
Standardmäßig wird der Bericht in stdout versandt, Sie können jedoch verschiedene Methoden mit der Option --dispatch angeben. Beispiel: kube-hunter --report json --dispatch http verfügbare Versandmethoden sind:
Wenn Kube-Hunter als Pod in einer Azure- oder AWS-Umgebung läuft, holt sie Subnetze aus dem Instanzmetadatendienst. Dies macht den Entdeckungsprozess natürlich länger. Verwenden Sie die Option --quick , zum Hardlimit -Subnetz auf A /24 CIDR.
Mit der benutzerdefinierten Jagd können fortgeschrittene Benutzer die Kontrolle darüber haben, was Jäger zu Beginn einer Jagd registriert werden. Wenn Sie wissen, was Sie tun , kann dies helfen, wenn Sie Kube-Hunters Jagd- und Entdeckungsprozess für Ihre Bedürfnisse anpassen möchten.
Beispiel:
kube-hunter --custom <HunterName1> <HunterName2>
Durch das Ermöglichen der kundenspezifischen Jagd werden alle Jäger aus dem Jagdprozess entfernt, mit Ausnahme der gegebenen weiße Jäger.
Die Flagge --custom Flagge --list eine Liste der Namen der Jägerklassen, um alle --raw-hunter-names von Kube-Hunter anzuzeigen.
Beispiel:
kube-hunter --active --list --raw-hunter-names
Hinweis : Aufgrund des architektonischen Designs von Kube-Huner werden sich die folgenden "Kernjäger/Klassen" immer registrieren (auch wenn sie benutzerdefinierte Jagd verwenden):
Es gibt drei Methoden zum Bereitstellen von Kube-Hunter:
Sie können Kube-Hunter direkt auf Ihrer Maschine ausführen.
Sie benötigen die folgenden Installationen:
Installieren:
pip install kube-hunter
Laufen:
kube-hunter
Klonen Sie das Repository:
git clone https://github.com/aquasecurity/kube-hunter.git
Installieren Sie Modulabhängigkeiten. (Möglicherweise tun Sie dies in einer virtuellen Umgebung vor.)
cd ./kube-hunter
pip install -r requirements.txt
Laufen:
python3 kube_hunter
Wenn Sie PyInstaller/Py2Exe verwenden möchten, müssen Sie zuerst das Skript install_imports.py ausführen.
Aqua Security unterhält eine Containerversion von Kube-Hunter bei aquasec/kube-hunter:aqua . Dieser Container enthält diesen Quellcode sowie ein zusätzliches Plugin (geschlossene Quelle) zum Hochladen von Ergebnissen in einen Bericht, der unter kube-hunter.aquasec.com angezeigt werden kann. Bitte beachten Sie, dass das Ausführen des aquasec/kube-hunter Containers und des Hochladens von Berichten Daten zusätzliche Geschäftsbedingungen unterliegt.
Mit der Dockerfile in diesem Repository können Sie eine Containerversion ohne das Reporting -Plugin erstellen.
Wenn Sie Kube-Hunter-Container mit dem Host-Netzwerk ausführen, kann es alle Schnittstellen auf dem Host untersuchen:
docker run -it --rm --network host aquasec/kube-hunter
Hinweis für Docker für Mac/Windows: Beachten Sie, dass der "Host" für Docker für Mac oder Windows die VM ist, in der Docker Container ausführt. Daher ermöglicht die Angabe --network host Kube-Hunter-Zugriff auf die Netzwerkschnittstellen dieser VM und nicht auf die Ihrer Maschine. Standardmäßig wird Kube-Hunter im interaktiven Modus ausgeführt. Sie können die Scanning -Option auch mit den oben beschriebenen Parametern angeben, z.
docker run --rm aquasec/kube-hunter --cidr 192.168.0.0/24
Mit dieser Option können Sie herausfinden, welches Ausführen eines böswilligen Containers auf Ihrem Cluster ausführen/entdecken kann. Dies gibt eine Perspektive, was ein Angreifer tun könnte, wenn er in der Lage wäre, eine Schote zu beeinträchtigen, möglicherweise durch eine Software -Schwachstelle. Dies kann wesentlich mehr Schwachstellen aufdecken.
In der Datei von Beispiele job.yaml definiert ein Job, bei dem Kube-Hunter in einem Pod ausgeführt wird, wobei die Standardeinstellungen für Kubernetes-Pod-Pod-Zugriffseinstellungen verwendet werden. (Möglicherweise möchten Sie diese Definition ändern, z. B. als Nicht-Root-Benutzer ausführen oder in einem anderen Namespace ausgeführt werden.)
kubectl create -f ./job.yaml auskubectl describe job kube-hunterkubectl logs <pod name> Klicken Sie hier, um die Beitragsrichtlinien zu lesen
Dieses Repository ist unter der Apache -Lizenz 2.0 verfügbar.