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, 凭据扫描, 图神经网络, 子域名突变, 安全检测, 攻击链分析, 机器学习, 逆向工具, 随机森林