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

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

![]() Asjidkalam |
![]() jamoski3112 研究 |
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 --> DATABASE
Overlord 是一个由 OpenCode 驱动的内置 AI 代理,可以分析二进制文件、压缩包、APK 和 Web 目标。上传文件并与它聊天 —— 该代理使用 radare2、strings、文件分类、Frida 等工具调查你的目标。