Hem1700/forge

GitHub: Hem1700/forge

一个多智能体自治渗透测试平台,通过 LLM 驱动的推理与 PoC 生成解决大规模目标的高效安全评估问题。

Stars: 0 | Forks: 0

# FORGE — 用于进攻性推理、生成和利用的框架 一个多智能体自治渗透测试平台。FORGE 支持 Web 应用、本地代码库和 CLI 工具 —— 采用“战略大脑 + 战术蜂群”架构,具备每次发现的利用智能、可运行的 PoC 脚本生成、人机交互门控和实时 WebSocket 流式传输。 ## 架构 - **战略大脑** — 语义应用建模、代码库建模、活动规划、规避策略、记忆引擎(LangChain + Claude) - **利用引擎** — 按需生成的 LLM 利用步骤、Mermaid 攻击路径图、影响分析、每次发现的难度评分 - **PoC 引擎** — 按需生成可运行的利用脚本(Python 或 Bash,自动按漏洞类别选择),Mermaid 序列图展示攻击流程,针对每次发现缓存 - **战术蜂群** — 自治智能体(侦察、探测、规避、代码分析器、依赖扫描器、模糊器、深度利用)由基于拍卖的调度器协调 - **对抗验证器** — 挑战者、上下文过滤器、严重性评分器、置信度阈值门控 - **知识库** — Qdrant 向量存储 + Neo4j 图存储,用于跨回合学习 - **REST API + WebSocket** — FastAPI 后端,支持实时蜂群事件流,事件持久化以支持刷新安全回放 - **React 前端** — 终端/黑客风格(纯黑,青色点缀,等宽字体),`ps aux` 风格的参与面板,前端优先的参与页面带有实时蜂群日志(刷新后可重新水合)、每次发现的详情页、攻击路径 + 序列图、PoC 查看器(复制/下载)、PDF 报告导出和人工门控 UI ## 先决条件 - Docker + Docker Compose - Node.js 18+ - Python 3.10+ - Anthropic API 密钥(用于 LLM 增强分析) ## 快速开始 ### 1. 启动基础设施 ``` docker compose up -d ``` 启动 PostgreSQL、Redis、Qdrant 和 Neo4j。 ### 2. 配置环境 创建 `backend/.env`: ``` ANTHROPIC_API_KEY=sk-ant-... DATABASE_URL=postgresql+asyncpg://forge:forge@localhost:5432/forge NEO4J_URL=bolt://localhost:17687 NEO4J_USER=neo4j NEO4J_PASSWORD=forge_password QDRANT_URL=http://localhost:6333 REDIS_URL=redis://localhost:6379 ``` 创建 `frontend/.env`: ``` VITE_API_URL=http://localhost:8080 VITE_WS_URL=ws://localhost:8080 ``` ### 3. 运行迁移并启动后端 ``` cd backend python -m venv .venv && source .venv/bin/activate pip install -r requirements.txt alembic upgrade head uvicorn app.main:app --port 8080 ``` 后端运行在 `http://localhost:8080`。交互式 API 文档位于 `http://localhost:8080/docs`。 ### 4. 启动前端 ``` cd frontend npm install npm run dev -- --port 5174 ``` 前端运行在 `http://localhost:5174`。 ## CLI(forge) `forge` 命令行工具允许你运行渗透测试、流式传输实时事件并导出结果,无需浏览器。 ### 安装 ``` cd cli pip install -e . ``` 验证: ``` forge --help ``` 如果后端不在 `localhost:8080`,设置后端 URL: ``` export FORGE_API_URL=http://your-server:8080 ``` ### 命令 #### `forge run ` — 启动一次渗透测试 目标类型自动检测。传入 URL 用于 Web 应用,或传入文件系统路径用于本地代码库。 ``` # Web 应用程序 forge run https://example.com # 限定范围的 Web forge run https://example.com --scope /api --scope /admin --out-of-scope /static # 本地代码库(从路径自动检测) forge run /Users/you/Desktop/myproject # 二进制文件 forge run /usr/bin/target-binary --type binary # 立即启动并退出(不流式传输事件) forge run https://example.com --no-stream ``` 实时蜂群事件流式输出到终端。按 `Ctrl+C` 分离 —— 流水线将在后台继续运行。 #### `forge list` — 列出所有参与活动 ``` forge list ``` #### `forge status ` — 参与活动详情 ``` forge status # 流式传输实时事件以进行持续交互 forge status --watch ``` #### `forge findings ` — 查看发现 ``` # 严重性摘要 + 查找结果表 forge findings # 按严重性过滤 forge findings --severity critical forge findings --severity high # 为所有查找结果生成并显示利用演练 forge findings --exploit # 为所有查找结果生成并保存 PoC 脚本 forge findings --poc # 输出原始 JSON forge findings --json # 保存到文件 forge findings --output findings.json ``` #### `forge exploit ` — 单个发现的利用步骤 为特定发现生成分步利用讲解、攻击路径图、影响分析和难度评级。结果会被缓存 —— 后续调用立即返回。 输出包含: - 带 PoC 代码片段的编号利用步骤 - ASCII 攻击路径图(`Attacker ──[crafted request]──► WebServer`) - 影响摘要与先决条件 - 难度评级(简单 / 中等 / 困难) #### `forge poc ` — 生成 PoC 利用脚本 为特定发现生成可运行的利用脚本。语言根据漏洞类别自动选择(SQL 注入/XSS/SSRF/IDOR 等使用 Python,命令注入/路径遍历使用 Bash)。脚本保存到当前目录。结果会被缓存 —— 后续调用立即返回。 输出包含: - 语言标识与文件名(例如 `poc_sqli_api_users.py`) - 带行号的语法高亮脚本 - 安装命令(例如 `pip install requests`) - 使用说明 - ASCII 利用序列(`Attacker ──► Server: GET /api/users?id=1' OR '1'='1`) - 已保存文件确认 #### `forge report ` — 生成 Markdown 报告 ``` # 打印到终端 forge report # 保存到文件 forge report --output report.md ``` 当已生成利用讲解或 PoC 脚本时,报告会自动在每个发现下包含它们。 #### `forge gate approve/reject ` — 人工门控决策 ``` forge gate approve forge gate approve --notes "Reviewed recon output, safe to proceed" forge gate reject forge gate reject --notes "Out of scope targets detected" ``` #### `forge stats` — 平台统计 ``` forge stats ``` #### `forge delete ` — 删除参与活动 ``` forge delete # 跳过确认提示 forge delete --yes ``` ### 典型工作流 ``` # 1. 开始一次 Pentest 并实时流式传输事件 forge run /Users/you/Desktop/myproject # 2. (如果在另一个终端中已分离)检查状态 forge list forge status # 3. 在提示时批准人工门控 forge gate approve # 4. 完成后查看查找结果 forge findings forge findings --severity critical # 5. 深入查看特定查找结果的利用演练 forge exploit # 6. 为某个查找结果生成可运行的 PoC 脚本(保存到磁盘) forge poc # 7. 导出完整报告(包括利用演练 + PoC 脚本,如果已生成) forge report --output report.md ``` ## 执行渗透测试 ### 通过 UI 1. 打开 `http://localhost:5174` 2. 点击 **+ NEW** 并填写目标详情(参见下方目标类型) 3. 点击 **▶ CREATE ENGAGEMENT**,然后点击 **▶ LAUNCH** 4. 参与页面打开,**实时蜂群控制台** 作为主面板 —— 事件实时流式传输并在刷新后重放 5. 出现琥珀色横幅时批准或拒绝 **人工门控** 6. 在控制台下方的表格中查看扫描结果 —— 点击任意行打开详情页 7. 在发现详情页中,点击 **Generate Exploit** 获取利用讲解 + 攻击路径,点击 **Generate PoC** 获取可运行脚本 + 序列图,或点击 **Execute Against Target** 在沙箱 Kali 容器中运行武器化脚本 8. 点击参与页眉的 **PDF ↓** 下载完整报告 点击仪表盘任意行上的 **×** 按钮删除参与活动(发现和事件会级联删除)。后端会在启动时自动中止处于 `running`/`paused_at_gate` 状态超过一小时的参与。 ### 通过 API ``` # 1. 创建交互 curl -X POST http://localhost:8080/api/v1/engagements/ \ -H "Content-Type: application/json" \ -d '{"target_url": "https://example.com", "target_type": "web"}' # 2. 开始 Pentest curl -X POST http://localhost:8080/api/v1/engagements/{id}/start # 3. 检查状态 curl http://localhost:8080/api/v1/engagements/{id} # 4. 检查查找结果数量 curl http://localhost:8080/api/v1/system/stats ``` ## 目标类型 FORGE 支持三种目标类型: ### Web 应用 测试 HTTP 端点 —— 爬取应用、构建语义模型并运行侦察/探测/规避智能体。 ``` { "target_url": "https://example.com", "target_type": "web", "target_scope": ["/api", "/admin"], "target_out_of_scope": ["/static"] } ``` ### 本地代码库 在 FORGE 服务器的文件系统上分析源代码。并行运行三个智能体: - **CodeAnalyzer** — 基于 LLM 的代码审查,用于 SQL 注入、命令注入、路径遍历、硬编码密钥、提示注入、沙箱逃逸等 - **DependencyScanner** — 检查 `requirements.txt` / `package.json` / `go.mod`,对接 [OSV CVE 数据库](https://osv.dev)(无需 API 密钥) - **Fuzzer** — 生成畸形输入,运行 CLI,检测崩溃和挂起 ``` { "target_url": "local", "target_type": "local_codebase", "target_path": "/absolute/path/to/project" } ``` ``` # 示例:测试本地 Python 项目 curl -X POST http://localhost:8080/api/v1/engagements/ \ -H "Content-Type: application/json" \ -d '{ "target_url": "local", "target_type": "local_codebase", "target_path": "/Users/you/Desktop/myproject" }' curl -X POST http://localhost:8080/api/v1/engagements/{id}/start ``` ### 二进制文件 分析编译后的二进制文件(ELF、PE、Mach-O)。与本地代码库使用相同的智能体,但专注于二进制文件及其周边源码。 ``` { "target_url": "local", "target_type": "binary", "target_path": "/absolute/path/to/binary" } ``` ## API 参考 | 方法 | 路径 | 描述 | |------|------|------| | `GET` | `/api/v1/health` | 健康检查 | | `POST` | `/api/v1/engagements/` | 创建参与活动 | | `GET` | `/api/v1/engagements/` | 列出参与活动 | | `GET` | `/api/v1/engagements/{id}` | 获取参与活动 | | `PATCH` | `/api/v1/engagements/{id}/status` | 更新状态(`pending`、`running`、`aborted`) | | `DELETE` | `/api/v1/engagements/{id}` | 删除参与活动(级联删除发现、任务、智能体、事件、知识) | | `POST` | `/api/v1/engagements/{id}/start` | 启动完整流水线 | | `GET` | `/api1/engagements/{id}/events` | 重放近期蜂群事件(最近 500 条) | | `POST` | `/api/v1/engagements/{id}/report/pdf` | 生成 PDF 报告 | | `POST` | `/api/v1/gates/{id}/decide` | 批准或拒绝人工门控 | | `GET` | `/api/v1/findings/{id}` | 获取完整发现详情(包含 `exploit_detail`、`poc_detail`、`exploit_script`、`exploit_execution`,如果已生成) | | `POST` | `/api/v1/findings/{id}/exploit` | 生成(或返回缓存的)利用讲解 | | `GET` | `/api/v1/findings/{id}/poc` | 获取 PoC 详情(若尚未生成则为 null) | | `POST` | `/api/v1/findings/{id}/poc` | 生成(或返回缓存的)PoC 脚本 + 序列图 | | `POST` | `/api/v1/findings/{id}/exploit-script` | 生成武器化利用脚本 | | `POST` | `/api/v1/findings/{id}/execute` | 在沙箱 Kali 容器中执行武器化脚本 | | `GET` | `/api/v1/knowledge/` | 列出知识库条目 | | `GET` | `/api/v1/knowledge/attack-class/{class}` | 按攻击类别过滤知识 | | `GET` | `/api/v1/system/stats` | 参与 / 发现 / 知识统计 | | `WS` | `/ws/{engagement_id}` | 实时蜂群事件流 | 完整交互式文档:`http://localhost:8080/docs` ## 运行测试 ``` cd backend # 需要运行 Docker 服务 pytest -v ``` 78 个测试,涵盖模型、API、大脑组件(ExploitEngine、PoCEngine)、蜂群智能体、验证器和多目标流水线。 ## 项目结构 ``` FORGE/ ├── backend/ │ ├── app/ │ │ ├── api/ # REST endpoints (engagements, findings, gates, knowledge, system, start) │ │ ├── brain/ # SemanticModeler, CodebaseModeler, CampaignPlanner, ExploitEngine, PoCEngine, MemoryEngine │ │ ├── knowledge/ # Vector store (Qdrant) + graph store (Neo4j) │ │ ├── models/ # SQLAlchemy ORM models │ │ ├── swarm/ # Agents, scheduler, health monitor, task board │ │ │ └── agents/ # recon, probe, evasion, code_analyzer, dependency_scanner, fuzzer, deep_exploit │ │ ├── validator/ # Challenger, context filter, severity scorer │ │ └── ws/ # WebSocket stream manager │ ├── alembic/ # Database migrations │ └── tests/ ├── frontend/ │ └── src/ │ ├── api/ # Typed API clients (engagements, findings, gates) │ ├── components/ # EngagementDashboard, SwarmMonitor, HumanGate, FindingsPanel, ExploitWalkthrough, AttackPathDiagram, PoCScript, ExploitSequenceDiagram, ReportViewer │ ├── hooks/ # useSwarmStream │ ├── pages/ # Home, Engagement, FindingDetail, PrintReport │ ├── store/ # Zustand engagement store │ └── types/ # Shared TypeScript types └── docker-compose.yml ```
标签:AV绕过, Cloudflare, DInvoke, Docker, Docker Compose, FastAPI, GNU通用公共许可证, LangChain, Live Dashboard, Mermaid, MITRE ATT&CK, Neo4j, Node.js, PDF报告, PoC生成, PS仿冒, Python, Qdrant, React, Syscalls, WebSocket, Web安全, 上下文过滤, 二进制分析, 云安全运维, 人环干预, 依赖分析, 内存引擎, 可复现演示, 向量数据库, 多智能体, 安全测试, 安全防御评估, 对抗验证, 战术蜂群, 战略大脑, 报告导出, 拍卖调度器, 搜索引擎查询, 攻击性安全, 攻击路径规划, 无后门, 流量可视化, 测试用例, 混合加密, 漏洞严重度评分, 版权保护, 生成式AI, 系统运维工具, 索引, 置信度门控, 自主渗透测试, 自动化渗透, 蓝队分析, 蓝队防御, 请求拦截, 轻量级, 逆向工具