
Kubesploit est un serveur de Command & Control HTTP/2 et un agent post-exploitation multiplateforme écrit en Golang, axé sur les environnements conteneurisés.
Kubesploit est un serveur et agent de commande et contrôle HTTP/2 multi-plateforme dédié aux environnements conteneurisés, écrit en Golang et construit au-dessus du projet Merlin par Russel Van Tuyl (@Ne0nd0g).
Lors de nos recherches sur Docker et Kubernetes, nous avons remarqué que la plupart des outils disponibles aujourd'hui sont destinés à l'analyse passive des vulnérabilités du cluster, et qu'il y a un manque de couverture des vecteurs d'attaque plus complexes.
Ils peuvent vous permettre de voir le problème mais pas de l'exploiter. Il est important d'exécuter l'exploit pour simuler une attaque réelle qui sera utilisée pour déterminer la résilience de l'entreprise sur le réseau.
Lors de l'exécution d'un exploit, cela entraîne la gestion des cyber-événements de l'organisation, ce qui ne se produit pas lors de l'analyse des problèmes du cluster.
Cela peut aider l'organisation à apprendre comment réagir lors d'attaques réelles, à voir si ses autres systèmes de détection fonctionnent comme prévu et quels changements doivent être apportés.
Nous voulions créer un outil offensif qui répondrait à ces exigences.
Mais nous avions une autre raison de créer un tel outil. Nous avions déjà deux outils open-source (KubiScan et kubeletctl) liés à Kubernetes, et nous avions une idée pour d'autres. Au lieu de créer un projet pour chacun, nous avons pensé qu'il serait préférable de créer un nouvel outil qui centraliserait les nouveaux outils, et c'est ainsi que Kubesploit a été créé.
Nous avons cherché un open-source qui fournisse le travail lourd pour un système multi-plateforme, et nous avons trouvé Merlin, écrit par Russel Van Tuyl (@Ne0nd0g), qui nous convenait.
Notre objectif principal est de contribuer à sensibiliser à la sécurité des environnements conteneurisés et d'améliorer les mesures d'atténuation mises en œuvre dans les différents réseaux. Tout cela est capturé à travers un framework qui fournit les outils appropriés pour le travail des équipes de test d'intrusion et des Red Teamers lors de leurs activités dans ces environnements. L'utilisation de ces outils vous aidera à estimer les forces de ces environnements et à apporter les modifications nécessaires pour les protéger.
Comme l'infrastructure C&C et de l'agent était déjà réalisée par Merlin, nous avons intégré l'interpréteur Go ("Yaegi") pour pouvoir exécuter du code Golang du serveur vers l'agent.
Cela nous a permis d'écrire nos modules en Golang, d'offrir plus de flexibilité sur les modules et de charger dynamiquement de nouveaux modules.
C'est un projet en cours, et nous prévoyons d'ajouter d'autres modules liés à Docker et Kubernetes à l'avenir.
Les modules actuellement disponibles sont :
Évasion de conteneur via montage
Évasion de conteneur via docker.sock
Évasion de conteneur via exploit CVE-2019-5736
Scan des CVE connues du cluster Kubernetes
Scan de ports axé sur les services Kubernetes
Scan de services Kubernetes depuis l'intérieur du conteneur
kubeletctl léger contenant les options suivantes :
Évasion cGroup
Évasion du module kernel
Évasion par /var/log
Deepce : énumération Docker (projet open-source intégré en tant que module)
Test de vulnérabilité : vérification des exploits de kubesploit auxquels votre conteneur est vulnérable
Pour des informations détaillées sur les modules, consultez la page WiKi
Nous avons créé un environnement Kubernetes dédié sur KillerCoda pour que vous puissiez expérimenter Kubesploit.
C'est une simulation complète avec un ensemble complet d'instructions automatisées sur la façon d'utiliser Kubesploit. Nous vous encourageons à l'explorer.
Exécutez le serveur :
./kubesploitServer
Exécutez l'agent :
./agent -url https://<server_ip>:443 &

Pour construire ce projet, exécutez la commande make depuis le dossier racine.
NOTE : Actuellement, vous devez utiliser Golang 1.18 ou Go 1.19 (les 2 dernières versions majeures) en fonction des exigences de golang de traefik/yaegi v0.14.3.
Pour effectuer une construction rapide pour Linux, vous pouvez exécuter ce qui suit :
export PATH=$PATH:/usr/local/go/bin
go build -o agent cmd/merlinagent/main.go
go build -o server cmd/merlinserver/main.go
Afin d'exécuter le serveur en utilisant un conteneur, vous devez faire en sorte que le serveur Kubesploit écoute sur l'interface 0.0.0.0 (et non 127.0.0.1).
Vous pouvez mettre à jour le champ interface dans le config.yaml.
note : assurez-vous de lier les ports entre l'hôte et le conteneur (le port par défaut est
443et il peut également être configuré dans le config.yaml)
Nous avons créé des règles YARA qui aideront à détecter les binaires Kubesploit. Les règles sont écrites dans le fichier kubesploit.yara.
Chaque module Go chargé dans l'agent est enregistré sur la machine victime.
Nous avons créé une carte MITRE des vecteurs d'attaque utilisés par Kubesploit.
Pour chaque module que nous avons créé, nous avons écrit sa description et comment s'en défendre.
Nous résumons cela dans le fichier MITIGATION.md.
Nous accueillons toutes sortes de contributions à ce dépôt.
Pour des instructions sur la façon de commencer et des descriptions
de nos workflows de développement, veuillez consulter notre guide de contribution.
Nous tenons à remercier Russel Van Tuyl (@Ne0nd0g) d'avoir créé Merlin comme open-source qui nous a permis de construire Kubesploit par-dessus.
Nous remercions également Traefik Labs (@traefik) d'avoir créé l'interpréteur Go ("Yaegi") qui nous a permis d'exécuter facilement les modules Golang sur un agent distant.
Copyright (c) 2021 CyberArk Software Ltd. Tous droits réservés.
Ce dépôt est sous licence GPL-3.0.
Pour le texte complet de la licence, voir LICENSE.
Pour plus de commentaires, suggestions ou questions, vous pouvez contacter Eviatar Gerzi (@g3rzi) de CyberArk Labs ou ouvrir une issue. Vous pouvez trouver plus de projets développés par nous sur https://github.com/cyberark/.