DataDog/KubeHound
GitHub: DataDog/KubeHound
一款基于图理论的 Kubernetes 攻击路径自动计算与可视化分析工具,帮助安全团队从攻击者视角发现集群内的潜在威胁路径。
Stars: 946 | Forks: 62
# KubeHound
#### 使用 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/))。
## 示例攻击路径

### 示例数据
要查看演示非常非常脆弱的集群中攻击情况的示例图,您可以通过针对提供的 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) 团队开创了在进攻性安全中使用图理论的先河,并激励我们创建了这个项目。
MacOS 注意事项
如果通过浏览器下载 releases,必须在运行前执行例如 `xattr -d com.apple.quarantine kubehound` 命令,以防止 [MacOS 阻止执行](https://support.apple.com/en-gb/guide/mac-help/mchleab3a043/mac)标签:AES-256, Chrome Headless, DevSecOps, Docker, EVTX分析, KubeHound, Kubernetes安全, NoSQL, Web截图, 上游代理, 图计算, 威胁建模, 安全防御评估, 容器安全, 攻击图, 攻击路径分析, 数据处理, 数据展示, 日志审计, 漏洞评估, 版权保护, 红队, 自动化攻击路径, 请求拦截, 逆向工具, 配置错误检测, 风险缓解