Aaron-Warner-4504/Ozone
GitHub: Aaron-Warner-4504/Ozone
OZONE 是一款结合 LLM 决策、专家知识库和图谱引导攻击规划的自动化 Web 应用红队扫描器,用于发现和验证多种类型的漏洞。
Stars: 0 | Forks: 0
# OZONE v5 — 自动化红队系统
OZONE 是一款自动化的、多智能体的 Web 应用程序红队扫描器。它将
LLM 驱动的决策与专家知识库以及图谱引导的攻击
规划相结合,针对活动目标或
源代码检出环境,发现并验证漏洞(BOLA/IDOR, SQLi, XSS, SSRF, 身份验证
绕过、大规模赋值、反序列化等)。
## 工作原理
`sandbox.py` 集成了三个层级:
- **核心引擎** — 多智能体扫描循环(侦察 → 理解 → 规划 →
攻击 → 验证),带有 FastAPI server 模式,可用于编程式/API 驱动的扫描。
- **[`ozone_knowledge.py`](ozone_knowledge.py)** — 一个包含
攻击技术的知识库 (`KB`),来源于 OWASP, PortSwigger, WAHH, 和 HackTricks,用于
对响应进行分类并指导智能体决策。
- **[`ozone_neo4j_planner.py`](ozone_neo4j_planner.py)** — 图谱引导的攻击
路径规划(通往 RCE 的最短路径、爆炸半径分析、跨扫描
关联)由 Neo4j 支持,如果未配置 Neo4j,则提供内存中回退方案。
浏览器驱动的验证和 SPA/Angular 登录自动化(`BrowserVerifier`,
`AuthEngine`)使用 Playwright,如果未安装该组件,则会优雅降级。
## 设置
```
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
playwright install chromium # only needed for browser-based verification/login
```
复制 `.env` 并填写您需要的变量(见下文),或者直接在您的 shell 中
导出它们。
### 环境变量
| 变量 | 用途 |
|---|---|
| `OPENAI_API_KEY` / `GROQ_API_KEY` | LLM 提供商凭证(通过 `OZONE_LLM_PROVIDER` 选择提供商,通过 `OZONE_MODEL`/`OZONE_FAST_MODEL` 选择模型) |
| `NEO4J_URI`, `NEO4J_USER`, `NEO4J_PASSWORD` | 可选 — 启用图谱引导的攻击规划 |
| `OZONE_API_SECRET` | 调用 `--server` API 所需的 Bearer token |
| `OZONE_DB`, `OZONE_MEM`, `OZONE_BENCHMARK_DB` | 用于扫描状态、智能体记忆和基准测试结果的 SQLite 路径 |
| `OZONE_OOB_HOST` | 目标可访问的 host/IP,用于 blind-SSRF 带外回调 |
扫描行为(并发、超时、抓取深度、各漏洞类别上限等)可以通过大量带有合理默认值的 `OZONE_*` 环境变量进行
调整 — 请查看 `sandbox.py` 中的 `os.getenv(...)` 调用以获取
完整列表。
## 用法
### CLI — 一次性扫描
```
python sandbox.py --url https://target.example.com
python sandbox.py --code app.py --lang python
```
### 经过身份验证的扫描
```
# 自动发现登录表单(通过 Playwright 支持 Angular/SPA 登录)
python sandbox.py --url https://target.example.com \
--auto-login --username user@example.com --password 'secret' \
--field 'organizationCode:ACME123'
# 检查登录页面并打印 OZONE 所需的字段,无需扫描
python sandbox.py --discover-login https://target.example.com/login
# 或者提供完整的凭据对象
python sandbox.py --url https://target.example.com --credentials creds.json
```
其他重要标志:`--bypass-header KEY:VALUE`(在每次探测时添加 WAF 绕过标头),`--origin-url`(直接探测源站,跳过 CDN/WAF),
`--oob-host`(blind-SSRF 回调主机),`--login-mode {auto,http,browser}`。
运行 `python sandbox.py --help` 获取完整的标志列表。
### 服务器模式 (API)
```
python sandbox.py --server --port 8000
```
```
curl -H "Authorization: Bearer $OZONE_API_SECRET" \
-d '{"url":"https://target.example.com"}' \
http://localhost:8000/scan
```
主要 endpoint:
| Endpoint | 描述 |
|---|---|
| `POST /scan` | 启动扫描 |
| `GET /scan/{id}` | 扫描状态 |
| `GET /scan/{id}/findings` | JSON 格式的发现结果 |
| `GET /scan/{id}/html` | HTML 格式的报告发现结果 |
| `GET /scan/{id}/markdown` | Markdown 格式的报告发现结果 |
| `GET /scans` | 列出扫描记录 |
| `GET /kb/techniques`, `GET /kb/chains` | 检查已加载的知识库 |
| `GET /health` | 健康检查 |
## 项目结构
```
sandbox.py Main implementation — engine, KB integration, planner, API/CLI
ozone_knowledge.py Expert attack-technique knowledge base (KB)
ozone_neo4j_planner.py Neo4j-backed graph attack-path planner
kb_data/ Knowledge base source data (vuln definitions, payloads)
requirements.txt Python dependencies
```
## 注意事项
- 仅对您获得明确授权测试的目标运行 OZONE。
- `app.py`, `app0.py`, 和 `api.py` 是遗留/废弃的快照,
已从版本控制中排除;请将 `sandbox.py` 视为唯一事实来源。
标签:CISA项目, Web漏洞扫描, 多智能体, 特征检测, 红队自动化, 聊天机器人, 自动化渗透测试, 逆向工具