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漏洞扫描, 多智能体, 特征检测, 红队自动化, 聊天机器人, 自动化渗透测试, 逆向工具