
자동화된 버그 바운티 및 정찰 프레임워크 — Subfinder, Naabu, Httpx, Nuclei, Nmap, CVEMap, Gowitness, Katana 등을 통합 웹 UI로 감싸는 도구
오픈소스 AI 기반 공격적 보안 플랫폼으로, 잘 알려진 보안 도구들을 통합 웹 UI 뒤에 래핑하며 분산 스캔, AI 생성 보고서, 스마트 스캔 플래너, 대화형 공격 그래프, 커뮤니티 플러그인 SDK를 제공합니다.
Google Play에서 ObsidianBox Modern도 확인해보세요.
| 섹션 | 설명 |
|---|---|
| Why | 동기와 철학 |
| Wrapped Tools | XPFarm이 조율하는 10개의 오픈소스 도구 |
| Architecture Map | 전체 시스템 아키텍처, 스캔 파이프라인, 데이터 흐름 |
| Overlord — AI Analysis | 바이너리/악성코드/웹 분석용 AI 에이전트 |
| Bug Bounty Reports | AI 생성 전문 공개 보고서 |
| AI Scan Planner | AI 최적화 정찰 및 익스플로잇 단계 플래너 |
| Distributed Workers | 여러 머신에서 병렬로 스캔 실행 |
| Scan Graph | 자산, 서비스, 취약점, 익스플로잇의 대화형 그래프 |
| Plugin SDK | 커뮤니티 확장 가능한 도구, 에이전트 및 파이프라인 시스템 |
| Finding Normalization Engine | 통합, 강화, 중복 제거된 보안 결과 |
| What's New | 최근 보안, 안정성 및 UX 개선 사항 |
| Setup | 빌드 및 배포 지침 |
| TODO | 계획된 기능 및 로드맵 |

Assetnote 같은 도구는 훌륭합니다 — 유지 보수가 잘 되어 있고, 최신 상태이며, 취약점 식별에 대해 투명합니다. 하지만 오픈소스가 아닙니다. 또한 이미 충분히 견고한 오픈소스 도구들이 존재하므로 바퀴를 재발명할 필요도 없습니다. XPFarm은 이들을 함께 래핑하여 덜 기업적이고 오픈소스인 취약점 스캐너를 제공합니다.
초점은 백그라운드에서 무엇이 실패하거나 제거되는지 확인할 수 있는 취약점 스캐너를 구축하는 데 있었으며, 미스터리에 대해 궁금해할 필요가 없도록 했습니다. 스캔 파이프라인이 수행하는 모든 것이 사용자에게 표시됩니다.

