Kube-Hunter ya no está bajo desarrollo activo. Si está interesado en escanear clústeres de Kubernetes para vulnerabilidades conocidas, recomendamos usar Trivy. Específicamente, el escaneo de configuración errónea de Kubernetes de Trivy y el escaneo de vulnerabilidad de KBOM. Aprenda más en los documentos trivados.
Kube-Hunter busca debilidades de seguridad en los grupos de Kubernetes. La herramienta se desarrolló para aumentar la conciencia y la visibilidad de los problemas de seguridad en los entornos de Kubernetes. ¡No debes ejecutar Kube-Hunter en un clúster de Kubernetes que no tienes!
Ejecutar Kube-Hunter : Kube-Hunter está disponible como contenedor (Aquasec/Kube-Hunter), y también ofrecemos un sitio web en Kube-Hunter.aQuasec.com, donde puede registrarse en línea para recibir un token que le permite ver y compartir los resultados en línea. También puede ejecutar el código Python usted mismo como se describe a continuación.
Explore las vulnerabilidades : la base de conocimiento de Kube-Hunter incluye artículos sobre vulnerabilidades y problemas descubiertos. Cuando Kube-Hunter informa un problema, mostrará su video (ID de vulnerabilidad) para que pueda buscarlo en el KB en https://aquasecurity.github.io/kube-hunter/
Si está interesado en la integración de Kube-Hunter con la matriz Kubernetes ATT y CK, continúa leyendo
Video de demostración de Kube-Hunter
Kube-Hunter ahora admite el nuevo formato de Kubernetes ATT & CK Matrix. Si bien las vulnerabilidades del cazador de Kube son una colección de técnicas creativas diseñadas para imitar a un atacante en el clúster (o fuera de él) el ATT & CK de MITER define una categorías estandarizadas más generales de técnicas para hacerlo.
Puedes pensar en las vulnerabilidades de Kube-Hunter como pequeños pasos para un atacante, lo que sigue la pista de una técnica más general a la que apuntaría. La mayoría de los cazadores y vulnerabilidades de Kube-Hunter pueden caer de cerca en esas técnicas, por eso nos movimos para seguir el estándar de Matrix.
Algunas vulnerabidades de cazador de kube que no pudimos asignar a la técnica de inglete, tienen prefijo la palabra clave General
Hay tres formas diferentes de ejecutar Kube-Hunter, cada una proporcionando un enfoque diferente para detectar debilidades en su grupo:
Ejecute Kube-Hunter en cualquier máquina (incluida su computadora portátil), seleccione escaneo remoto y proporcione la dirección IP o el nombre de dominio de su clúster Kubernetes. Esto le dará una vista de atacantes de su configuración de Kubernetes.
Puede ejecutar Kube-Hunter directamente en una máquina en el clúster y seleccionar la opción de sondear todas las interfaces de red locales.
También puede ejecutar Kube-Hunter en una cápsula dentro del clúster. Esto indica cuán expuesto estaría su clúster si una de sus pods de aplicación se ve comprometida (a través de una vulnerabilidad de software, por ejemplo). ( --pod Flag )
Primero verifique estos requisitos previos .
Por defecto, Kube-Hunter abrirá una sesión interactiva, en la que podrá seleccionar una de las siguientes opciones de escaneo. También puede especificar la opción de escaneo manualmente desde la línea de comando. Estas son sus opciones:
Para especificar máquinas remotas para la caza, seleccione la opción 1 o use la opción --remote . Ejemplo: kube-hunter --remote some.node.com
Para especificar el escaneo de interfaz, puede usar la opción --interface (esto escaneará todas las interfaces de red de la máquina). Ejemplo: kube-hunter --interface
Para especificar un CIDR específico para escanear, use la opción --cidr . Ejemplo: kube-hunter --cidr 192.168.0.0/24
Establecer la bandera- --k8s-auto-discover-nodes para consultar Kubernetes para todos los nodos en el clúster, y luego intente escanearlos a todos. Por defecto, utilizará la configuración en clúster para conectarse a la API de Kubernetes. Si desea utilizar un archivo KubeConFig explícito, set --kubeconfig /location/of/kubeconfig/file .
También tenga en cuenta que esto siempre se hace cuando se usa el modo --pod .
Para imitar a un atacante en sus primeras etapas, Kube-Hunter no requiere autenticación para la caza.
Iguardar : puede proporcionar a Kube-Hunter un token de cuenta de servicio específico para usar al cazar pasando manualmente el token de portador de JWT del secreto de cuenta de servicio con la bandera --service-account-token .
Ejemplo:
$ kube-hunter --active --service-account-token eyJhbGciOiJSUzI1Ni... Cuando se ejecuta con la bandera --pod , Kube-Hunter usa el token de cuenta de servicio montado dentro del Pod para autenticar los servicios que encuentra durante la caza.
--service-account-token tiene prioridad cuando se ejecuta como PODLa caza activa es una opción en la que Kube-Hunter explotará las vulnerabilidades que encuentra, para explorar más vulnerabilidades. La principal diferencia entre la caza normal y activa es que una caza normal nunca cambiará el estado del grupo, mientras que la caza activa puede realizar operaciones que cambian el estado en el grupo, lo que podría ser dañino .
Por defecto, Kube-Hunter no realiza caza activa. Para cazar activos un clúster, use la bandera --active . Ejemplo: kube-hunter --remote some.domain.com --active
Puede ver la lista de pruebas con la opción --list : Ejemplo: kube-hunter --list
Para ver pruebas de caza activas y pasivas: kube-hunter --list --active
Para ver solo una mapeo de la red de su nodo, ejecute con la opción --mapping . Ejemplo: kube-hunter --cidr 192.168.0.0/24 --mapping esto generará todos los nodos Kubernetes que Kube-Hunter ha encontrado.
Para controlar el registro, puede especificar un nivel de registro, utilizando la opción --log . Ejemplo: kube-hunter --active --log WARNING de log son:
De manera predeterminada, el informe se enviará a stdout , pero puede especificar diferentes métodos utilizando la opción --dispatch . Ejemplo: kube-hunter --report json --dispatch http Los métodos de envío disponibles son:
Cuando se ejecuta como una cápsula en un entorno Azure o AWS , Kube-Hunter obtendrá subredes del servicio de metadatos de instancia. Naturalmente, esto hace que el proceso de descubrimiento tome más tiempo. Para escanear subred de hardlimit a A /24 CIDR, use la opción --quick .
La caza personalizada permite a los usuarios avanzados tener control sobre lo que los cazadores se registran al comienzo de una caza. Si sabe lo que está haciendo , esto puede ayudar si desea ajustar el proceso de caza y descubrimiento de Kube-Hunter para sus necesidades.
Ejemplo:
kube-hunter --custom <HunterName1> <HunterName2>
Permitir la caza personalizada elimina a todos los cazadores del proceso de caza, excepto los cazadores blancos dados.
La bandera --custom lee una lista de nombres de clases de cazadores, para ver todos los nombres de clase de Kube-Hunter, puede combinar la bandera --raw-hunter-names con la bandera --list .
Ejemplo:
kube-hunter --active --list --raw-hunter-names
AVISO : Debido al diseño arquitectónico de Kube-Huner, los siguientes "cazadores/clases de núcleo" siempre se registrarán (incluso cuando se use la caza personalizada):
Hay tres métodos para implementar Kube-Hunter:
Puede ejecutar Kube-Hunter directamente en su máquina.
Necesitará lo siguiente instalado:
Instalar:
pip install kube-hunter
Correr:
kube-hunter
Clon el repositorio:
git clone https://github.com/aquasecurity/kube-hunter.git
Instalar dependencias del módulo. (Puede preferir hacer esto dentro de un entorno virtual)
cd ./kube-hunter
pip install -r requirements.txt
Correr:
python3 kube_hunter
Si desea usar PyInstaller/Py2exe, primero debe ejecutar el script install_imports.py.
Aqua Security mantiene una versión contenedora de Kube-Hunter en aquasec/kube-hunter:aqua . Este contenedor incluye este código fuente, más un complemento de informes adicional (de código cerrado) para cargar resultados en un informe que se puede ver en kube-hunter.aquasec.com. Tenga en cuenta que ejecutar el contenedor aquasec/kube-hunter y la carga de los informes de los informes están sujetos a términos y condiciones adicionales.
El DockerFile en este repositorio le permite crear una versión contenedorizada sin el complemento de informes.
Si ejecuta Kube-Hunter Container con la red host, podrá sondear todas las interfaces en el host:
docker run -it --rm --network host aquasec/kube-hunter
Nota para Docker para Mac/Windows: tenga en cuenta que el "host" para Docker para Mac o Windows es la VM que Docker ejecuta contenedores dentro. Por lo tanto, la especificación --network host permite el acceso a Kube-Hunter a las interfaces de red de esa VM, en lugar de las de su máquina. Por defecto, Kube-Hunter se ejecuta en modo interactivo. También puede especificar la opción de escaneo con los parámetros descritos anteriormente, por ejemplo,
docker run --rm aquasec/kube-hunter --cidr 192.168.0.0/24
Esta opción le permite descubrir qué puede hacer/descubrir un contenedor malicioso en su clúster. Esto da una perspectiva sobre lo que un atacante podría hacer si pudieran comprometer una cápsula, tal vez a través de una vulnerabilidad de software. Esto puede revelar significativamente más vulnerabilidades.
El archivo de ejemplo job.yaml define un trabajo que ejecutará Kube-Hunter en un POD, utilizando la configuración predeterminada de acceso de POD de Kubernetes. (Es posible que desee modificar esta definición, por ejemplo, para ejecutarse como un usuario no raíz o ejecutar en un espacio de nombres diferente).
kubectl create -f ./job.yamlkubectl describe job kube-hunterkubectl logs <pod name> Para leer las pautas de contribución, haga clic aquí
Este repositorio está disponible bajo la licencia Apache 2.0.