leishka-pagan/Sentinel

GitHub: leishka-pagan/Sentinel

一款面向授权目标的 AI 驱动安全扫描平台,通过多智能体编排与证据门控实现可信漏洞发现。

Stars: 0 | Forks: 0

# 🛡️ Sentinel — AI 驱动的漏洞情报平台 Sentinel 是一个自主的多智能体 AI 安全平台,能够编排专用智能体来发现和验证 Web 应用程序中的漏洞——仅此而已。每个发现都基于真实的 HTTP 证据。不进行利用,不生成合成结果,未经明确人工授权不采取任何行动。 该项目作为 [WiCyS 漏洞披露计划](https://www.wicys.org) 的一部分构建并持续用于真实授权目标。 ## 架构 ``` User (authorized target + mode + --confirm flag) │ Consent & Scope Gate ← hard stop if target not in APPROVED_TARGETS │ Orchestrator ← dispatches agents, replans dynamically, enforces iteration ceiling │ ┌────────────────────────────────────────────────────────────┐ │ Agent Suite (PROBE mode) │ ├── recon_agent DNS, tech stack, header analysis │ ├── config_agent Security misconfigurations │ ├── network_agent Network topology, mail servers │ ├── probe_agent Auth bypass, IDOR, rate limiting │ ├── js_agent JS secrets, hidden endpoints │ ├── api_agent GraphQL, Swagger, API auth │ ├── disclosure_agent Sensitive file exposure │ ├── injection_agent SQL/injection conditions (no payloads)│ ├── auth_scan_agent Session and auth weakness │ ├── wordpress_enum_agent Author enum, xmlrpc, robots.txt │ ├── wordpress_agent WP REST API, user enum, 429-aware │ └── salesforce_agent Experience Cloud, /services/data/ │ │ Queen Agent ← sovereign commander, strategic review │ Alpha Agent(s) ← autonomous threat investigator, hypothesis engine │ Finding Pipeline ← CONFIRMED / REFUTED / INCONCLUSIVE / TESTED │ Session Intelligence ← authoritative state: confirmed_urls, disproven_urls │ Attack Graph + Chain Analysis ← MITRE ATT&CK mapping, blast radius │ Reporter ← structured JSON + Markdown, evidence-backed, no hallucinations ``` ## 扫描模式 | 模式 | 活动智能体 | 说明 | |---|---|---| | `PASSIVE` | recon, config, network | 仅观察,读取模式 | | `CODE` | sast, deps, logic | 仅源代码,不涉及网络 | | `PROBE` | 完整的 12 智能体套件 | 主动安全 — 发现真实漏洞,不进行利用 | | `ACTIVE` | 所有智能体 + nuclei | 需要双重确认 | ## 证据模型 每个已确认的发现都必须由实际的 HTTP 响应构造出真实的 `EvidenceRef`。不使用合成值、不使用正则解析的描述、不使用幻觉式确认。 只有当 `is_sufficient_for_confirmation()` 通过时,一个发现才被视为 `CONFIRMED`: - HTTP 200 - 响应类型为 JSON(不是 HTML,也不是 EMPTY) - `size_bytes >= 200` - `proof_snippet` 存在 - `auth_sent == False` ## 发现状态机 ``` CONFIRMED → HTTP 200 + JSON + real evidence passes all confirmation gates REFUTED → HTTP 401/403/404, SPA fallback, empty response INCONCLUSIVE → HTTP 500, timeout, ambiguous TESTED → HTTP 200 but not confirmable (HTML, too small, auth sent) ``` 状态保存在 `SessionIntelligence` 中 —— 这是 Reporter、评估框架以及 Alpha 的去重逻辑的唯一可信来源。Alpha 不会重新探测已存在于 `confirmed_urls` 或 `disproven_urls` 中的 URL。 ## 安全保证 - 每个智能体在发起任何 HTTP 请求前都会调用 `validate_action()` - 智能体无法接触未列入 `APPROVED_TARGETS` 的目标 - 智能体不发送攻击载荷、不修改数据、不暴力破解凭据 - PROBE 模式在设计上为只读,仅用于观察与确认 - ACTIVE 模式需要显式 `--confirm` 标志并经过二次授权 - 所有发现都需要结构化的 HTTP 证据 — 评分引擎会阻断幻觉 - `MAX_ALPHA_CYCLES = 6` — Alpha 调查具有时间上限 ## 核心不变式 代码库始终强制执行以下规则: 1. URL 仅存在于 `confirmed_urls`、`disproven_urls`、`inconclusive_urls` 之一 2. 已结算的端点会从 `untested_queue` 中移除 3. 状态优先级:`CONFIRMED > DISPROVEN > INCONCLUSIVE` 4. Reporter 仅从 `SessionIntelligence` 读取 — 绝不使用陈旧摘要 5. 证据强度决定结论强度 — AI 置信度评分与流水线状态校准 ## 技术栈 - **智能体推理:** Claude(`claude-sonnet-4-20250514`)通过 Anthropic API - **智能体框架:** 自定义 Python — 无 LangChain/LangGraph 依赖 - **证据层:** `probe_with_evidence()` / `safe_request()` 封装,带作用域 TLS - **漏洞标准:** OWASP ASVS、WSTG、MITRE ATT&CK(已加载 835 种技术) - **CVSS 评分:** NVD API 集成 - **后端:** Flask / Python - **部署:** 本地(可选 Docker 用于 Juice Shop 演示目标) ## 授权目标 ### 演示(本地,无需授权) ``` docker run -d -p 3000:3000 bkimminich/juice-shop ``` ### 真实目标(需要明确的书面授权) Sentinel 已被用于以下目标: - **OWASP Juice Shop** — 4 个已确认的未认证 API 端点,TP=3,精确率 30% - **WiCyS VDP**(`www.wicys.org`、`womenincybersecuritywicys.my.site.com`)— 通过 Bugcrowd 授权,作为活跃的 VDP 研究员 **切勿对您未拥有或未获得明确书面授权测试的系统运行 Sentinel。** ## 安装与使用 ``` git clone https://github.com/Leishkychan/Sentinel.git cd sentinel python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate pip install -r requirements.txt cp .env.example .env # 将 ANTHROPIC_API_KEY 添加到 .env ``` ### 运行扫描 ``` # 设置 Python 路径 $env:PYTHONPATH = "C:\path\to\sentinel" # Windows PowerShell export PYTHONPATH=/path/to/sentinel # Linux/Mac # 批准目标(必需 — 未明确批准不会探测目标) $env:APPROVED_TARGETS = "localhost,127.0.0.1" # 运行 python sentinel/run_scan.py --target http://localhost:3000 --mode PROBE --confirm ``` ### 输出 ``` reports/sentinel__.json ← structured findings with evidence reports/sentinel__.md ← human-readable report ``` ## 项目状态 - [x] 阶段 1 — 核心流水线:编排器、Queen、Alpha、发现结果管道 - [x] 阶段 2 — 完整智能体套件:probe、js、api、disclosure、injection、auth_scan - [x] 阶段 3 — 证据重构:所有已确认发现均使用真实的 EvidenceRef - [x] 阶段 4 — 会话智能:权威状态、去重、停止条件 - [x] 阶段 5 — 一级专业智能体:wordpress_enum、wordpress、salesforce - [x] 阶段 6 — MITRE ATT&CK 映射、CVSS 评分、评估框架、攻击链 - [ ] 阶段 7 — 阶段 5 证据修复:probe_agent._check_api_endpoints 迁移 - [ ] 阶段 8 — 二级智能体:插件指纹识别器、头部审计器、敏感文件探测器 - [ ] 阶段 9 — 严重性准确性:仅基于已确认发现由 Queen 生成风险判定 - [ ] 阶段 10 — Flask UI 与完整 Azure 部署 ## 作者 由 Leishka Pagan 构建 — 安全与云基础设施工程师 [GitHub](https://github.com/Leishkychan) | [个人主页](https://leishka-pagan.github.io) *Sentinel 是一个蓝队工具。它仅用于展示漏洞供人工审查与修复,绝不用于攻击。所有扫描目标均需事先获得明确的书面授权。*
标签:AI安全, AI驱动安全, API安全, Chat Copilot, GraphQL安全, HTTP证据, IDOR, JSON输出, JS秘密检测, Salesforce枚举, SQL注入条件检测, VDP, WordPress REST API, WordPress枚举, 多智能体编排, 安全侦察, 安全合规, 授权漏洞披露, 敏感文件暴露, 流量捕获, 漏洞情报平台, 网络代理, 网络拓扑, 自动化渗透测试, 认证会话弱点, 认证绕过, 请求拦截, 逆向工具