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 <p align="left"> <img src="https://raw.githubusercontent.com/cyberark/kubesploit/assets/1.5x/[email protected]_tiny.jpg?raw=true" height="30%" width="30%"> </p> 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](https://github.com/Ne0nd0g/merlin) de [Russel Van Tuyl (@Ne0nd0g)](https://github.com/Ne0nd0g). ## Nuestra Motivación 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](https://github.com/cyberark/KubiScan) y [kubeletctl](https://github.com/cyberark/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](https://github.com/Ne0nd0g/merlin), escrito por [Russel Van Tuyl (@Ne0nd0g)](https://github.com/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. ## Novedades Dado que la infraestructura de C&C y del agente ya estaba realizada por [Merlin](https://github.com/Ne0nd0g/merlin), integramos el [Intérprete de Go ("Yaegi")](https://github.com/traefik/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](https://github.com/cyberark/kubeletctl) que incluye las siguientes opciones: - Escaneo de contenedores con RCE - Escaneo de Pods y contenedores - Escaneo de tokens de todos los contenedores disponibles - Ejecución de comandos con múltiples 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** ## Inicio Rápido Hemos creado un [entorno de Kubernetes dedicado en KillerCoda](https://killercoda.com/cyberarklabs/scenario/kubesploit) 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 & ```  ## Compilación 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](https://github.com/traefik/yaegi/tree/v0.14.3#features). ### Compilación Rápida 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 ``` ### Dockerización 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](https://github.com/cyberark/kubesploit/blob/main/config.yaml). > nota al margen: asegúrate de vincular los puertos entre el host y el contenedor (el puerto predeterminado es `443` y también se puede configurar en config.yaml) ## Mitigaciones ### Reglas YARA Hemos creado reglas YARA que ayudarán a detectar binarios de Kubesploit. Las reglas están escritas en el archivo `kubesploit.yara`. ### Registro del Agente Cada módulo Go cargado en el agente se registra dentro de la máquina víctima. ### Mapa MITRE Hemos creado un mapa MITRE de los vectores de ataque utilizados por Kubesploit. <p align="center"> <img src="https://raw.githubusercontent.com/cyberark/kubesploit/assets/mitre_pic_full.png" height="90%" width="120%"> </p> ### Mitigación para los Módulos Para cada módulo que creamos, escribimos su descripción y cómo defenderse de él. Resumimos esto en el archivo [MITIGATION.md](https://github.com/cyberark/kubesploit/blob/main/MITIGATION.md). ## Contribuciones 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](https://github.com/cyberark/conjur-api-go/blob/master/CONTRIBUTING.md). ## Créditos Queremos agradecer a Russel Van Tuyl (@Ne0nd0g) por crear [Merlin](https://github.com/Ne0nd0g/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")](https://github.com/traefik/yaegi) que nos permitió ejecutar los módulos Golang en un agente remoto de manera sencilla. ## Licencia 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`](https://github.com/cyberark/kubesploit/blob/main/LICENSE). ## Comparte tus Pensamientos y Comentarios Para más comentarios, sugerencias o preguntas, puedes contactar a Eviatar Gerzi ([@g3rzi](https://twitter.com/g3rzi)) de CyberArk Labs o abrir un issue. Puedes encontrar más proyectos desarrollados por nosotros en https://github.com/cyberark/. [license-img]: https://img.shields.io/github/license/cyberark/kubesploit.svg [license]: https://raw.githubusercontent.com/cyberark/kubesploit/master/LICENSE [download]: https://img.shields.io/github/downloads/cyberark/kubesploit/total?logo=github