Kube-Hunter n'est plus en cours de développement actif. Si vous êtes intéressé à scanner des clusters Kubernetes pour des vulnérabilités connues, nous vous recommandons d'utiliser Trivy. Plus précisément, la balayage de la configuration erronée de Kubernetes de Trivy et la numérisation de la vulnérabilité KBOM. En savoir plus dans les documents TRIVY.
Kube-Hunter chasse les faiblesses de sécurité dans les grappes de Kubernetes. L'outil a été développé pour accroître la sensibilisation et la visibilité aux problèmes de sécurité dans les environnements Kubernetes. Vous ne devriez pas exécuter Kube-Hunter sur un cluster Kubernetes que vous ne possédez pas!
Exécutez Kube-Hunter : Kube-Hunter est disponible en tant que conteneur (aquasec / kube-chasseur), et nous proposons également un site Web à kube-huntter.aquasec.com où vous pouvez vous inscrire en ligne pour recevoir un jeton permettant de voir et de partager les résultats en ligne. Vous pouvez également exécuter le code Python vous-même comme décrit ci-dessous.
Explorer les vulnérabilités : la base de connaissances Kube-Hunter comprend des articles sur les vulnérabilités et les problèmes découvrables. Lorsque Kube-Hunter rapporte un problème, il affichera sa vidéo (ID de vulnérabilité) afin que vous puissiez le rechercher dans le KB sur https://aquasecurity.github.io/kube-hunter/
Si vous êtes intéressé par l'intégration de Kube-Hunter avec la matrice Kubernetes ATT & CK Continuez à lire
Vidéo de démonstration de Kube-Hunter
Kube-Hunter prend désormais en charge le nouveau format de la matrice Kubernetes ATT & CK. Bien que les vulnérabilités de Kube-Hunter soient une collection de techniques créatives conçues pour imiter un attaquant dans le cluster (ou à l'extérieur), l'ATT & CK de la mitre définit des catégories de techniques standardisées plus générales pour le faire.
Vous pouvez considérer les vulnérabilités de Kube-Hunter comme de petites étapes pour un attaquant, qui suit la piste d'une technique plus générale qu'il viserait. La plupart des chasseurs et des vulnérabilités de Kube-Hunter peuvent être fermés dans ces techniques, c'est pourquoi nous avons déménagé pour suivre la norme de la matrice.
Certaines vulnérabilités de chasseurs de kube que nous ne pouvions pas cartographier à la technique de mitre sont préfixées avec le mot-clé General 
Il existe trois façons différentes d'exécuter Kube-Hunter, chacun fournissant une approche différente pour détecter les faiblesses dans votre cluster:
Exécutez Kube-Hunter sur n'importe quelle machine (y compris votre ordinateur portable), sélectionnez la numérisation à distance et donnez l'adresse IP ou le nom de domaine de votre cluster Kubernetes. Cela vous donnera une vision des attaquants de votre configuration Kubernetes.
Vous pouvez exécuter Kube-Hunter directement sur une machine dans le cluster et sélectionner l'option pour sonder toutes les interfaces réseau locales.
Vous pouvez également exécuter Kube-Hunter dans un pod dans le cluster. Cela indique à quel point votre cluster serait exposé si l'un de vos pods d'application était compromis (grâce à une vulnérabilité logicielle, par exemple). ( --pod Flag de pod )
Vérifiez d'abord ces pré-requis .
Par défaut, Kube-Hunter ouvrira une session interactive, dans laquelle vous pourrez sélectionner l'une des options de numérisation suivantes. Vous pouvez également spécifier manuellement l'option de numérisation à partir de la ligne de commande. Ce sont vos options:
Pour spécifier des machines distantes pour la chasse, sélectionnez l'option 1 ou utilisez l'option --remote . Exemple: kube-hunter --remote some.node.com
Pour spécifier la numérisation d'interface, vous pouvez utiliser l'option --interface (cela analysera toutes les interfaces réseau de la machine). Exemple: kube-hunter --interface
Pour spécifier un CIDR spécifique pour scanner, utilisez l'option --cidr . Exemple: kube-hunter --cidr 192.168.0.0/24
SET --k8s-auto-discover-nodes Flag pour interroger Kubernetes pour tous les nœuds du cluster, puis tenter de les scanner tous. Par défaut, il utilisera la configuration en grappe pour se connecter à l'API Kubernetes. Si vous souhaitez utiliser un fichier KubEconfig explicite, SET --kubeconfig /location/of/kubeconfig/file .
Notez également que cela est toujours fait lors de l'utilisation du mode --pod .
Afin d'imiter un attaquant dans ses premiers stades, Kube-Hunter ne nécessite aucune authentification pour la chasse.
Imitateur - Vous pouvez fournir à Kube-Hunter un jeton de compte de service spécifique à utiliser lors de la chasse en passant manuellement le jeton JWT Bearier du secret du comptabilisation du service avec le drapeau --service-account-token .
Exemple:
$ kube-hunter --active --service-account-token eyJhbGciOiJSUzI1Ni... Lors du tournant avec un drapeau --pod , Kube-Hunter utilise le jeton du compte de service monté à l'intérieur du pod pour s'authentifier aux services qu'il trouve pendant la chasse.
--service-account-token a priorité lorsqu'il s'exécute comme un podLa chasse active est une option dans laquelle Kube-Hunter exploitera les vulnérabilités qu'elle trouve, pour explorer pour d'autres vulnérabilités. La principale différence entre la chasse normale et active est qu'une chasse normale ne changera jamais l'état du cluster, tandis que la chasse active peut potentiellement effectuer des opérations changeantes sur l'État sur le cluster, ce qui pourrait être nocif .
Par défaut, Kube-Hunter ne fait pas de chasse active. Pour chasser actif un cluster, utilisez le drapeau --active . Exemple: kube-hunter --remote some.domain.com --active
Vous pouvez voir la liste des tests avec l'option --list : Exemple: kube-hunter --list
Pour voir des tests de chasse actifs ainsi que passif: kube-hunter --list --active
Pour voir uniquement un mappage de votre réseau de nœuds, exécutez avec l'option --mapping . Exemple: kube-hunter --cidr 192.168.0.0/24 --mapping Cet sera de la sortie de tous les nœuds Kubernetes que Kube-Hunter a trouvés.
Pour contrôler la journalisation, vous pouvez spécifier un niveau de journal, en utilisant l'option --log . Exemple: kube-hunter --active --log WARNING disponibles Les niveaux de journal sont:
Par défaut, le rapport sera expédié sur stdout , mais vous pouvez spécifier différentes méthodes à l'aide de l'option --dispatch . Exemple: kube-hunter --report json --dispatch http Dispatch Les méthodes sont:
Lors de l'exécution en tant que pod dans un environnement Azure ou AWS , Kube-Hunter va récupérer les sous-réseaux à partir du service de métadonnées d'instance. Naturellement, cela fait que le processus de découverte prend plus de temps. Pour un scanner de sous-réseau dur à CIDR A /24 , utilisez l'option --quick .
La chasse personnalisée permet aux utilisateurs avancés de contrôler ce que les chasseurs sont enregistrés au début d'une chasse. Si vous savez ce que vous faites , cela peut aider si vous souhaitez ajuster le processus de chasse et de découverte de Kube-Hunter pour vos besoins.
Exemple:
kube-hunter --custom <HunterName1> <HunterName2>
L'activation de la chasse personnalisée supprime tous les chasseurs du processus de chasse, à l'exception des chasseurs de listes blanches donnés.
L'indicateur --custom lit une liste des noms de classe Hunters, afin de visualiser tous les noms de classe de Kube-Hunter, vous pouvez combiner le drapeau --raw-hunter-names avec le drapeau --list .
Exemple:
kube-hunter --active --list --raw-hunter-names
AVIS : En raison de la conception architecturale de Kube-Huner, les «chasseurs / classes de base» suivants s'inscrivent toujours (même lors de l'utilisation de la chasse personnalisée):
Il existe trois méthodes pour déployer Kube-Hunter:
Vous pouvez exécuter Kube-Hunter directement sur votre machine.
Vous aurez besoin de l'installation suivante:
Installer:
pip install kube-hunter
Courir:
kube-hunter
Clone le référentiel:
git clone https://github.com/aquasecurity/kube-hunter.git
Installez les dépendances du module. (Vous préférez peut-être le faire dans un environnement virtuel)
cd ./kube-hunter
pip install -r requirements.txt
Courir:
python3 kube_hunter
Si vous souhaitez utiliser Pyinstaller / Py2Exe, vous devez d'abord exécuter le script install_import.py.
Aqua Security maintient une version conteneurisée de Kube-Hunter chez aquasec/kube-hunter:aqua . Ce conteneur comprend ce code source, plus un plugin de reporting (source fermé) supplémentaire pour télécharger les résultats dans un rapport qui peut être consulté sur kube-huntter.aquasec.com. Veuillez noter que l'exécution du conteneur aquasec/kube-hunter et des données de téléchargement des rapports sont soumises à des termes et conditions supplémentaires.
Le dockerfile dans ce référentiel vous permet de créer une version conteneurisée sans le plugin de rapport.
Si vous exécutez un conteneur Kube-Hunter avec le réseau hôte, il pourra sonder toutes les interfaces de l'hôte:
docker run -it --rm --network host aquasec/kube-hunter
Remarque pour Docker pour Mac / Windows: sachez que l'hôte "pour Docker pour Mac ou Windows est la machine virtuelle dans laquelle Docker exécute des conteneurs. Par conséquent, la spécification --network host permet à Kube-Hunter l'accès aux interfaces réseau de cette machine virtuelle, plutôt qu'à celle de votre machine. Par défaut, Kube-Hunter s'exécute en mode interactif. Vous pouvez également spécifier l'option de balayage avec les paramètres décrits ci-dessus, par exemple
docker run --rm aquasec/kube-hunter --cidr 192.168.0.0/24
Cette option vous permet de découvrir ce que l'exécution d'un récipient malveillant peut faire / découvrir sur votre cluster. Cela donne une perspective sur ce qu'un attaquant pourrait faire s'il était en mesure de compromettre un pod, peut-être grâce à une vulnérabilité logicielle. Cela peut révéler beaucoup plus de vulnérabilités.
L'exemple de fichier job.yaml définit un travail qui exécutera Kube-Hunter dans un pod, en utilisant les paramètres par défaut d'accès au pod Kubernetes. (Vous pouvez vouloir modifier cette définition, par exemple pour s'exécuter en tant qu'utilisateur non root, ou s'exécuter dans un autre espace de noms.)
kubectl create -f ./job.yamlkubectl describe job kube-hunterkubectl logs <pod name> Pour lire les directives de contribution, cliquez ici
Ce référentiel est disponible sous la Licence 2.0 Apache.