Kube-Hunterは、積極的な開発中ではなくなりました。既知の脆弱性のためにKubernetesクラスターをスキャンすることに興味がある場合は、Trivyを使用することをお勧めします。具体的には、TrivyのKubernetesのミス構成スキャンとKBOMの脆弱性スキャン。 Trivy Docsで詳細をご覧ください。
Kubernetesクラスターのセキュリティの弱点を求めて、Kube-Hunterは狩りをします。このツールは、Kubernetes環境でのセキュリティ問題に対する認識と可視性を高めるために開発されました。所有していないKubernetesクラスターでKube-Hunterを実行しないでください!
Kube-Hunterの実行:Kube-Hunterはコンテナ(Aquasec/Kube-Hunter)として利用できます。また、Kube-Hunter.Aquasec.comでWebサイトも提供しています。ここでは、オンラインでオンラインで登録して、オンラインで結果を確認して共有できるようにします。以下に説明するように、Pythonコードを自分で実行することもできます。
脆弱性の探索:Kube-Hunterの知識ベースには、発見可能な脆弱性と問題に関する記事が含まれています。 Kube-Hunterが問題を報告すると、VID(脆弱性ID)が表示されるため、https://aquasecurity.github.io/kube-hunter/でKBで調べることができます。
Kube-HunterのKubernetes att&ckマトリックスとの統合に興味がある場合は、読み続けます
Kube-Hunterデモビデオ
Kube-Hunterは、Kubernetes att&CKマトリックスの新しい形式をサポートするようになりました。 Kube-Hunterの脆弱性は、クラスター内の攻撃者を模倣するように設計された創造的なテクニックのコレクションですが、MiterのATT&CKは、より一般的な標準化されたカテゴリの技術を定義します。
Kube-Hunterの脆弱性は、攻撃者の小さなステップと考えることができます。これは、彼が目指すより一般的なテクニックの軌跡に従っています。 Kube-Hunterのハンターと脆弱性のほとんどは、これらのテクニックに密接に該当する可能性があるため、Matrix標準に従うために移動しました。
MITERテクニックにマッピングできなかったKube-Hunterの脆弱性には、 Generalキーワードが付いています
Kube-Hunterを実行するには3つの異なる方法があり、それぞれがクラスターの弱点を検出するための異なるアプローチを提供します。
任意のマシン(ラップトップを含む)でkube-hunterを実行し、リモートスキャンを選択し、KubernetesクラスターのIPアドレスまたはドメイン名を指定します。これにより、Kubernetesのセットアップの攻撃者と目の視野が得られます。
Kube-Hunterをクラスター内のマシンで直接実行し、すべてのローカルネットワークインターフェイスをプローブするオプションを選択できます。
クラスター内のポッドでKube-Hunterを実行することもできます。これは、アプリケーションポッドの1つが(たとえば、ソフトウェアの脆弱性を介して)侵害された場合、クラスターがどのように露出するかを示しています。 ( --podフラグ)
これらの前提条件を最初に確認してください。
デフォルトでは、Kube-Hunterはインタラクティブセッションを開きます。このセッションでは、次のスキャンオプションのいずれかを選択できます。コマンドラインからスキャンオプションを手動で指定することもできます。これらはあなたのオプションです:
狩猟用のリモートマシンを指定するには、オプション1を選択するか、 --remoteオプションを使用します。例: kube-hunter --remote some.node.com
インターフェイススキャンを指定するには、 --interfaceオプションを使用できます(これにより、すべてのマシンのネットワークインターフェイスをスキャンします)。例: kube-hunter --interface
スキャンする特定のCIDRを指定するには、 --cidrオプションを使用します。例: kube-hunter --cidr 192.168.0.0/24
ClusterのすべてのノードのKubernetesを照会するために、 --k8s-auto-discover-nodesフラグを作成し、それらをすべてスキャンしようとします。デフォルトでは、クラスター内の構成を使用してKubernetes APIに接続します。明示的なkubeconfigファイルを使用する場合は、 --kubeconfig /location/of/kubeconfig/fileを設定します。
また、これは--podモードを使用するときは常に実行されることに注意してください。
攻撃者を初期段階で模倣するために、Kube-Hunterは狩りの認証を必要としません。
ImprusiTe -Cube-Hunterは、サービスアクコーンの秘密のJWTベアラートークンを--service-account-tokenフラグで手動で渡すことで使用する特定のサービスアカウントトークンを提供できます。
例:
$ kube-hunter --active --service-account-token eyJhbGciOiJSUzI1Ni... --podフラグを使用して実行するとき、Kube-Hunterはポッド内に取り付けられたサービスアカウントトークンを使用して、狩り中に見つかったサービスに認証します。
--service-account-tokenフラグがポッドとして実行されると優先されますアクティブな狩猟は、Kube-Hunterが発見する脆弱性を活用し、さらなる脆弱性を探求するオプションです。通常の狩猟とアクティブな狩猟の主な違いは、通常の狩りがクラスターの状態を変えることは決してないということですが、アクティブな狩猟はクラスターで状態を変える操作を潜在的に行うことができることです。
デフォルトでは、Kube-Hunterはアクティブな狩猟を行いません。クラスターをアクティブに狩るには、 --activeフラグを使用します。例: kube-hunter --remote some.domain.com --active
--listオプション:例: kube-hunter --listを使用して、テストのリストを見ることができます
アクティブな狩猟テストとパッシブを見るために: kube-hunter --list --active
ノードネットワークのマッピングのみを確認するには、 --mappingオプションで実行します。例: kube-hunter --cidr 192.168.0.0/24 --mappingこれは、すべてのKubernetesノードKube-Hunterが見つけたすべての出力を出力します。
ロギングを制御するには、 --logオプションを使用して、ログレベルを指定できます。例: kube-hunter --active --log WARNING利用可能なログレベルは次のとおりです。
デフォルトでは、レポートはstdoutに発送されますが、 --dispatchオプションを使用してさまざまな方法を指定できます。例: kube-hunter --report json --dispatch http利用可能な発送方法は次のとおりです。
AzureまたはAWS環境でポッドとして実行するとき、Kube-Hunterはインスタンスメタデータサービスからサブネットを取得します。当然、これにより発見プロセスが時間がかかります。 A /24 CIDRにHardlimitサブネットスキャンに、 --quickオプションを使用します。
カスタムハンティングにより、高度なユーザーは、ハントの開始時にハンターが登録されるものを制御できるようになります。あなたが何をしているのか知っているなら、あなたがあなたのニーズに合わせてKube-Hunterの狩猟と発見プロセスを調整したいなら、これは役立ちます。
例:
kube-hunter --custom <HunterName1> <HunterName2>
カスタムハンティングを可能にすると、指定されたホワイトリストハンターを除き、すべてのハンターが狩猟プロセスから削除されます。
--customフラグは、Kube-Hunterのクラス名のすべてを表示するために、ハンタークラス名のリストを読み取ります。フラグ--raw-hunter-namesと--list Flagを組み合わせることができます。
例:
kube-hunter --active --list --raw-hunter-names
注意:Kube-Hunerの建築設計により、次の「コアハンター/クラス」は常に登録します(カスタムハンティングを使用している場合でも):
Kube-Hunterを展開するには3つの方法があります。
Kube-Hunterをマシンで直接実行できます。
次のインストールが必要です。
インストール:
pip install kube-hunter
走る:
kube-hunter
リポジトリをクローンします:
git clone https://github.com/aquasecurity/kube-hunter.git
モジュールの依存関係をインストールします。 (仮想環境でこれを行うことをお勧めします)
cd ./kube-hunter
pip install -r requirements.txt
走る:
python3 kube_hunter
pyinstaller/py2exeを使用する場合は、最初にinstall_imports.pyスクリプトを実行する必要があります。
Aqua Securityはaquasec/kube-hunter:aquaでKube-Hunterのコンテナ化バージョンを維持しています。このコンテナには、このソースコードに加えて、結果をアップロードするための追加(閉じたソース)レポートプラグインが含まれており、Kube-Hunter.Aquasec.comで表示できるレポートになります。 aquasec/kube-hunterコンテナを実行し、レポートのアップロードデータには追加の条件の対象となることに注意してください。
このリポジトリのDockerFileを使用すると、レポートプラグインなしでコンテナ化されたバージョンを構築できます。
ホストネットワークでKube-Hunterコンテナを実行すると、ホストのすべてのインターフェイスをプローブできます。
docker run -it --rm --network host aquasec/kube-hunter
Mac/Windows用のDockerの注: MacまたはWindows用のDockerの「ホスト」は、Dockerが内部でコンテナを実行するVMであることに注意してください。したがって、 --network hostを指定することで、マシンのネットワークインターフェイスではなく、そのVMのネットワークインターフェイスへのKube-Hunterアクセスが可能になります。デフォルトでは、Kube-Hunterはインタラクティブモードで実行されます。上記のパラメーターを使用してスキャンオプションを指定することもできます。
docker run --rm aquasec/kube-hunter --cidr 192.168.0.0/24
このオプションを使用すると、悪意のあるコンテナを実行することでクラスターで実行できる/発見できることを発見できます。これは、おそらくソフトウェアの脆弱性を通じて、攻撃者がポッドを妥協できた場合に何ができるかについての視点を与えます。これにより、より多くの脆弱性が明らかになる可能性があります。
job.yamlファイルの例は、デフォルトのKubernetes PODアクセス設定を使用して、ポッドでKube-Hunterを実行するジョブを定義します。 (この定義を変更したり、非ルートユーザーとして実行したり、別の名前空間で実行したりすることをお勧めします。)
kubectl create -f ./job.yamlでジョブを実行しますkubectl describe job kube-hunterkubectl logs <pod name>でテスト結果を表示します貢献ガイドラインを読むには、ここをクリックしてください
このリポジトリは、Apacheライセンス2.0で入手できます。