Kube-Hunter不再是積極發展的。如果您對掃描Kubernetes群集的已知漏洞感興趣,我們建議使用Trivy。具體而言,Trivy的Kubernetes錯誤配置掃描和KBOM脆弱性掃描。在Trivy文檔中了解更多信息。
Kube-Hunter在Kubernetes集群中尋找安全弱點。該工具的開發是為了提高Kubernetes環境中安全問題的知名度和可見性。您不應該在不擁有的Kubernetes群集上運行Kube-Hunter!
運行Kube-Hunter :Kube-Hunter可作為容器(Aquasec/Kube-Hunter)提供,我們還在kube-hunter.aquasec.com上提供網站,您可以在線註冊以接收令牌,讓您可以在線查看和在線共享結果。您還可以按照以下所述自己運行Python代碼。
探索漏洞:Kube-Hunter知識庫包括有關可發現漏洞和問題的文章。當Kube-Hunter報告一個問題時,它將顯示其VID(漏洞ID),因此您可以在https://aquasecurity.github.io/kube-hunter/中查找它。
如果您對Kube-Hunter與Kubernetes ATT&CK Matrix的集成感興趣,請繼續閱讀
Kube-Hunter演示視頻
Kube-Hunter現在支持Kubernetes ATT&CK Matrix的新格式。雖然Kube-Hunter的漏洞是一系列創意技術的集合,旨在模仿群集(或外部)中的攻擊者,但MITER的ATT&CK定義了更一般的標準化類別的技術類別。
您可以將Kube-Hunter脆弱性視為攻擊者的小步驟,該步驟跟踪了他目標更通用的技術。 Kube-Hunter的大多數獵人和漏洞都可以屬於這些技術,這就是為什麼我們採取遵循矩陣標準的原因。
我們無法將其映射到斜切技術的一些Kube-Hunter漏洞,並帶有General關鍵字
有三種不同的方法可以運行Kube-Hunter,每種方法提供了一種不同的方法來檢測群集中的弱點:
在任何機器(包括筆記本電腦)上運行Kube-Hunter,選擇遠程掃描,然後給出Kubernetes群集的IP地址或域名。這將為您提供Kubernetes設置的攻擊者視圖。
您可以直接在集群中的計算機上運行Kube-Hunter,然後選擇探測所有本地網絡接口的選項。
您也可以在集群中的吊艙中運行Kube-Hunter。這表明如果您的一個應用程序POD遭到損害(例如,通過軟件漏洞),您的群集將如何暴露。 ( --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
set --k8s-auto-discover-nodes標誌以查詢kubernetes中的所有節點,然後嘗試掃描所有節點。默認情況下,它將使用群集配置連接到Kubernetes API。如果您想使用明確的kubeconfig文件,請設置--kubeconfig /location/of/kubeconfig/file 。
另請注意,使用--pod模式時始終完成此操作。
為了模仿攻擊者的早期階段,Kube-Hunter不需要狩獵身份驗證。
模仿- 您可以通過手動通過--service-account-token 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 list
要查看主動狩獵測試和被動: kube-hunter --list --active
要僅查看節點網絡的映射,請使用--mapping選項運行。示例: kube-hunter --cidr 192.168.0.0/24 --mapping這將輸出所有Kubernetes Nodes Kube-Hunter都發現的。
要控制日誌記錄,您可以使用--log選項指定日誌級別。示例: kube-hunter --active --log WARNING可用日誌級別是:
默認情況下,該報告將被派往stdout ,但是您可以使用--dispatch選項指定不同的方法。示例: kube-hunter --report json --dispatch http可用調度方法是:
當在Azure或AWS環境中作為POD運行時,Kube-Hunter將從實例元數據服務中獲取子網。自然,這使發現過程需要更長的時間。要硬限制子網掃描到A /24 CIDR,請使用--quick選項。
自定義狩獵使高級用戶能夠控制狩獵開始時註冊的獵人。如果您知道自己在做什麼,那麼如果您想根據需要調整Kube-Hunter的狩獵和發現過程,這將有所幫助。
例子:
kube-hunter --custom <HunterName1> <HunterName2>
啟用定制狩獵可以從狩獵過程中刪除所有獵人,但給定的白名單除外。
--custom標誌讀取獵人班級名稱的列表,為了查看Kube-Hunter的所有類名稱,您可以將標誌--raw-hunter-names與--list標誌結合在一起。
例子:
kube-hunter --active --list --raw-hunter-names
注意:由於Kube-Huner的建築設計,以下“核心獵人/類”將始終註冊(即使使用自定義狩獵):
有三種部署Kube-Hunter的方法:
您可以直接在計算機上運行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.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允許Kube-Hunter訪問該VM的網絡接口,而不是計算機的網絡接口。默認情況下,Kube-Hunter以交互式模式運行。您還可以使用上述參數指定掃描選項
docker run --rm aquasec/kube-hunter --cidr 192.168.0.0/24
此選項使您可以發現運行惡意容器可以在群集上進行/發現的操作。這可以看出,如果攻擊者能夠通過軟件漏洞妥協pod,他們可以做什麼。這可能顯示出更多的脆弱性。
示例job.yaml文件定義了一個將使用默認的kubernetes pod訪問設置在吊艙中運行kube-hunter的作業。 (您可能希望修改此定義,例如以非root用戶的身份運行,或以不同的名稱空間運行。)
kubectl create -f ./job.yaml運行工作kubectl describe job kube-hunterkubectl logs <pod name> 要閱讀貢獻指南,請單擊此處
該存儲庫可根據Apache許可證2.0獲得。