TheApexWu/openzerg
GitHub: TheApexWu/openzerg
OpenZerg 是一个基于 Kubernetes 集群编排、结合遗传进化与 Gemma 4 AI Agent 的红队渗透测试框架,用于对授权 Web 应用进行自动化多代迭代攻击以发现完整突破路径。
Stars: 1 | Forks: 0
# OpenZerg
OpenZerg 是一个不断进化的、基于 agent 的红队集群。Go 控制平面会生成一个由 Kubernetes 支持的 PI agent pod 集群(通过 OpenRouter 使用 Gemma 4,通过 Nimble 进行 Web 导航)。每个 pod 都是一个一次性的自主渗透测试器,针对固定的 HTTP 目标。控制平面根据适应度对每个探测进行评分,淘汰弱者,变异强者,并重新生成下一代——直到找到完整的突破口或达到 `--generations`。最终的摘要会解释集群得出结果的路径。
内置演示的目标:Railway 上的 OWASP Juice Shop(我们已获得授权)。
## 快速开始
```
# 1. 将 key 放在 repo 根目录的 .env 中(.env.example 展示了 schema)。
# 必需:OPENROUTER_API_KEY(付费,无 :free)。
# 必需:NIMBLE_API_KEY。
# 2. 在 cluster 上创建 openzerg namespace + openzerg-keys Secret。
kubectl create namespace openzerg
kubectl -n openzerg create secret generic openzerg-keys --from-env-file=.env
# 3. 构建并运行。
cd backend && go build -o ./bin/openzerg ./cmd/openzerg
./bin/openzerg run \
--target https://juice-shop-production-d0c5.up.railway.app \
--population 3 --generations 2
```
一个简短的 doctor 命令可以在不接触集群的情况下报告环境就绪状态:
```
./bin/openzerg doctor
```
## Web UI
同一个二进制文件还提供了一个内置实时集群可视化的 HTTP + SSE 控制平面:
```
./bin/openzerg serve --addr :8080
# 打开 http://localhost:8080
```
`serve` 和 `run` 共享同一个 runner——UI 只是通过 `POST /api/runs` 而不是 CLI 标志来触发它。前端(HTML + ES modules + CSS,无需构建步骤)通过 `go:embed` 嵌入到 Go 二进制文件中,因此该二进制文件是自包含的:将其复制到任何地方,`serve` 都可以正常运行,无需额外文件。SSE 会流式传输 `run_start`、`generation_start`、`pod_spawn`、`pod_result`、`mutation`、`breach` 和 `run_end` 事件;UI 会将每个 pod 绘制在黄金角螺旋上,并随着结果的到达根据适应度为其着色。提供了一个 `--frontend ` 标志,用于在不重新构建二进制文件的情况下编辑 UI。
## 输出示例(已截断)
```
=== generation 1/2: spawning 3 pods ===
[gen 1 pod 0] {"type":"result","status":"BREACH","vector":"sqli_login",
"evidence":"admin token returned via SQL bypass",...}
[gen 1 pod 0] fitness=1.00 vector=sqli_login status=BREACH
[gen 1 pod 1] fitness=0.00 vector=sqli_login_union status=NOOP
[gen 1 pod 2] fitness=0.00 vector=xss_search_reflected status=NOOP
BREACH detected in generation 1. Stopping.
summary: out/summary-r1779563300.json
out/summary-r1779563300.md
outcome: BREACH (best fitness 1.00)
run: ok
```
Markdown 摘要包含每个世代的表格、得分最高的探测、突破目标的确切请求以及简短的叙述。
## 目录结构
```
backend/ Go module
cmd/openzerg/ control-plane CLI
internal/
attacks/ genome catalog + seed list
config/ flag + env merging
evolve/ fitness scoring + mutation + result parsing
k8s/ client-go wrappers (create / stream / wait / delete)
nimble/ Nimble client (control-plane CVE seeding hook)
openrouter/ minimal chat-completions client
pi/ PI agent helpers
secrets/ .env + process env loader
spawn/ pod-spec builders + fan-out orchestrator
store/ in-memory RunStore + JSON/MD summary writers
docker/pi-attacker/ attacker pod image (PI + Gemma 4 entrypoint)
deploy/ namespace + reference pod manifest
docs/ DEMO.md, ARCHITECTURE.md
scripts/ helper scripts (build-and-push-attacker.sh, ...)
out/ run summaries (gitignored except sample)
```
## 白帽范围
OpenZerg 仅攻击 `--target`。内置演示针对的是由我们运营的 OWASP Juice Shop 实例。请勿将其指向您不拥有的任何目标。
## 状态
请查看 `ralph-logs/STATE.md` 以了解里程碑状态。
标签:AI红队, CISA项目, DLL 劫持, EVTX分析, Go语言, 大语言模型, 子域名突变, 日志审计, 程序破解, 请求拦截, 遗传算法