Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
kube-hunter — 在Kubernetes集群中搜寻安全弱点 | Kitploit
工具/GitHubGitHub/aquasecurity/kube-hunter
漏洞扫描器容器安全渗透测试云安全错误配置
GitHubaquasecurity/kube-hunter

kube-hunter

在Kubernetes集群中搜寻安全弱点

查看仓库
5.1k6112年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

注意

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 矩阵的集成感兴趣,继续阅读

kube-hunter 演示视频

目录

  • 目录
    • Kubernetes ATT&CK 矩阵
    • 狩猎
      • 我应该在何处运行 kube-hunter?
      • 扫描选项
      • 认证
      • 主动狩猎
      • 测试列表
      • 节点映射
      • 输出
      • 分发
    • 高级用法
      • Azure 快速扫描
      • 自定义狩猎
    • 部署
      • 在机器上
        • 先决条件
          • 使用 pip 安装
          • 从源码运行
      • 容器
      • Pod
    • 贡献
    • 许可证

Kubernetes ATT&CK 矩阵

kube-hunter 现在支持 Kubernetes ATT&CK 矩阵的新格式。 虽然 kube-hunter 的漏洞是一组旨在模拟集群内部(或外部)攻击者的创造性技术集合, 但 Mitre 的 ATT&CK 定义了更通用的标准化技术类别。

你可以将 kube-hunter 的漏洞视为攻击者的小步骤,这些步骤遵循着他所追求的更大技术轨迹。 kube-hunter 的大多数猎手和漏洞都可以紧密地归入这些技术之下,这就是为什么我们转而遵循矩阵标准。

一些我们无法映射到 Mitre 技术的 kube-hunter 漏洞,将以 General 关键字作为前缀 kube-hunter

狩猎

我应该在哪里运行 kube-hunter?

有三种不同的运行 kube-hunter 的方式,每种方式都提供了不同的方法来检测集群中的弱点:

在任何机器上(包括你的笔记本电脑)运行 kube-hunter,选择远程扫描并提供你的 Kubernetes 集群的 IP 地址或域名。这将让你从攻击者的视角观察你的 Kubernetes 设置。

你可以直接在集群中的一台机器上运行 kube-hunter,并选择探测所有本地网络接口的选项。

你也可以在集群内的一个 Pod 中运行 kube-hunter。这可以表明如果你的一个应用程序 Pod 被攻陷(例如通过软件漏洞),你的集群将会有多暴露。(使用 --pod 标志)

扫描选项

首先检查这些 先决条件。

默认情况下,kube-hunter 会打开一个交互式会话,你可以在其中选择以下扫描选项之一。你也可以从命令行手动指定扫描选项。以下是可用选项:

  1. 远程扫描

    要指定远程机器进行狩猎,请选择选项 1 或使用 --remote 选项。示例: kube-hunter --remote some.node.com

  2. 接口扫描

    要指定接口扫描,你可以使用 --interface 选项(这将扫描机器上的所有网络接口)。示例: kube-hunter --interface

  3. 网络扫描

    要指定特定的 CIDR 进行扫描,请使用 --cidr 选项。示例: kube-hunter --cidr 192.168.0.0/24

  4. Kubernetes 节点自动发现

    设置 --k8s-auto-discover-nodes 标志,查询 Kubernetes 以获取集群中的所有节点,然后尝试扫描它们。默认情况下,它将使用 集群内配置 连接到 Kubernetes API。如果你想使用明确的 kubeconfig 文件,请设置 --kubeconfig /location/of/kubeconfig/file。

    另外请注意,在使用 --pod 模式时,这总是会执行。

认证

为了模拟早期阶段的攻击者,kube-hunter 在狩猎过程中不需要认证。

  • 模拟身份 - 你可以通过使用 --service-account-token 标志手动传递服务账户密钥的 JWT Bearer 令牌,为 kube-hunter 提供特定的服务账户令牌以在狩猎中使用。

    示例:

    root@kitploit:~
    $ kube-hunter --active --service-account-token eyJhbGciOiJSUzI1Ni...
    
  • 当使用 --pod 标志运行时,kube-hunter 使用 挂载到 Pod 内部 的服务账户令牌来认证它在狩猎过程中发现的服务。

    • 如果指定了 --service-account-token 标志,当作为 Pod 运行时,该标志具有更高优先级。

主动狩猎

主动狩猎是一个选项,启用后 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 这将输出所有 kube-hunter 发现的 Kubernetes 节点。

输出

要控制日志记录,你可以使用 --log 选项指定日志级别。示例: kube-hunter --active --log WARNING 可用的日志级别有:

  • DEBUG
  • INFO(默认)
  • WARNING

分发

