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枚举, 多智能体编排, 安全侦察, 安全合规, 授权漏洞披露, 敏感文件暴露, 流量捕获, 漏洞情报平台, 网络代理, 网络拓扑, 自动化渗透测试, 认证会话弱点, 认证绕过, 请求拦截, 逆向工具