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绕过, 系统安全, 网络安全, 网络安全审计, 自主渗透测试系统, 自动化安全平台, 误报过滤, 请求拦截, 请求走私, 资产测绘, 逆向工具, 隐私保护