flowchart TB
subgraph ENTRY["Entrypoint — main.go"]
M1["Parse Flags (-debug)"]
M2["InitDB — SQLite + WAL + GORM"]
M3["InitModules — 10 tool wrappers"]
M4["Load Plugins — normalization/all + plugins/all"]
M5["Health Check — auto-install missing tools"]
M6["CheckAndIndexTemplates — Nuclei versioning"]
M7["StartServer — Gin on :8888"]
M1 --> M2 --> M3 --> M4 --> M5 --> M6 --> M7
end
subgraph UI_LAYER["Web UI — internal/ui/server.go"]
direction TB
GIN["Gin HTTP Server\nEmbedded templates + static\nCSRF origin-check middleware"]
subgraph Pages["HTML Pages"]
P1["Dashboard — SSE live stage progress"]
P2["Assets & Targets"]
P3["Global Search — paginated + truncation"]
P4["Scan Graph — Cytoscape.js"]
P5["Bug Bounty Reports"]
P6["AI Scan Planner"]
P7["Workers & Jobs"]
P8["Overlord Chat + Binary Upload"]
P9["Modules"]
P10["Settings — AES-256-GCM encrypted"]
end
GIN --> Pages
end
subgraph SCAN_ENGINE["Scan Engine — internal/core/"]
direction TB
SM["ScanManager\nSingleton, mutex-guarded\nPanic recovery + SSE broadcast"]
subgraph PIPELINE["8-Stage Scanning Pipeline"]
direction TB
S1["1. Subfinder — Subdomain Discovery"]
S2["2. Filter & Save — Cloudflare / Localhost / Alive"]
S3["3. Naabu — Port Scanning (5-worker pool)"]
S4["4. Nmap — Service + Version Detection"]
S5["5. Httpx — HTTP Probing + Metadata"]
S6["6. Parallel Web — Screenshots, Crawl, URLs, Tech"]
S7["7. CVEMap — CVE lookup by product/tech"]
S8["8. Nuclei — Vulnerability Scanning"]
S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7 --> S8
end
SM --> PIPELINE
end
subgraph REPORTS["Bug Bounty Reports — internal/reports/"]
RG["GenerateReport()\nCollects DB context + graph\nOverlord AI generation\nFallback built-in templates"]
RF["Formats: Markdown · PDF · HackerOne · Bugcrowd"]
RS["Storage: internal/storage/reports/"]
RG --> RF --> RS
end
subgraph PLANNER["AI Scan Planner — internal/planner/"]
PL["GenerateScanPlan()\nGathers asset/finding/graph context\nPolls Overlord for JSON plan\nFallback heuristic plan"]
PC["Capability Registry — 26 capabilities\n10 built-in modules + 16 Overlord agents\nRisk levels: safe / active / destructive"]
PS["ExecutePlanWithLogs()\nSSE log streaming per step\nRoutes builtin vs Overlord agent steps"]
PL --> PC --> PS
end
subgraph DISTRIBUTED["Distributed Workers — internal/distributed/"]
DW["Worker Binary — cmd/worker/main.go\n./xpfarm-worker -controller http://host:8888"]
DC["Controller — token auth, heartbeat monitor\nAtomically claims jobs from queue"]
DS["Scheduler — BestWorkerForTool()\nRoutes by capability + active job count"]
DJ["Job Queue — internal/storage/jobs/\nClaim via DB transaction, 30min timeout"]
DW --> DC --> DS --> DJ
end
subgraph OVERLORD["Overlord — AI Agent Subsystem"]
OV_PROXY["Overlord Proxy — internal/overlord/"]
subgraph OV_AGENTS["22 Specialized Agents"]
OA1["Binary RE — re-explorer, re-debugger, re-decompiler, re-scanner"]
OA2["APK — apk-recon, apk-dynamic, apk-decompiler"]
OA3["Web + Exploit — web-tester, re-exploiter, secrets-hunter, recon"]
end
subgraph OV_TOOLS["70+ TypeScript Tools"]
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 Providers"]
PR1["Anthropic · OpenAI · Groq · DeepSeek"]
PR2["Ollama (local) · xAI · OpenRouter · Cerebras"]
end
OV_PROXY --> OV_AGENTS
OV_PROXY --> OV_TOOLS
OV_PROXY --> PROVIDERS
end
subgraph SCAN_GRAPH["Scan Graph — internal/graph/"]
GB["BuildGraph() — queries 5 tables\nDeduplicates nodes + edges"]
subgraph GNODES["Node Types"]
GN1["asset #8b5cf6"]
GN2["target #0ea5e9"]
GN3["service #10b981"]
GN4["tech #f59e0b"]
GN5["vuln #ef4444"]
GN6["exploit #dc2626"]
end
GB --> GNODES
end
subgraph DATABASE["Database — internal/database/ + internal/storage/"]
DB["SQLite + WAL Mode\nGORM ORM\n10 open / 5 idle conns, 64MB WAL cap"]
subgraph MODELS["Data Models"]
DM1["Asset · Target · Port · WebAsset"]
DM2["Vulnerability · CVE · ScanResult"]
DM3["ScanProfile · NucleiTemplate · SavedSearch"]
DM4["Setting (AES-256-GCM encrypted)"]
DM5["Report · Plan · WorkerRecord · JobRecord"]
end
DB --> MODELS
end
subgraph DOCKER["Docker — docker-compose.yml"]
DC1["xpfarm — Go app :8888"]
DC2["overlord — OpenCode :3000"]
DC3["mobsf — Mobile scan :8000 (optional)"]
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, 웹 타겟을 분석할 수 있습니다. 파일을 업로드하고 대화하면 에이전트가 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
작동 방식:
작업 대기열: Workers UI에서 또는 POST /api/jobs/create를 통해 작업을 생성하세요. 대기열에는 실시간 상태, 할당된 워커, 결과 출력이 표시됩니다.

XPFarm은 스캔 중 발견된 모든 엔티티의 통합 방향 그래프를 구축하여 "CVE 익스플로잇이 활성화된 기술을 실행 중인 서비스는 무엇인가?" 또는 _"이 자산에서 도달 가능한 모든 항목 표시"_와 같은 질문에 쉽게 답할 수 있게 합니다.
노드 유형:
예시 경로:
example.com (asset)
└─소유──► www.example.com (target)
├─노출──► 443/tcp https (service)
│ └─실행──► nginx 1.24 (tech)
├─영향받음──► CVE-2023-44487 (vuln)
│ └─악용──► Exploit: CVE-2023-44487
└─영향받음──► http-missing-security-headers (vuln)
XPFarm은 커뮤니티 Plugin 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": {...}}
│
▼ Adapter (nuclei / nmap / semgrep / gitleaks)
│ → canonical Finding (CVE, CWE, severity, evidence, tags)
│
▼ Enrichers (applied in order)
│ 1. CWE — 40-rule keyword trie + 35-tag map (local, instant)
│ 2. CVSS — NVD REST API v2, CVSS 3.1→3.0→2.0, in-process cache
│ 3. EPSS — FIRST.org exploitation probability API, in-process cache
│ 4. KEV — CISA Known Exploited Vulnerabilities catalog (sync.Once)
│
▼ SHA-256 fingerprint → deduplicate → group by CWE/CVE/Severity/Target
│
▼ SQLite storage (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 |
| 모드 | 계획 내용 |
|---|
Full | 전체 26개 기능 — 완전 평가 |
Recon | 서브도메인, 포트, HTTP, 기술 검색만 |
Web | HTTP 프로빙, 크롤링, 웹 취약점 검사 |
Binary | Overlord 바이너리/APK/악성코드 분석 에이전트 |
Safe | 위험 없는 읽기 전용 도구만 |
| 노드 | 색상 | 데이터 출처 |
|---|
asset | 보라색 #8b5cf6 | Asset 테이블 |
target | 파란색 #0ea5e9 | Target 테이블 |
service | 초록색 #10b981 | Port 테이블 (열린 포트) |
tech | 호박색 #f59e0b | WebAsset.TechStack + Port.Product |
vuln | 빨간색 #ef4444 | Vulnerability + CVE 테이블 |
exploit | 진한 빨간색 #dc2626 | IsKEV=true AND HasPOC=true인 CVE |