一个开源的人工智能增强进攻性安全平台,将知名安全工具封装在统一 Web UI 背后 —— 支持分布式扫描、AI 生成的报告、智能扫描计划器、交互式攻击图以及社区插件 SDK。
也请查看 Google Play 上的 ObsidianBox Modern。
| 章节 | 描述 |
|---|---|
| 动机 | 动机与理念 |
| 封装工具 | XPFarm 编排的 10 个开源工具 |
| 架构图 | 完整系统架构、扫描管道、数据流 |
| Overlord —— AI 分析 | 用于二进制/恶意软件/Web 分析的 AI 代理 |
| 漏洞赏金报告 | AI 生成的专业披露报告 |
| AI 扫描计划器 | AI 优化的侦察与利用步骤计划器 |
| 分布式工作节点 | 跨多台机器并行运行扫描 |
| 扫描图 | 资产、服务、漏洞、利用的交互式图 |
| 插件 SDK | 社区可扩展的工具、代理和管道系统 |
| 发现归一化引擎 | 统一、丰富、去重的安全发现 |
| 更新内容 | 近期安全、可靠性和用户体验改进 |
| 安装 | 构建与部署说明 |
| 待办事项 | 计划功能与路线图 |

像 Assetnote 这样的工具很棒 —— 维护良好、与时俱进、对漏洞识别透明。但它们不是开源的。也没有必要重新发明轮子,因为已经存在大量可靠的开源工具。XPFarm 将它们封装在一起,让你拥有一个开源且不那么商业化的漏洞扫描器。
重点是构建一个漏洞扫描器,让你可以看到后台发生了什么失败或移除了什么,而不是猜测其中的奥秘。扫描管道所做的一切都会向用户展示。

