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, 系统运维工具, 索引, 置信度门控, 自主渗透测试, 自动化渗透, 蓝队分析, 蓝队防御, 请求拦截, 轻量级, 逆向工具