DataDog/KubeHound

GitHub: DataDog/KubeHound

一款基于图理论的 Kubernetes 攻击路径自动计算与可视化分析工具,帮助安全团队从攻击者视角发现集群内的潜在威胁路径。

Stars: 946 | Forks: 62

# KubeHound

KubeHound

A Kubernetes attack graph tool allowing automated calculation of attack paths between assets in a cluster. ## 快速开始 ### 环境要求 运行 KubeHound 需要以下依赖项 + [Docker](https://docs.docker.com/engine/install/) `>= 19.03` + [Docker Compose](https://docs.docker.com/compose/compose-file/compose-versioning/) `V2` ### 安装 #### 通过 Release 安装 可以通过 [releases](https://github.com/DataDog/KubeHound/releases) 页面下载适用于 Linux / Windows / Mac OS 的二进制文件,或者运行以下命令: ``` wget https://github.com/DataDog/KubeHound/releases/latest/download/kubehound-$(uname -o | sed 's/GNU\///g')-$(uname -m) -O kubehound chmod +x kubehound ```
MacOS 注意事项 如果通过浏览器下载 releases,必须在运行前执行例如 `xattr -d com.apple.quarantine kubehound` 命令,以防止 [MacOS 阻止执行](https://support.apple.com/en-gb/guide/mac-help/mchleab3a043/mac)
#### 使用 Homebrew KubeHound 已在 homebrew-core 中提供,您只需运行 ``` brew update && brew install kubehound ``` `kubehound` 现在应该已经在您的路径中。 #### 从源码构建 如果您希望从源码构建 KubeHound,需要在构建前检出一个 tag ``` git clone https://github.com/DataDog/KubeHound.git cd KubeHound git checkout $(git describe --tags --abbrev=0) make build ``` KubeHound 二进制文件将输出到 `./bin/build/kubehound`。 ### 运行 选择一个目标 Kubernetes 集群,可以通过以下方式: * 使用 [kubectx](https://github.com/ahmetb/kubectx) * 通过导出环境变量使用特定的 kubeconfig 文件:`export KUBECONFIG=/your/path/to/.kube/config` 然后,只需运行 `kubehound` 二进制文件: ``` # 如果您通过 brew 安装,它位于您的 path 中 kubehound # 如果您通过 release 安装,它应位于您下载的位置 ./kubehound # 如果您通过 source 安装,它应位于 /bin/build 文件夹中 ./bin/build/kubehound ``` 有关更高级的用例和配置,请参阅 * [高级配置](https://kubehound.io/user-guide/advanced-configuration/):配置文件中可用的所有设置。 * [常用操作](https://kubehound.io/user-guide/common-operations/):KubeHound 二进制文件可用的命令(`dump` / `ingest`)。 * [常见错误](https://kubehound.io/user-guide/troubleshooting/):故障排除指南。 ## 使用 KubeHound 数据 查询 KubeHound 图数据需要通过 API 调用或专用的图查询 UI 使用 [Gremlin](https://tinkerpop.apache.org/gremlin.html) 查询语言。有许多功能齐全的图查询 UI 可用(包括商业和开源),但我们提供了一个基于 [AWS Graph Notebook](https://github.com/aws/graph-notebook) 的配套 Jupyter notebook,以快速展示 KubeHound 的功能。要访问该 UI: + 在浏览器中访问 [http://localhost:8888/notebooks/KubeHound.ipynb](http://localhost:8888/notebooks/KubeHound.ipynb) + 使用默认密码 `admin` 登录(注意:可以通过 [Dockerfile](./deployments/kubehound/notebook/Dockerfile) 或在 [.env](./deployments/kubehound/.env.tpl) 文件中设置 `NOTEBOOK_PASSWORD` 环境变量来更改此设置) + 按照 notebook 中的初始设置说明连接到 KubeHound 图并配置渲染 + 开始运行查询并探索图谱! ### 示例查询 我们在[我们的文档](https://kubehound.io/queries/gremlin/)中记录了一些可在数据库上执行的示例查询。针对最基本的用例,我们开发了一种特定的 DSL 来查询图([KubeHound DSL](https://kubehound.io/queries/dsl/))。 ## 示例攻击路径 ![Example Path](https://static.pigsec.cn/wp-content/uploads/repos/2026/03/9c7643d1cc212243.png) ### 示例数据 要查看演示非常非常脆弱的集群中攻击情况的示例图,您可以通过针对提供的 kind 集群运行应用程序来生成数据: ``` make sample-graph ``` 要查看生成的图,请参阅[使用 KubeHound 数据](#using-kubehound-data)部分。 ## 从脚本查询数据 如果您暴露图端点,您可以自动化某些查询以收集例如 KPI 和元数据。 ### Python 您可以使用以下代码片段在 Python 脚本中查询数据库数据: ``` #!/usr/bin/env python import sys from gremlin_python.driver.client import Client KH_QUERY = "kh.containers().count()" c = Client("ws://127.0.0.1:8182/gremlin", "kh") results = c.submit(KH_QUERY).all().result() ``` 您需要通过以下命令安装 `gremlinpython` 作为依赖项:`pip install gremlinpython` ## 更多信息 + 有关应用程序架构的概述,请参阅 [design canvas](./docs/Architecture.excalidraw) + 要查看涵盖的攻击,请参阅 [edge definitions](./docs/reference/attacks) + 要为项目贡献新的攻击,请遵循 [contribution guidelines](./CONTRIBUTING.md) ## 致谢 KubeHound 由 Datadog 的对手模拟工程 (ASE) 团队创建: + Jeremy Fox [@0xff6a](https://www.twitter.com/0xff6a) + Julien Terriac + Edouard Schweisguth [@edznux](https://www.twitter.com/edznux) 并获得以下人员的额外支持: + Christophe Tafani-Dereeper [@christophetd](https://twitter.com/christophetd) 我们还要感谢 [BloodHound](https://github.com/BloodHoundAD/BloodHound) 团队开创了在进攻性安全中使用图理论的先河,并激励我们创建了这个项目。
标签:AES-256, Chrome Headless, DevSecOps, Docker, EVTX分析, KubeHound, Kubernetes安全, NoSQL, Web截图, 上游代理, 图计算, 威胁建模, 安全防御评估, 容器安全, 攻击图, 攻击路径分析, 数据处理, 数据展示, 日志审计, 漏洞评估, 版权保护, 红队, 自动化攻击路径, 请求拦截, 逆向工具, 配置错误检测, 风险缓解