Kubesploit é um servidor de Comando & Controle HTTP/2 multiplataforma de pós-exploração e agente escrito em Golang, focado em ambientes conteinerizados.
Kubesploit é um servidor e agente multiplataforma de Comando e Controle HTTP/2 pós-exploração dedicado a ambientes conteinerizados escrito em Golang e construído sobre o projeto Merlin por Russel Van Tuyl (@Ne0nd0g).
Ao pesquisar Docker e Kubernetes, notamos que a maioria das ferramentas disponíveis atualmente tem como objetivo a varredura passiva de vulnerabilidades no cluster, e há falta de cobertura de vetores de ataque mais complexos.
Elas podem permitir que você veja o problema, mas não o explore. É importante executar o exploit para simular um ataque real que será usado para determinar a resiliência corporativa na rede.
Ao executar um exploit, ele pratica o gerenciamento de eventos cibernéticos da organização, o que não acontece ao escanear problemas no cluster.
Pode ajudar a organização a aprender como operar quando ataques reais acontecem, ver se seu outro sistema de detecção funciona conforme o esperado e quais mudanças devem ser feitas.
Queríamos criar uma ferramenta ofensiva que atendesse a esses requisitos.
Mas tínhamos outra razão para criar essa ferramenta. Já tínhamos duas ferramentas de código aberto (KubiScan e kubeletctl) relacionadas ao Kubernetes, e tínhamos uma ideia para mais. Em vez de criar um projeto para cada uma, pensamos que seria melhor criar uma nova ferramenta que centralizasse as novas ferramentas, e foi assim que o Kubesploit foi criado.
Procuramos um código aberto que fornecesse o trabalho pesado para um sistema multiplataforma, e encontramos o Merlin, escrito por Russel Van Tuyl (@Ne0nd0g), que era adequado para nós.
Nosso objetivo principal é contribuir para aumentar a conscientização sobre a segurança de ambientes conteinerizados e melhorar as mitigações implementadas nas várias redes. Tudo isso capturado através de um framework que fornece as ferramentas apropriadas para o trabalho das equipes de PT e Red Teamers durante suas atividades nesses ambientes. Usar essas ferramentas ajudará você a estimar os pontos fortes desses ambientes e fazer as mudanças necessárias para protegê-los.
Como a infraestrutura de C&C e agente já foi feita pelo Merlin, integramos o interpretador Go ("Yaegi") para poder executar código Golang do servidor para o agente.
Isso nos permitiu escrever nossos módulos em Golang, fornecer mais flexibilidade nos módulos e carregar dinamicamente novos módulos.
É um projeto em andamento, e planejamos adicionar mais módulos relacionados ao Docker e Kubernetes no futuro.
Os módulos atualmente disponíveis são:
Escape de contêiner usando montagem
Escape de contêiner usando docker.sock
Escape de contêiner usando o exploit CVE-2019-5736
Escanear vulnerabilidades conhecidas do cluster Kubernetes
Varredura de portas com foco em serviços Kubernetes
Varredura de serviços Kubernetes a partir do contêiner
kubeletctl leve contendo as seguintes opções:
Escape de cGroup
Escape de módulo do kernel
Escape de var log
Deepce: enumeração Docker (projeto de código aberto integrado como módulo)
Teste de vulnerabilidade: verifica a quais exploits do kubesploit seu contêiner é vulnerável
Para informações detalhadas sobre os módulos, consulte a página WiKi
Criamos um ambiente Kubernetes dedicado no KillerCoda para você experimentar o Kubesploit.
É uma simulação completa com um conjunto completo de instruções automatizadas sobre como usar o Kubesploit. Encorajamos você a explorá-la.
Execute o servidor:
./kubesploitServer
Execute o agente:
./agent -url https://<server_ip>:443 &

Para compilar este projeto, execute o comando make na pasta raiz.
NOTA: Atualmente você precisará usar Golang 1.18 ou Go 1.19 (as duas últimas versões principais) com base nos requisitos de Golang que o traefik/yaegi v0.14.3 possui.
Para executar uma compilação rápida para Linux, execute o seguinte:
export PATH=$PATH:/usr/local/go/bin
go build -o agent cmd/merlinagent/main.go
go build -o server cmd/merlinserver/main.go
Para executar o servidor usando um contêiner, você precisa fazer o servidor Kubesploit ouvir na interface 0.0.0.0 (e não 127.0.0.1).
Você pode atualizar o campo de interface no config.yaml.
nota lateral: certifique-se de vincular as portas entre o host e o contêiner (a porta padrão é
443e também pode ser configurada no config.yaml)
Criamos regras YARA que ajudarão a capturar binários do Kubesploit. As regras estão escritas no arquivo kubesploit.yara.
Cada módulo Go carregado no agente está sendo gravado dentro da máquina vítima.
Criamos um mapa MITRE dos vetores de ataque usados pelo Kubesploit.
Para cada módulo que criamos, escrevemos sua descrição e como se defender dele.
Resumimos isso no arquivo MITIGATION.md.
Aceitamos contribuições de todos os tipos para este repositório.
Para instruções sobre como começar e descrições
de nossos fluxos de trabalho de desenvolvimento, consulte nosso guia de contribuição.
Queremos agradecer a Russel compression Van Tuyl (@Ne0nd0g) por criar o Merlin como um código aberto que nos permitiu construir o Kubesploit sobre ele.
Também queremos agradecer à Traefik Labs (@traefik) por criar o interpretador Go ("Yaegi") que nos permitiu executar os módulos Golang em um agente remoto facilmente.
Copyright (c) 2021 CyberArk Software Ltd. Todos os direitos reservados.
Este repositório está licenciado sob a Licença GPL-3.0.
Para o texto completo da licença, veja LICENSE.
Para mais comentários, sugestões ou perguntas, você pode contatar Eviatar Gerzi (@g3rzi) da CyberArk Labs ou abrir uma issue. Você pode encontrar mais projetos desenvolvidos por nós em https://github.com/cyberark/.