
Experiencia gratuita en bug bounty, escaneo de vulnerabilidades envolviendo herramientas bien mantenidas, para realizar pruebas automatizadas. Junto a agentes de IA para análisis binario, que incluye conexión a Android externo o emulador para realizar análisis dinámico.
Un escáner de vulnerabilidades de código abierto que envuelve herramientas de seguridad de código abierto conocidas tras una única interfaz web.

| Sección | Descripción |
|---|---|
| Por qué | Motivación y filosofía detrás de XPFarm |
| Herramientas incluidas | Las 10 herramientas de código abierto orquestadas por XPFarm |
| Mapa de arquitectura | Arquitectura completa del sistema, pipeline de escaneo, flujo de datos y subsistema de IA |
| Overlord - Análisis binario con IA | Agente de IA integrado para análisis de binarios/malware |
| Configuración | Instrucciones de compilación e implementación (Docker / fuente) |
| Capturas de pantalla aleatorias | Capturas de pantalla de escaneos y registros |
| Pendientes | Funcionalidades planificadas y hoja de ruta |

flowchart TB
subgraph ENTRY["Entrypoint - main.go"]
M1["Parse Flags<br/>-debug mode"]
M2["InitDB<br/>SQLite + WAL + GORM"]
M3["InitModules<br/>Register 10 tool wrappers"]
M4["Health Check<br/>Auto-install missing tools"]
M5["RunUpdates<br/>-up flag on all PD tools"]
M6["CheckAndIndexTemplates<br/>Nuclei template versioning"]
M7["StartServer<br/>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<br/>Embedded templates + static"]
subgraph Pages["HTML Pages"]
P1["Dashboard"]
P2["Assets"]
P3["Asset Details"]
P4["Target Details"]
P5["Modules"]
P6["Settings"]
P7["Overlord Chat"]
P8["Overlord Binary"]
P9["Search"]
P10["Advanced Scan"]
P11["Scan Settings"]
end
subgraph REST["REST API"]
direction LR
A1["POST /api/scan"]
A2["POST /api/search"]
A3["GET/POST /api/overlord/*"]
A4["POST /assets/create|delete"]
A5["POST /settings/*"]
A6["GET /api/active-scans"]
A7["POST /api/search/save|delete"]
A8["GET /api/overlord/events<br/>SSE Proxy"]
end
GIN --> Pages
GIN --> REST
end
subgraph SCAN_ENGINE["Scan Engine - internal/core/"]
direction TB
SM["ScanManager<br/>Singleton, mutex-guarded<br/>Active scan tracking"]
subgraph PIPELINE["8-Stage Scanning Pipeline - manager.go"]
direction TB
S0["Target Input<br/>ParseTarget + NormalizeToHostname"]
S1["Stage 1: Subfinder<br/>Subdomain Discovery"]
S2["Stage 2: Filter & Save<br/>ResolveAndCheck per subdomain<br/>Cloudflare / Localhost / Alive"]
S3["Stage 3: Naabu<br/>Port Scanning<br/>5-worker pool via channel"]
S4["Stage 4: Nmap<br/>Service Enumeration<br/>Version + Script detection"]
S5["Stage 5: Httpx<br/>HTTP Probing<br/>Rich metadata extraction"]
S6["Stage 6: Parallel Web Processing"]
S7["Stage 7: CVEMap<br/>CVE lookup by product/tech"]
S8["Stage 8: Nuclei<br/>Vulnerability Scanning"]
S0 --> S1 --> S2 --> S3 --> S4 --> S5 --> S6 --> S7 --> S8
end
subgraph STAGE6_DETAIL["Stage 6 - Parallel Web Asset Processing"]
direction LR
GW["Gowitness<br/>Screenshots"]
KAT["Katana<br/>JS Crawling, depth=5"]
UF["URLFinder<br/>URL Discovery"]
WAP["Wappalyzer<br/>Tech Detection<br/>Header + Body analysis"]
end
subgraph NUCLEI_PLAN["Stage 8 - Nuclei Scan Plan"]
direction TB
NP1["BuildNucleiPlan<br/>serviceTagMap lookup"]
NP2["Network Scans<br/>Per-port, service tags"]
NP3["Web Auto Scan<br/>-as wappalyzer mode"]
NP4["Fallback Scan<br/>Unmapped services"]
NP5["Enabled Mode<br/>Custom template workflow"]
NP1 --> NP2
NP1 --> NP3
NP1 --> NP4
NP1 --> NP5
end
subgraph RESOLVE["Target Resolution - target.go"]
direction LR
R1["ParseTarget<br/>IP / CIDR / Domain / URL"]
R2["ResolveAndCheck<br/>DNS + Cloudflare + Localhost"]
R3["DNS Cache<br/>sync.Map, 5min TTL"]
R1 --> R2 --> R3
end
subgraph SEARCH["Search Engine - search.go"]
SRCH["GlobalSearch<br/>Regex filter engine<br/>SQL joins across 5 tables<br/>AND/OR/Negate chaining"]
end
subgraph TEMPLATE_IDX["Template Indexer - template_indexer.go"]
TI["IndexNucleiTemplates<br/>Walk filesystem, batch upsert<br/>Version-tracked re-index"]
end
SM --> PIPELINE
S6 --> STAGE6_DETAIL
S8 --> NUCLEI_PLAN
end
subgraph MODULES["Module System - internal/modules/"]
direction TB
IFACE["Module Interface<br/>Name / Description<br/>CheckInstalled / Install / Run"]
subgraph REGISTRY["Registry - 10 Registered Modules"]
direction LR
T1["Subfinder<br/>Subdomain enum"]
T2["Naabu<br/>Port scan"]
T3["Nmap<br/>Service detection"]
T4["Httpx<br/>HTTP probe"]
T5["Gowitness<br/>Screenshots"]
T6["Katana<br/>Web crawling"]
T7["URLFinder<br/>URL discovery"]
T8["Wappalyzer<br/>Tech fingerprint"]
T9["Nuclei<br/>Vuln scanning"]
T10["CVEMap<br/>CVE lookup"]
end
IFACE --> REGISTRY
end
subgraph DATABASE["Database - internal/database/"]
direction TB
DB["SQLite + WAL Mode<br/>GORM ORM<br/>Single writer connection<br/>30s busy timeout"]
subgraph MODELS["Data Models"]
direction LR
DM1["Asset<br/>name, advanced_mode"]
DM2["Target<br/>value, type, is_alive<br/>is_cloudflare, is_localhost"]
DM3["Port<br/>port, protocol<br/>service, product, version"]
DM4["WebAsset<br/>url, title, tech_stack<br/>screenshot, paths"]
DM5["Vulnerability<br/>name, severity<br/>template_id, matcher"]
DM6["CVE<br/>cve_id, severity<br/>cvss, epss, is_kev"]
DM7["ScanResult<br/>tool_name, output"]
DM8["ScanProfile<br/>Feature toggles<br/>Port/Web/Vuln scope"]
DM9["NucleiTemplate<br/>template_id, file_path"]
DM10["SavedSearch<br/>name, query_data"]
DM11["Setting<br/>key-value config"]
end
DM1 -->|has many| DM2
DM2 -->|has many| DM3
DM2 -->|has many| DM4
DM2 -->|has many| DM5
DM2 -->|has many| DM6
DM2 -->|has many| DM7
DM1 -->|has one| DM8
DB --> MODELS
end
subgraph OVERLORD["Overlord - AI Agent Subsystem"]
direction TB
OV_PROXY["Overlord Proxy<br/>internal/overlord/overlord.go"]
subgraph OV_API["OpenCode Serve API"]
direction LR
OA1["GET /session<br/>List sessions"]
OA2["POST /session<br/>Create session"]
OA3["POST /session/:id/prompt_async<br/>Send message"]
OA4["POST /session/:id/abort<br/>Stop analysis"]
OA5["GET /event<br/>SSE stream"]
end
subgraph OV_FILES["File Management"]
direction LR
OF1["Binary Upload<br/>overlord/binaries/"]
OF2["Analysis Output<br/>overlord/output/"]
OF3["Auth JSON<br/>API key storage"]
end
subgraph PROVIDERS["21 AI Providers"]
direction LR
PR1["Anthropic<br/>OpenAI<br/>Groq"]
PR2["DeepSeek<br/>OpenRouter<br/>xAI"]
PR3["Ollama Local<br/>Cerebras<br/>Together"]
PR4["OpenCode Zen/Go<br/>+ 12 more"]
end
OV_PROXY --> OV_API
OV_PROXY --> OV_FILES
OV_PROXY --> PROVIDERS
end
subgraph DOCKER["Docker Deployment - docker-compose.yml"]
direction LR
DC1["xpfarm container<br/>Go app on :8888"]
DC2["overlord container<br/>OpenCode serve :3000<br/>radare2 + analysis tools"]
DC3["mobsf container<br/>Mobile scan :8000<br/>optional profile"]
DC1 <-->|xpfarm-network| DC2
DC1 <-->|xpfarm-network| DC3
end
subgraph NOTIFICATIONS["Notifications - internal/notifications/"]
direction LR
N1["Discord Bot<br/>Embed notifications<br/>Scan start/stop alerts"]
N2["Telegram Bot<br/>Markdown messages<br/>Scan start/stop alerts"]
end
subgraph UTILS["Utilities - pkg/utils/"]
direction LR
U1["Gradient Logger<br/>Color-coded terminal output"]
U2["Cloudflare IP Detector<br/>IPv4 + IPv6 CIDR matching"]
U3["Binary Resolver<br/>PATH + GOPATH fallback"]
end
%% Cross-component connections
M7 --> GIN
A1 --> SM
A2 --> SRCH
A3 --> OV_PROXY
SM -->|uses| IFACE
SM -->|reads/writes| DB
SM -->|callbacks| N1
SM -->|callbacks| N2
PIPELINE -->|ResolveAndCheck| RESOLVE
PIPELINE -->|recordResult| DB
S5 -->|analyzes response| WAP
A8 -->|proxies| OA5
Herramientas como Assetnote son geniales: bien mantenidas, actualizadas y transparentes en la identificación de vulnerabilidades. Pero no son de código abierto. Tampoco es necesario reinventar la rueda, ya que existen muchas herramientas sólidas de código abierto. XPFarm simplemente las agrupa para que puedas tener un escáner de vulnerabilidades que sea de código abierto y menos corporativo.
El enfoque fue construir un escáner de vulnerabilidades donde también puedas ver qué falla o se elimina en segundo plano, en lugar de preguntarte por ese misterio.

Overlord es un agente de IA integrado impulsado por OpenCode que puede analizar binarios, archivos comprimidos y otros archivos. Sube un binario y chatea con él: el agente utiliza herramientas como radare2, strings, clasificación de archivos y más para investigar tu objetivo.


# Using the helper scripts (recommended)
./xpfarm.sh build # Build all containers
./xpfarm.sh up # Start everything
# Windows
.\xpfarm.ps1 build
.\xpfarm.ps1 up
# Standard Docker
docker compose up --build
# Build from source (no Overlord)
go build -o xpfarm
./xpfarm
./xpfarm -debug





![]() Asjidkalam |
![]() jamoski3112 Investigación |