默认情况下,报告会发送到 stdout,但你可以使用 --dispatch 选项指定不同的方法。示例: kube-hunter --report json --dispatch http 可用的分发方法有:

  • stdout(默认)
  • http(要进行配置,请设置以下环境变量:)
    • KUBEHUNTER_HTTP_DISPATCH_URL(默认为:https://localhost)
    • KUBEHUNTER_HTTP_DISPATCH_METHOD(默认为:POST)

高级用法

Azure 快速扫描

当在 Azure 或 AWS 环境中作为 Pod 运行时,kube-hunter 会从实例元数据服务获取子网。自然,这使得发现过程需要更长时间。 要硬限制子网扫描到 /24 CIDR,请使用 --quick 选项。

自定义狩猎

自定义狩猎使高级用户能够控制哪些猎手在狩猎开始时注册。 如果你知道自己在做什么,这可以帮助你根据需要调整 kube-hunter 的狩猎和发现过程。

示例:

root@kitploit:~
kube-hunter --custom <HunterName1> <HunterName2>

启用自定义狩猎会将所有猎手从狩猎过程中移除,只保留给定的白名单猎手。

--custom 标志读取一个猎手类名列表。要查看所有 kube-hunter 的类名,你可以将 --raw-hunter-names 标志与 --list 标志结合使用。

示例:

root@kitploit:~
kube-hunter --active --list --raw-hunter-names

注意:由于 kube-hunter 的架构设计,以下“核心猎手/类”将始终注册(即使在使用自定义狩猎时):

  • HostDiscovery
    • 根据给定配置为狩猎生成 IP 地址
    • 使用云元数据 API 自动发现子网
  • FromPodHostDiscovery
    • 通过使用基于 Pod 的环境技术自动发现狩猎的攻击面 IP 地址
    • 使用云元数据 API 自动发现子网
  • PortDiscovery
    • 对给定 IP 地址进行端口扫描,以查找已知的 Kubernetes 服务端口
  • Collector
    • 收集发现的漏洞和开放服务,用于将来的报告
  • StartedInfo
    • 打印开始消息
  • SendFullReport
    • 根据给定配置分发报告

部署

有三种部署 kube-hunter 的方法:

在机器上

你可以直接在机器上运行 kube-hunter。

先决条件

你需要安装以下内容:

  • python 3.x
  • pip
使用 pip 安装

安装:

root@kitploit:~
pip install kube-hunter

运行:

root@kitploit:~
kube-hunter
从源码运行

克隆仓库:

root@kitploit:~
git clone https://github.com/aquasecurity/kube-hunter.git

安装模块依赖项。(你可能更喜欢在虚拟环境中执行此操作)

root@kitploit:~
cd ./kube-hunter
pip install -r requirements.txt

运行:

root@kitploit:~
python3 kube_hunter

如果你想使用 pyinstaller/py2exe,需要首先运行 install_imports.py 脚本。

容器

Aqua Security 维护着 kube-hunter 的容器化版本 aquasec/kube-hunter:aqua。该容器包含此源代码,外加一个额外的(闭源)报告插件,用于将结果上传到可在 kube-hunter.aquasec.com 查看的报告。请注意,运行 aquasec/kube-hunter 容器并上传报告数据需遵守额外的条款和条件。

此仓库中的 Dockerfile 允许你构建一个不带报告插件的容器化版本。

如果你使用主机网络运行 kube-hunter 容器,它将能够探测主机上的所有接口:

docker run -it --rm --network host aquasec/kube-hunter

关于 Docker for Mac/Windows 的说明: 请注意,Docker for Mac 或 Windows 的“主机”是运行容器的 VM。因此指定 --network host 允许 kube-hunter 访问该 VM 的网络接口,而不是你机器的网络接口。 默认情况下,kube-hunter 以交互模式运行。你也可以使用上述描述的参数指定扫描选项,例如:

docker run --rm aquasec/kube-hunter --cidr 192.168.0.0/24

Pod

此选项让你能够发现运行恶意容器在你的集群上可以做什么/发现什么。这提供了攻击者如果通过软件漏洞能够攻陷一个 Pod 可能做什么的视角。这可能会揭示出显著更多的漏洞。

示例 job.yaml 文件定义了一个 Job,该 Job 将使用默认的 Kubernetes Pod 访问设置在 Pod 中运行 kube-hunter。(你可能希望修改此定义,例如以非 root 用户身份运行,或在不同的命名空间中运行。)

  • 使用 kubectl create -f ./job.yaml 运行 Job
  • 使用 kubectl describe job kube-hunter 查找 Pod 名称
  • 使用 kubectl logs <pod name> 查看测试结果

贡献

要阅读贡献指南, 请点击此处

许可证

此仓库基于 Apache License 2.0 提供。

下载工具