Kube-caçador não está mais sob desenvolvimento ativo. Se você estiver interessado em digitalizar clusters de Kubernetes quanto a vulnerabilidades conhecidas, recomendamos o uso de trivy. Especificamente, o Kubernetes de Trivy's Kubernetes digitaliza a digitalização de vulnerabilidades da KBOM. Saiba mais nos documentos curiosos.
Kube-caça caça por fraquezas de segurança em aglomerados de Kubernetes. A ferramenta foi desenvolvida para aumentar a conscientização e a visibilidade de problemas de segurança nos ambientes de Kubernetes. Você não deve executar o Kube-Hunter em um cluster Kubernetes que você não possui!
Run Kube-Hunter : Kube-Hunter está disponível como contêiner (Aquasec/Kube-Hunter) e também oferecemos um site em Kube-Hunter.aquasec.com, onde você pode se registrar on-line para receber um token que permite que você veja e compartilhe os resultados online. Você também pode executar o código do Python, conforme descrito abaixo.
Explore Vulnerabilidades : A base de conhecimento Kube-Hunter inclui artigos sobre vulnerabilidades e questões descobertas. Quando o Kube-Hunter relata um problema, ele mostrará seu vídeo (ID da vulnerabilidade) para que você possa procurar no KB em https://aquasecurity.github.io/kube-hunter/
Se você estiver interessado na integração do Kube-Hunter com o Kubernetes ATT & CK Matrix, continue lendo
Vídeo de demonstração de Kube-Hunter
O Kube-Hunter agora suporta o novo formato da matriz Kubernetes ATT e CK. Embora as vulnerabilidades de Kube-Hunter sejam uma coleção de técnicas criativas projetadas para imitar um invasor no cluster (ou fora dele), o ATT & CK da mitra define uma categorias padronizadas mais gerais de técnicas para fazê-lo.
Você pode pensar nas vulnerabilidades Kube-Hunter como pequenos passos para um atacante, que segue a trilha de uma técnica mais geral que ele buscaria. A maioria dos caçadores e vulnerabilidades de Kube-Hunter pode se enquadrar de perto nessas técnicas, por isso que nos mudamos para seguir o padrão Matrix.
Algumas vulnerabidades de caçador de kube que não poderíamos mapear para a técnica de miter, são prefixadas com a palavra-chave General 
Existem três maneiras diferentes de executar o Kube-Hunter, cada uma fornecendo uma abordagem diferente para detectar fraquezas em seu cluster:
Execute Kube-Hunter em qualquer máquina (incluindo o seu laptop), selecione Digitalização remota e forneça o endereço IP ou o nome de domínio do seu cluster Kubernetes. Isso lhe dará uma visão de atacantes da sua configuração de Kubernetes.
Você pode executar o Kube-Hunter diretamente em uma máquina no cluster e selecionar a opção para investigar todas as interfaces de rede local.
Você também pode executar o Kube-Hunter em uma vagem dentro do cluster. Isso indica como seu cluster seria exposto se um dos seus pods de aplicativo estivesse comprometido (por meio de uma vulnerabilidade de software, por exemplo). ( --pod Flag )
Primeiro, verifique esses pré-requisitos .
Por padrão, o Kube-Hunter abrirá uma sessão interativa, na qual você poderá selecionar uma das seguintes opções de varredura. Você também pode especificar a opção de varredura manualmente a partir da linha de comando. Estas são suas opções:
Para especificar máquinas remotas para caçar, selecione a opção 1 ou use a opção --remote . Exemplo: kube-hunter --remote some.node.com
Para especificar a digitalização da interface, você pode usar a opção --interface (isso digitalizará todas as interfaces de rede da máquina). Exemplo: kube-hunter --interface
Para especificar um CIDR específico para digitalizar, use a opção --cidr . Exemplo: kube-hunter --cidr 192.168.0.0/24
Set --k8s-auto-discover-nodes sinaliza para consultar o Kubernetes para todos os nós no cluster e, em seguida, tente digitalizar todos eles. Por padrão, ele usará a configuração em cluster para conectar-se à API Kubernetes. Se você quiser usar um arquivo kubeconfig explícito, set --kubeconfig /location/of/kubeconfig/file .
Observe também que isso sempre é feito ao usar o modo --pod .
Para imitar um atacante em seus estágios iniciais, o Kube-Hunter não requer autenticação para a caçada.
PERSPOSTE -você pode fornecer ao Kube-Hunter um token de conta de serviço específico para usar ao caçar, passando manualmente o token do portador da JWT do segredo da conta de serviço com a bandeira --service-account-token .
Exemplo:
$ kube-hunter --active --service-account-token eyJhbGciOiJSUzI1Ni... Ao executar com --pod Sinalizador, o Kube-Hunter usa o token da conta de serviço montado dentro do pod para se autenticar para os serviços encontrados durante a caça.
--service-account-token Tooked Sinaliza prioridade ao executar como uma vagemA caça ativa é uma opção na qual o Kube-Hunter explorará as vulnerabilidades que encontra, para explorar para outras vulnerabilidades. A principal diferença entre caça normal e ativa é que uma caçada normal nunca mudará o estado do cluster, enquanto a caça ativa pode potencialmente fazer operações de mudança de estado no cluster, o que pode ser prejudicial .
Por padrão, o Kube-Hunter não faz uma caça ativa. Para caçar um cluster ativo, use o sinalizador --active . Exemplo: kube-hunter --remote some.domain.com --active
Você pode ver a lista de testes com a opção --list : Exemplo: kube-hunter --list
Para ver os testes de caça ativos e passivos: kube-hunter --list --active
Para ver apenas um mapeamento da rede de nós, execute com a opção --mapping . Exemplo: kube-hunter --cidr 192.168.0.0/24 --mapping Isso produzirá todos os nós do Kubernetes que Kube-Hunter encontrou.
Para controlar o log, você pode especificar um nível de log, usando a opção --log . Exemplo: kube-hunter --active --log WARNING Os níveis de log disponíveis são:
Por padrão, o relatório será despachado para stdout , mas você pode especificar métodos diferentes usando a opção --dispatch . Exemplo: kube-hunter --report json --dispatch http Os métodos de expedição disponíveis são:
Ao executar como um pod em um ambiente do Azure ou AWS , o Kube-Hunter buscar sub-redes do serviço de metadados da instância. Naturalmente, isso faz com que o processo de descoberta demore mais tempo. Para a digitalização de sub -rede hardlimit para A /24 CIDR, use a opção --quick .
A caça personalizada permite que os usuários avançados tenham controle sobre o que os caçadores são registrados no início de uma caçada. Se você souber o que está fazendo , isso pode ajudar se deseja ajustar o processo de caça e descoberta de Kube-Hunter para suas necessidades.
Exemplo:
kube-hunter --custom <HunterName1> <HunterName2>
A habilitação de caça personalizada remove todos os caçadores do processo de caça, exceto os caçadores de permissões.
A bandeira --custom lê uma lista de nomes de classes de caçadores, para visualizar todos os nomes de classe do Kube-Hunter, você pode combinar a bandeira --raw-hunter-names com a bandeira --list .
Exemplo:
kube-hunter --active --list --raw-hunter-names
AVISO : Devido ao projeto arquitetônico de Kube-Huner, os seguintes "caçadores/classes" sempre se registrarão (mesmo ao usar a caça personalizada):
Existem três métodos para implantar o Kube-Hunter:
Você pode executar o Kube-Hunter diretamente em sua máquina.
Você precisará do seguinte instalado:
Instalar:
pip install kube-hunter
Correr:
kube-hunter
Clone o repositório:
git clone https://github.com/aquasecurity/kube-hunter.git
Instale dependências do módulo. (Você pode preferir fazer isso dentro de um ambiente virtual)
cd ./kube-hunter
pip install -r requirements.txt
Correr:
python3 kube_hunter
Se você deseja usar o PyInstaller/PY2EXE, você precisa primeiro executar o script install_imports.py.
A Aqua Security mantém uma versão em contêiner do Kube-Hunter no aquasec/kube-hunter:aqua . Este contêiner inclui esse código-fonte, além de um plug-in adicional de relatório (de código fechado) para fazer upload de resultados em um relatório que pode ser visualizado em kube-hunter.aquasec.com. Observe que a execução dos dados de contêiner aquasec/kube-hunter e upload de relatórios está sujeita a termos e condições adicionais.
O DockerFile neste repositório permite criar uma versão em contêiner sem o plug -in de relatório.
Se você executar o contêiner Kube-Hunter com a rede host, ele poderá investigar todas as interfaces do host:
docker run -it --rm --network host aquasec/kube-hunter
NOTA PARA O DOCKER PARA MAC/WINDONES: Esteja ciente de que o "host" do Docker para Mac ou Windows é a VM em que o Docker executa os contêineres dentro. Portanto, a especificação --network host permite que o Kube-Hunter acesso às interfaces de rede dessa VM, em vez das da sua máquina. Por padrão, o Kube-Hunter é executado no modo interativo. Você também pode especificar a opção de digitalização com os parâmetros descritos acima, por exemplo,
docker run --rm aquasec/kube-hunter --cidr 192.168.0.0/24
Esta opção permite descobrir o que a execução de um contêiner malicioso pode fazer/descobrir em seu cluster. Isso dá uma perspectiva sobre o que um invasor poderia fazer se pudesse comprometer um pod, talvez através de uma vulnerabilidade de software. Isso pode revelar significativamente mais vulnerabilidades.
O arquivo de exemplo job.yaml (Você pode modificar essa definição, por exemplo, para executar como usuário sem raiz ou executar em um espaço de nome diferente.)
kubectl create -f ./job.yamlkubectl describe job kube-hunterkubectl logs <pod name> Para ler as diretrizes de contribuição, clique aqui
Este repositório está disponível no Apache License 2.0.