tranhieutt/ai_pentest_system
GitHub: tranhieutt/ai_pentest_system
一个基于九阶段确定性流水线的 AI 驱动自动化 Web 渗透测试平台,涵盖从资产侦察到攻击链构建和报告生成的完整流程。
Stars: 0 | Forks: 0
# AI 驱动的自动化渗透测试系统
针对授权目标的自动化 Web 安全测试平台。
9 阶段确定性流水线 | 范围强制执行 | 资产图谱 | 攻击链 | Celery 队列 | 外部适配器 | Markdown/JSON 报告
## 当前状态
于 2026-05-07 的最新本地验证:
```
.\.venv\Scripts\python.exe -m pytest
# 350 通过, 1 警告
```
MVP 运行时是确定性的:在扫描、验证、攻击链或报告生成期间不需要 LLM API 调用。LLM 增强仍为 MVP 后的可选功能。
运行时持久化目前通过 `ScanRepository` / `AssetGraphRepository` 使用 SQLite。PostgreSQL 仍然是 PRD 和部署规划中记录的目标生产架构,但目前活跃的存储库后端是 SQLite。
## 已构建内容
| 区域 | 状态 | 备注 |
|---|---|---|
| 核心 9 阶段流水线 | 完成 | 目标验证、侦察、聚合、上下文、扫描、绕过、验证、链式、报告 |
| 高级引擎 | 完成 | SSRF、走私、GraphQL、竞态条件、接管、云文件暴露、上传/路径问题 |
| 误报减少 | 完成 | 基线比较、去重、智能过滤、置信度评分 |
| FastAPI 服务 | 完成 | 扫描启动/状态/列表/停止、计划、子扫描、资产 API、GitHub 仓库扫描 |
| 队列执行 | 完成 | Celery/Redis 扫描任务、停止/撤销、子扫描运行器 |
| 扫描配置文件 | 完成 | 带有验证和演练计划的 YAML 配置文件 |
| 资产清单 | 完成 | 子域、端点、端口、截图、技术、DNS 记录 |
| 外部适配器 | 完成 | 工具注册表、Nuclei、Dalfox、CRLFuzz、范围过滤、去重 |
| 机密信息搜寻 | 完成 | 48 模式扫描器、流模式、跨文件去重、只读验证器 |
| 身份结构 | MVP 完成 | M365 OIDC、设备代码姿态、Okta、ADFS、Google Workspace;更深入的 M365 探测已推迟 |
| 资产图谱 | 运行时已连接 | 侦察输出写入图节点/边,同时遗留字典输出保持兼容 |
| 图谱攻击链 | 运行时已连接 | ChainEngine 可从 Asset Graph 邻接中添加 `chain_type="graph_traversal"` 链 |
| 上下文严重性 | 运行时已连接 | `configs/severity_rules.yaml` 中的 20 条 YAML 规则,报告显示调整后的严重性/规则 |
| 云存储桶枚举 | 运行时已连接 | S3/GCS/Azure 只读 HEAD/GET 探测、发现及图云存储桶节点 |
| 持续监控 | 待办 | 周期性计划、变更检测、通知 |
| SARIF / PDF | 待办 | JSON 已存在;SARIF 和 PDF 仍待完成 |
| 回退阶梯 | 待办 | 感知检测的 HTTP 回退中间件仍待完成 |
| RBAC / 仪表盘 / CI/CD 运维 | 待办 | 未来的服务强化和 UI 工作 |
## 架构
```
User / API / CLI
|
+-- FastAPI: src/api/main.py
+-- CLI: run_pentest.py
|
v
Celery / Redis queue
|
v
PentestOrchestrator
|
+-- Stage 1: Target validation and scope enforcement
+-- Stage 2: Recon and OSINT
+-- Stage 3: Asset aggregation + Asset Graph write path
+-- Stage 4: Deterministic context analysis
+-- Stage 5: Vulnerability engines + external adapters
+-- Stage 6: WAF bypass payload generation
+-- Stage 7: Validation and false-positive reduction
+-- Stage 8: Pattern + relationship + graph traversal chains
+-- Stage 9: Markdown / JSON reporting with severity rules
|
v
SQLite runtime DB + reports/ + artifacts/
```
## 核心特性
- **范围优先扫描**:精确域、通配符域、URL 前缀范围、范围外拒绝规则。
- **确定性 MVP**:可重复的扫描逻辑,无需 LLM 调用。
- **6 个内部引擎**:注入、Web/客户端、身份认证/访问、API/逻辑、文件/路径、基础设施/高级。
- **外部工具**:Nuclei、Dalfox、CRLFuzz、subfinder、waybackurls、theHarvester 包装器。
- **资产图谱**:`asset_nodes` / `asset_edges`,带有类型化节点和边契约。
- **攻击链**:模式匹配、关系匹配和图遍历。
- **机密信息处理**:正则表达式检测加只读验证器;测试强制要求验证器中不得有 PUT/POST/DELETE/PATCH。
- **上下文严重性**:YAML 规则 SR-001..SR-020 可在报告中调整严重性/置信度。
- **云存储桶枚举**:S3/GCS/Azure 只读探测;已确认的列表变为 High/CONFIRMED。
- **资产 API**:端点、端口、截图、子域、清单。
- **GitHub 仓库扫描**:仓库元数据、分支保护、工作流权限、Dependabot、机密扫描、敏感文件。
- **YesWeHack 基础**:程序加载器/缓存、自动化策略门、范围执行器、按程序速率配置文件。
## 漏洞覆盖范围
| 引擎 | 示例 |
|---|---|
| 注入 | SQLi、NoSQLi、操作系统命令注入、SSTI、CRLF |
| Web 和客户端 | 反射型 XSS、DOM XSS、CSP 缺陷、点击劫持、CORS |
| 身份认证和访问 | IDOR/BOLA、JWT 问题、身份验证绕过、密码重置投毒、管理面板 |
| API 和逻辑 | GraphQL 内省、批量赋值、数据暴露、竞态条件 |
| 文件和路径 | 上传 RCE、LFI、RFI、目录遍历 |
| 基础设施和高级 | SSRF、请求走私、缓存投毒、Host 头、接管、云暴露、原型污染 |
| 机密信息和云 | API 密钥/Tokens、只读验证、云存储桶存在/列表 |
| 外部模板 | Nuclei CVE、暴露、配置错误、默认登录 |
## 系统要求
- Python 3.11+
- 推荐使用 Docker + Docker Compose
- 用于 Celery 队列的 Redis
- 默认的 SQLite 运行时数据库
- Docker 规划中存在 PostgreSQL 服务,但存储库后端目前还不是 PostgreSQL
- 可选二进制文件:`nuclei`、`dalfox`、`crlfuzz`、`subfinder`、`waybackurls`、`theHarvester`
## 安装
### Docker
```
cd ai-pentest-system
docker-compose up -d
```
服务:API、worker、Redis、PostgreSQL 服务,挂载的 data/report/artifact 文件夹。
### 本地
```
cd ai-pentest-system
python -m venv .venv
.\.venv\Scripts\activate
pip install -r requirements.txt
cp .env.example .env
```
可选环境变量:
```
AI_PENTEST_DB_PATH=data/ai_pentest.db
AI_PENTEST_ARTIFACT_ROOT=artifacts
AI_PENTEST_CELERY_BROKER_URL=redis://localhost:6379/0
AI_PENTEST_CELERY_RESULT_BACKEND=redis://localhost:6379/0
SHODAN_API_KEY=...
CENSYS_API_ID=...
CENSYS_API_SECRET=...
HIBP_API_KEY=...
GITHUB_TOKEN=...
YESWEHACK_API_TOKEN=...
NUCLEI_CONCURRENCY=1
NUCLEI_TEMPLATES_DIR=...
```
## CLI 用法
在可能的情况下,请显式选择一种模式:
- `internal`:针对您拥有或已获得书面授权测试的目标进行预发布测试。
- `bounty`:Bug 赏金/VDP 辅助;在流量开始之前强制执行范围、策略和速率限制。
内部预发布模式:
```
python run_pentest.py --mode internal https://staging.example.com --engine full
python run_pentest.py https://example.com
python run_pentest.py https://example.com --rate-limit 2
python run_pentest.py https://example.com --engine full
python run_pentest.py https://example.com --engine quick
python run_pentest.py https://example.com --dry-run
```
Bug 赏金模式:
```
python run_pentest.py --list-bounty
python run_pentest.py --list-bounty --platform hackerone
python run_pentest.py --list-bounty --platform yeswehack
python run_pentest.py --mode bounty --bounty harman-international-web-applications --platform yeswehack --rate-limit 1
python run_pentest.py --bounty shopify
python run_pentest.py --bounty github --platform hackerone --rate-limit 1
python run_pentest.py --bounty example-program --platform yeswehack --rate-limit 1
```
支持的平台:`hackerone`、`bugcrowd`、`intigriti`、`yeswehack`、`all`。
YesWeHack 模式增加了扫描前的自动化策略门:
- `ALLOWED`:正常的范围扫描。
- `MANUAL_ONLY`:仅限侦察路径;漏洞引擎被跳过。
- `BLOCKED`:扫描未启动。请勿绕过此状态。
`YESWEHACK_API_TOKEN` 是可选的。如果不提供,CLI 将使用 bounty-targets-data 并将生成的数据缓存在 `data/yeswehack_programs.json` 中。
## REST API
运行 API:
```
python -m uvicorn src.api.main:app --port 8000
```
主要端点:
| 方法 | 路径 | 描述 |
|---|---|---|
| GET | `/health` | 健康检查 |
| POST | `/api/v1/scan/start` | 启动扫描 |
| POST | `/api/v1/scan/plan` | 演练扫描计划 |
| GET | `/api/v1/scan/{scan_id}/status` | 扫描状态和活动 |
| GET | `/api/v1/scans` | 列出扫描 |
| POST | `/api/v1/scan/{scan_id}/stop` | 停止扫描 |
| POST | `/api/v1/scan/{scan_id}/subscan` | 启动子扫描 |
| GET | `/api/v1/scan/{scan_id}/subscans` | 列出子扫描 |
| GET | `/api/v1/scans/{scan_id}/assets` | 资产清单 |
| GET | `/api/v1/scans/{scan_id}/assets/subdomains` | 子域资产 |
| GET | `/api/v1/scans/{scan_id}/assets/endpoints` | 端点清单 |
| GET | `/api/v1/scans/{scan_id}/assets/ports` | 端口清单 |
| GET | `/api/v1/scans/{scan_id}/screenshots` | 截图画廊 |
| POST | `/api/v1/github/scan` | GitHub 仓库安全扫描 |
交互式文档:`http://localhost:8000/docs`
API 扫描主体使用相同的两种模式:
```
{"scan_mode": "internal", "target_url": "https://staging.example.com", "engine_profile": "full", "rate_limit": 2}
```
```
{"scan_mode": "bounty", "bounty_handle": "harman-international-web-applications", "platform": "yeswehack", "rate_limit": 1}
```
## 扫描配置文件
配置文件位于 `configs/scan_engines/`。
| 配置文件 | 描述 |
|---|---|
| `passive` | 被动侦察和低噪声检查 |
| `full` | 包含内部引擎和外部工具的广泛配置文件 |
| `quick` | 用于高信号检查的更快速配置文件 |
| `recommended` | 平衡的默认配置文件 |
| `vuln-only` | 漏洞阶段,无广泛侦察 |
| `osint-only` | OSINT 和子域发现 |
| `port-only` | 端口/服务清单 |
| `screenshot-only` | 截图捕获 |
## 项目布局
```
src/
api/ FastAPI app
pentest/
bounty/ Scope and policy validation
engines/infra/ Secret scan and read-only validators
models/ Finding, target, report, chain, asset graph models
pipeline/ Orchestrator, recon, engines, validation, reporting
attack_chaining/ Pattern/relationship/graph chain engine
reporting/ Report generator and severity engine
vuln_engines/ Internal vulnerability engines
recon/ Identity Fabric and cloud bucket enumeration
scan_engines/ YAML profile models, validation, planning
storage/ SQLite repository and asset graph repository
tools/ External adapters/runners
configs/
scan_engines/ Scan profiles
severity_rules.yaml Contextual severity rules SR-001..SR-020
tests/ Unit and integration tests
reports/ Generated reports
docs/ PRD, sprint plans, ADRs, architecture reports
```
## 安全说明
- 在扫描前确认已获得书面授权。
- 保持保守的速率限制。
- 将 Bug 赏金策略视为事实来源。
- `ScopeValidator` 在扫描/适配器运行之前过滤目标 URL。
- 外部适配器在子进程执行前进行范围过滤。
- 机密信息验证器根据不变性测试为只读。
- 在披露或修复之前手动审查发现。
- 回退阶梯尚未实现;请在受 WAF 保护的目标上使用保守的速率限制。
## 已知缺陷
- 存储库层中尚未激活 PostgreSQL 后端。
- 尚未实现 SARIF 和 PDF 报告导出。
- 尚未实现感知检测的 HTTP 回退阶梯。
- `PipelineRunner.vulnerability_scan` 仍限于子扫描;完整的漏洞扫描使用 `PentestOrchestrator`。
- 更深入的身份结构探测已推迟。
- 持续监控、通知、RBAC、仪表盘和 CI/CD 操作仍处于待办事项中。
## 路线图
- **Sprint 5**:回退阶梯、SARIF、PDF/报告改进、剩余的服务 API 工作。
- **Sprint 6**:CI/CD、运维文档、备份/恢复、服务冒烟测试。
- **未来**:RBAC、仪表盘、持续监控、可选的 LLM 增强。
## 更新日志
参见 [Changelog.md](Changelog.md)。
## 许可证
MIT。如果存在,请参见 [LICENSE](LICENSE)。
标签:9阶段流水线, ADFS, AV绕过, Celery队列, CISA项目, CRLFuzz, Dalfox, DAST, FastAPI, Google, GraphQL安全, M365, Nuclei, OIDC, Okta, PostgreSQL, Python, Redis, SQLite, SSRF检测, TGT, Web安全测试, YAML配置, 人工智能, 子域名枚举, 安全报告生成, 密码管理, 恶意软件分析, 插件系统, 搜索引擎查询, 攻击链, 攻防演练, 无后门, 机密信息扫描, 条件竞争, 用户模式Hook绕过, 系统安全, 网络安全, 网络安全审计, 自主渗透测试系统, 自动化安全平台, 误报过滤, 请求拦截, 请求走私, 资产测绘, 逆向工具, 隐私保护