Kubesploit es un servidor y agente de Comando y Control HTTP/2 multiplataforma de post-explotación escrito en Golang, centrado en entornos contenedorizados.
[![License][license-img]][license]
![Downloads][download]
Kubesploit es un servidor y agente de Comando y Control (C&C) HTTP/2 multiplataforma para post-explotación, diseñado específicamente para entornos contenerizados, escrito en Golang y construido sobre el proyecto Merlin de Russel Van Tuyl (@Ne0nd0g).
Mientras investigábamos Docker y Kubernetes, notamos que la mayoría de las herramientas disponibles hoy en día se centran en el escaneo pasivo de vulnerabilidades en el clúster, y existe una falta de cobertura de vectores de ataque más complejos. Pueden permitirte ver el problema pero no explotarlo. Es importante ejecutar el exploit para simular un ataque real que se utilizará para determinar la resiliencia corporativa a través de la red. Al ejecutar un exploit, se pondrá en práctica la gestión de eventos cibernéticos de la organización, algo que no ocurre cuando se escanean problemas del clúster. Puede ayudar a la organización a aprender cómo operar cuando ocurren ataques reales, comprobar si sus otros sistemas de detección funcionan como se espera y qué cambios se deben realizar. Queríamos crear una herramienta ofensiva que cumpliera con estos requisitos.
Pero teníamos otra razón para crear esta herramienta. Ya teníamos dos herramientas de código abierto (KubiScan y kubeletctl) relacionadas con Kubernetes, y teníamos una idea para más. En lugar de crear un proyecto para cada una, pensamos que sería mejor hacer una nueva herramienta que centralizara las nuevas, y así fue como nació Kubesploit.
Buscamos un proyecto de código abierto que proporcionara la base pesada para un sistema multiplataforma, y encontramos Merlin, escrito por Russel Van Tuyl (@Ne0nd0g), que nos resultó adecuado.
Nuestro objetivo principal es contribuir a aumentar la conciencia sobre la seguridad de los entornos contenerizados y mejorar las mitigaciones implementadas en las diversas redes. Todo esto se plasma a través de un framework que proporciona las herramientas adecuadas para el trabajo de los equipos de PT y Red Teamers durante sus actividades en estos entornos. El uso de estas herramientas te ayudará a evaluar las fortalezas de estos entornos y realizar los cambios necesarios para protegerlos.
Dado que la infraestructura de C&C y del agente ya estaba realizada por Merlin, integramos el Intérprete de Go ("Yaegi") para poder ejecutar código Golang desde el servidor hacia el agente. Esto nos permitió escribir nuestros módulos en Golang, proporcionar más flexibilidad en los módulos y cargar dinámicamente nuevos módulos. Es un proyecto en curso, y planeamos agregar más módulos relacionados con Docker y Kubernetes en el futuro.
Los módulos actualmente disponibles son:
Escape de contenedor mediante montaje
Escape de contenedor usando docker.sock
Escape de contenedor mediante el exploit CVE-2019-5736
Escaneo de CVEs conocidos en clústeres de Kubernetes
Escaneo de puertos con enfoque en servicios de Kubernetes
Escaneo de servicios de Kubernetes desde dentro del contenedor
Versión ligera de kubeletctl que incluye las siguientes opciones:
Escape de cGroup
Escape de módulo del kernel
Escape de Var log
Deepce: enumeración de Docker (proyecto de código abierto integrado como módulo)
Prueba de vulnerabilidad: verifica a qué exploits de kubesploit es vulnerable tu contenedor
Para obtener información detallada sobre los módulos, consulta la página de WiKi
Hemos creado un entorno de Kubernetes dedicado en KillerCoda para que experimentes con Kubesploit. Es una simulación completa con un conjunto de instrucciones automatizadas sobre cómo usar Kubesploit. Te animamos a explorarla.
Ejecuta el servidor:
./kubesploitServer
Ejecuta el agente:
./agent -url https://<ip_del_servidor>:443 &

Para compilar este proyecto, ejecuta el comando make desde la carpeta raíz.
NOTA: Actualmente necesitarás usar Golang 1.18 o Go 1.19 (las últimas 2 versiones principales) según los requisitos de golang de traefik/yaegi v0.14.3.
Para realizar una compilación rápida para Linux, puedes ejecutar lo siguiente:
export PATH=$PATH:/usr/local/go/bin
go build -o agent cmd/merlinagent/main.go
go build -o server cmd/merlinserver/main.go
Para ejecutar el servidor usando un contenedor, debes hacer que el servidor de Kubesploit escuche en la interfaz 0.0.0.0 (y no en 127.0.0.1).
Puedes actualizar el campo de interfaz en el archivo config.yaml.
nota al margen: asegúrate de vincular los puertos entre el host y el contenedor (el puerto predeterminado es
443y también se puede configurar en config.yaml)
Hemos creado reglas YARA que ayudarán a detectar binarios de Kubesploit. Las reglas están escritas en el archivo kubesploit.yara.
Cada módulo Go cargado en el agente se registra dentro de la máquina víctima.
Hemos creado un mapa MITRE de los vectores de ataque utilizados por Kubesploit.
Para cada módulo que creamos, escribimos su descripción y cómo defenderse de él.
Resumimos esto en el archivo MITIGATION.md.
Aceptamos contribuciones de todo tipo para este repositorio.
Para obtener instrucciones sobre cómo comenzar y descripciones
de nuestros flujos de trabajo de desarrollo, consulta nuestra guía de contribución.
Queremos agradecer a Russel Van Tuyl (@Ne0nd0g) por crear Merlin como un proyecto de código abierto que nos permitió construir Kubesploit sobre él.
También queremos agradecer a Traefik Labs (@traefik) por crear el Intérprete de Go ("Yaegi") que nos permitió ejecutar los módulos Golang en un agente remoto de manera sencilla.
Copyright (c) 2021 CyberArk Software Ltd. Todos los derechos reservados.
Este repositorio está bajo la licencia GPL-3.0.
Para ver el texto completo de la licencia, consulta LICENSE.
Para más comentarios, sugerencias o preguntas, puedes contactar a Eviatar Gerzi (@g3rzi) de CyberArk Labs o abrir un issue. Puedes encontrar más proyectos desarrollados por nosotros en https://github.com/cyberark/.