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
要查看主动狩猎测试和被动: 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获得。