ObedRav/kubescan
GitHub: ObedRav/kubescan
kubescan 利用随机森林、图注意力网络和遗传算法的集成模型,在部署前从静态 YAML 配置中预测 Kubernetes 集群的多跳攻击链风险。
Stars: 1 | Forks: 0
# kubescan
Kubernetes 攻击链风险扫描器。
通过三层集成模型(Random Forest + Graph Attention Network + GA 优化的评分器),预测 Kubernetes 集群的 YAML manifests 是否会形成可被利用的多跳攻击链(pod-escape → 横向移动 → 影响)。
## 结果
| 层级 | 模型 | 指标 | 结果 | 目标 |
|-------|-------|--------|--------|--------|
| 1 | Random Forest | Macro-F1 (测试) | **0.9946** | > 0.85 ✅ |
| 2 | GAT (5 折 CV,family-aware) | Precision@5 | **0.720 ± 0.160** | > 0.70 ✅ |
| 3 | GA Ensemble (留出测试) | P@1 / P@5 / FPR\_clean | **1.00 / 0.80 / 0.00** | — |
| — | 可用性 (SUS,n=3 位专家) | SUS 分数 | **88.3** ("优秀") | — |
Layer-3 的排序应用了结构可行性门控(单个 manifest 的集群无法承载多跳链)。评估采用了 group- 和 template-family-aware 的数据划分:增强图变体和近似重复的模板族绝不会跨越训练/评估边界,并且 86 个留出测试图——包含全部 5 条真实攻击链——均被排除在 CV 折叠和 GA 调整之外。有关完整的协议,请参阅 `research/data/DATASET.md`。
## 系统要求
| 资源 | 最低要求 | 备注 |
|----------|---------|-------|
| Python | 3.10+ | |
| RAM | 8 GB | 推荐使用 16 GB 以进行 MPS/CUDA 训练 |
| 磁盘 | **40 GB 可用空间** | PyTorch + PyG wheels(~2.5 GB site-packages),首次 MPS 运行时构建的 Metal shader 缓存(在 `/var/folders/` 中约 12 GB),原始 manifest 数据(~4 GB),训练产物 |
| GPU | 可选 | 自动检测 MPS (Apple Silicon) 或 CUDA;始终支持 CPU 回退 |
## 仓库结构
```
TFE/
├── kubescan/ # Installable Python package — pip install -e kubescan/
│ ├── src/kubescan/
│ │ ├── cli.py # kubescan scan | kubescan live
│ │ ├── model/ # Inference: GAT encoder, RF classifier, GA ensemble
│ │ └── utils/ # YAML feature extractor, cluster graph builder
│ └── tests/
├── research/ # Reproducible training pipeline (not a package)
│ ├── scripts/ # 01_acquire → 02_extract → 03_augment → 04_build → 05_split
│ ├── models/ # train_rf.py, train_gnn.py, run_ga_ensemble.py + checkpoints/
│ └── data/ # raw/, tabular/, graphs/, splits/
└── thesis/ # LaTeX source — compiled PDF at thesis/latex/plantilla.pdf
```
## 快速开始
```
# 安装 package
pip install -e kubescan/
# 扫描 Kubernetes manifests 目录
kubescan scan ./my-cluster/
# JSON 输出 (CI/CD)
kubescan scan ./my-cluster/ --format json
# Live 模式 — 通过 kubectl 扫描运行中的 cluster
kubescan live --namespace default
```
有关完整的 CLI 参考,请参阅 [kubescan/README.md](kubescan/README.md)。
## 复现训练 pipeline
```
# 1. 获取 raw manifests
python research/scripts/01_acquire/download_github_manifests.py
python research/scripts/01_acquire/ingest_attack_repos.py
# 2–6. 提取、增强、构建 graph cache、创建 group-aware splits
# (完整的 9 步序列请参见 research/README.md)
# 7. 训练所有三层
python research/models/train_rf.py
python research/models/train_gnn.py --epochs 300 --hidden 64 --heads 4 --layers 3
python research/models/run_ga_ensemble.py --oof
# 8. 在 held-out test set 上进行评估(不包含在 CV folds 和 GA tuning 中)
python research/models/evaluate_test_set.py
```
有关详细信息、预期输出和指标,请参阅 [research/README.md](research/README.md)。
## 构建论文
```
make thesis # full 3-pass compile → thesis/latex/plantilla.pdf
make thesis-check # fast syntax check (no PDF written, ~5 s)
```
## License
MIT — 请参阅 [LICENSE](LICENSE)。
标签:Apex, PE 加载器, URL发现, Vectored Exception Handling, 凭据扫描, 图神经网络, 子域名突变, 安全检测, 攻击链分析, 机器学习, 逆向工具, 随机森林