flowchart TB
subgraph ENTRY["入口 — main.go"]
M1["解析标志 (-debug)"]
M2["初始化DB — SQLite + WAL + GORM"]
M3["初始化模块 — 10个工具封装器"]
M4["加载插件 — normalization/all + plugins/all"]
M5["健康检查 — 自动安装缺失工具"]
M6["检查并索引模板 — Nuclei 版本管理"]
M7["启动服务器 — Gin 在 :8888"]
M1 --> M2 --> M3 --> M4 --> M5 --> M6 --> M7
end
subgraph UI_LAYER["Web UI — internal/ui/server.go"]
direction TB
GIN["Gin HTTP 服务器\n嵌入式模板 + 静态文件\nCSRF 来源检查中间件"]
subgraph Pages["HTML 页面"]
P1["仪表盘 — SSE 实时阶段进度"]
P2["资产与目标"]
P3["全局搜索 — 分页 + 截断"]
P4["扫描图 — Cytoscape.js"]
P5["漏洞赏金报告"]
P6["AI 扫描计划器"]
P7["工作节点与任务"]
P8["Overlord 聊天 + 二进制上传"]
P9["模块"]
P10["设置 — AES-256-GCM 加密"]
end
GIN --> Pages
end
subgraph SCAN_ENGINE["扫描引擎 — internal/core/"]
direction TB
SM["扫描管理器\n单例,互斥锁保护\n恐慌恢复 + SSE 广播"]
subgraph PIPELINE["8阶段扫描管道"]
direction TB
S1["1. Subfinder — 子域名发现"]
S2["2. 过滤与保存 — Cloudflare / Localhost / Alive"]
S3["3. Naabu — 端口扫描 (5个工作协程池)"]
S4["4. Nmap — 服务 + 版本检测"]
S5["5. Httpx — HTTP 探测 + 元数据"]
S6["6. 并行 Web — 截图、爬取、URL、技术"]
S7["7. CVEMap — 按产品/技术查询 CVE"]
S8["8. Nuclei — 漏洞扫描"]
S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7 --> S8
end
SM --> PIPELINE
end
subgraph REPORTS["漏洞赏金报告 — internal/reports/"]
RG["GenerateReport()\n收集数据库上下文 + 图\nOverlord AI 生成\n回退内置模板"]
RF["格式: Markdown · PDF · HackerOne · Bugcrowd"]
RS["存储: internal/storage/reports/"]
RG --> RF --> RS
end
subgraph PLANNER["AI 扫描计划器 — internal/planner/"]
PL["GenerateScanPlan()\n收集资产/发现/图上下文\n轮询 Overlord 获取 JSON 计划\n回退启发式计划"]
PC["能力注册表 — 26 项能力\n10个内置模块 + 16个Overlord代理\n风险级别: safe / active / destructive"]
PS["ExecutePlanWithLogs()\nSSE 日志逐步骤流式输出\n路由内置步骤 vs Overlord代理步骤"]
PL --> PC --> PS
end
subgraph DISTRIBUTED["分布式工作节点 — internal/distributed/"]
DW["工作节点二进制 — cmd/worker/main.go\n./xpfarm-worker -controller http://host:8888"]
DC["控制器 — 令牌认证,心跳监控\n原子性地从队列认领任务"]
DS["调度器 — BestWorkerForTool()\n按能力 + 活跃任务数路由"]
DJ["任务队列 — internal/storage/jobs/\n通过数据库事务认领,30分钟超时"]
DW --> DC --> DS --> DJ
end
subgraph OVERLORD["Overlord — AI 代理子系统"]
OV_PROXY["Overlord 代理 — internal/overlord/"]
subgraph OV_AGENTS["22 个专业代理"]
OA1["二进制反向工程 — re-explorer, re-debugger, re-decompiler, re-scanner"]
OA2["APK — apk-recon, apk-dynamic, apk-decompiler"]
OA3["Web + 利用 — web-tester, re-exploiter, secrets-hunter, recon"]
end
subgraph OV_TOOLS["70+ TypeScript 工具"]
OT1["radare2, ghidra, binwalk, frida, angr, strings"]
OT2["semgrep, gitleaks, gau, corscanner, whatweb"]
OT3["git_dumper, js_scraper, crypto_solver, ropper"]
end
subgraph PROVIDERS["21 个 AI 提供商"]
PR1["Anthropic · OpenAI · Groq · DeepSeek"]
PR2["Ollama (本地) · xAI · OpenRouter · Cerebras"]
end
OV_PROXY --> OV_AGENTS
OV_PROXY --> OV_TOOLS
OV_PROXY --> PROVIDERS
end
subgraph SCAN_GRAPH["扫描图 — internal/graph/"]
GB["BuildGraph() — 查询5张表\n去重节点 + 边"]
subgraph GNODES["节点类型"]
GN1["asset #8b5cf6"]
GN2["target #0ea5e9"]
GN3["service #10b981"]
GN4["tech #f59e0b"]
GN5["vuln #ef4444"]
GN6["exploit #dc2626"]
end
GB --> GNODES
end
subgraph DATABASE["数据库 — internal/database/ + internal/storage/"]
DB["SQLite + WAL 模式\nGORM ORM\n10 打开 / 5 空闲连接,64MB WAL 上限"]
subgraph MODELS["数据模型"]
DM1["Asset · Target · Port · WebAsset"]
DM2["Vulnerability · CVE · ScanResult"]
DM3["ScanProfile · NucleiTemplate · SavedSearch"]
DM4["Setting (AES-256-GCM 加密)"]
DM5["Report · Plan · WorkerRecord · JobRecord"]
end
DB --> MODELS
end
subgraph DOCKER["Docker — docker-compose.yml"]
DC1["xpfarm — Go 应用 :8888"]
DC2["overlord — OpenCode :3000"]
DC3["mobsf — 移动扫描 :8000 (可选)"]
DC1 <-->|xpfarm-network| DC2
DC1 <-->|xpfarm-network| DC3
end
M7 --> GIN
GIN --> SCAN_ENGINE
GIN --> REPORTS
GIN --> PLANNER
GIN --> DISTRIBUTED
GIN --> OVERLORD
GIN --> SCAN_GRAPH
GIN --> DATABASEOverlord 是一个由 OpenCode 驱动的内置 AI 代理,可以分析二进制文件、压缩包、APK 和 Web 目标。上传文件并与它聊天 —— 该代理使用 radare2、strings、文件分类、Frida 等工具调查你的目标。




一键从扫描发现中生成专业的披露报告。Overlord AI 将你的资产清单、漏洞发现、图上下文和 CVE 数据综合成一份精炼的报告。
格式:
| 格式 | 输出 |
|---|---|
Markdown | 干净的 .md 文件,包含执行摘要、发现表格、修复建议 |
工作原理:
.md、.html 或 .pdf —— 或复制原始 Markdown
Overlord 根据已发现的内容 —— 资产清单、现有发现、图结构和可用工具能力 —— 为你的目标选择最佳的侦察和利用步骤。
模式:
工作原理:
能力注册表: 10 个内置模块 + 16 个 Overlord 代理,每个都标记了风险级别(safe / active / destructive)和类别,用于模式过滤。

跨多台机器并行运行扫描。在远程主机上部署工作节点,它们会自动向控制器注册、轮询任务、本地执行工具并将结果发回。
部署工作节点:
./xpfarm-worker -controller http://xpfarm-host:8888 -id worker-1 -labels high-bandwidth,internal
工作原理:
任务队列: 从工作节点 UI 或通过 POST /api/jobs/create 创建任务。队列显示实时状态、分配的工作节点和结果输出。

XPFarm 为扫描过程中发现的每个实体构建统一的有向图,使回答诸如“哪些服务运行着存在活跃 CVE 利用的技术?”或“显示从此资产可达的所有内容”等问题变得轻而易举。
节点类型:
示例路径:
example.com (asset)
└─owns──► www.example.com (target)
├─exposes──► 443/tcp https (service)
│ └─runs──► nginx 1.24 (tech)
├─affected-by──► CVE-2023-44487 (vuln)
│ └─exploits──► Exploit: CVE-2023-44487
└─affected-by──► http-missing-security-headers (vuln)
XPFarm 通过社区插件 SDK 实现可扩展。任何人都可以添加新工具、代理和管道,而无需触及核心代码。
plugins/
├── all/all.go ← 在此添加你的插件导入
├── example-echo/ ← 最小启动模板
├── example-repo-scanner/ ← 模拟仓库扫描器示例
├── repo-semgrep/ ← Semgrep SAST 插件 (生产就绪)
└── repo-secrets/ ← Gitleaks + SecretFinder 插件 (生产就绪)
编写插件 —— 三步:
plugins/my-plugin/plugin.go —— 实现 Tool 和/或 Agent,在 init() 中调用 plugin.RegisterTool() / plugin.RegisterAgent()plugins/my-plugin/plugin.yaml —— 元数据plugins/all/all.go 中添加 _ "xpfarm/plugins/my-plugin"GET /api/plugins 列出所有已注册的工具、代理、管道和清单。
来自 Nuclei、Nmap、Semgrep 和 Gitleaks 的原始扫描器输出被归一化为统一的 Finding 模型,通过实时威胁情报进行丰富、去重并分组。
POST /api/normalize {"source": "nuclei", "raw": {...}}
│
▼ 适配器 (nuclei / nmap / semgrep / gitleaks)
│ → 规范化的 Finding (CVE, CWE, 严重性, 证据, 标签)
│
▼ 丰富器 (按顺序应用)
│ 1. CWE — 40条规则关键词 trie + 35个标签映射 (本地, 即时)
│ 2. CVSS — NVD REST API v2, CVSS 3.1→3.0→2.0, 进程内缓存
│ 3. EPSS — FIRST.org 利用概率 API, 进程内缓存
│ 4. KEV — CISA 已知被利用漏洞目录 (sync.Once)
│
▼ SHA-256 指纹 → 去重 → 按 CWE/CVE/严重性/目标分组
│
▼ SQLite 存储 (FindingRecord + GroupRecord)
./xpfarm-worker 二进制data/.xpfarm.key./xpfarm.sh update 用于可选升级# 推荐
./xpfarm.sh build # 构建所有容器
./xpfarm.sh up # 启动所有服务 (xpfarm :8888 + overlord :3000)
./xpfarm.sh update # 使用最新工具版本重建 (可选升级)
# Windows
.\xpfarm.ps1 build
.\xpfarm.ps1 up
# 标准 Docker
docker compose up --build
# 从源码构建 (无 Overlord)
go build -o xpfarm
./xpfarm
./xpfarm -debug







![]() Asjidkalam |
![]() jamoski3112 研究 |
PDF | 通过 wkhtmltopdf 渲染,回退到 HTML |
HackerOne | 平台优化结构,含 CVSS、复现步骤 |
Bugcrowd | 标题、严重性、VRT 类别、影响、PoC |
| 模式 | 规划内容 |
|---|
全部 | 全部 26 项能力 —— 完整评估 |
侦察 | 仅子域名、端口、HTTP、技术发现 |
Web | HTTP 探测、爬取、Web 漏洞检查 |
二进制 | Overlord 二进制/APK/恶意软件分析代理 |
安全 | 仅零风险只读工具 |
| 节点 | 颜色 | 数据来源 |
|---|
asset | 紫色 #8b5cf6 | Asset 表 |
target | 蓝色 #0ea5e9 | Target 表 |
service | 绿色 #10b981 | Port 表(开放端口) |
tech | 琥珀色 #f59e0b | WebAsset.TechStack + Port.Product |
vuln | 红色 #ef4444 | Vulnerability + CVE 表 |
exploit | 深红色 #dc2626 | 满足 IsKEV=true 且 HasPOC=true 的 CVE |