
Marco automatizado de bug bounty y reconocimiento — engloba Subfinder, Naabu, Httpx, Nuclei, Nmap, CVEMap, Gowitness, Katana y más detrás de una interfaz web unificada
Una plataforma de seguridad ofensiva aumentada con IA de código abierto que envuelve herramientas de seguridad conocidas detrás de una interfaz web unificada — con escaneo distribuido, informes generados por IA, un planificador de escaneo inteligente, un gráfico de ataque interactivo y un SDK de plugins comunitario.
También echa un vistazo a ObsidianBox Modern en Google Play.
| Sección | Descripción |
|---|---|
| Por qué | Motivación y filosofía |
| Herramientas integradas | Las 10 herramientas de código abierto orquestadas por XPFarm |
| Mapa de arquitectura | Arquitectura completa del sistema, pipeline de escaneo, flujo de datos |
| Overlord — Análisis con IA | Agente de IA para análisis de binarios/malware/web |
| Informes de Bug Bounty | Informes de divulgación profesionales generados por IA |
| Planificador de escaneo con IA | Planificador de pasos de reconocimiento y explotación optimizado por IA |
| Trabajadores distribuidos | Ejecuta escaneos en múltiples máquinas en paralelo |
| Gráfico de escaneo | Gráfico interactivo de activos, servicios, vulnerabilidades, exploits |
| SDK de plugins | Sistema de herramientas, agentes y pipelines extensible por la comunidad |
| Motor de normalización de hallazgos | Hallazgos de seguridad unificados, enriquecidos y deduplicados |
| Novedades | Mejoras recientes en seguridad, confiabilidad y UX |
| Configuración | Instrucciones de compilación e implementación |
| Pendientes | Funcionalidades planificadas y hoja de ruta |

Herramientas como Assetnote son excelentes — 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 las integra para que puedas tener un escáner de vulnerabilidades que sea de código abierto y menos corporativo.
El enfoque estuvo en construir un escáner de vulnerabilidades donde puedas ver qué falla o se elimina en segundo plano, en lugar de preguntarte sobre el misterio. Todo lo que hace el pipeline de escaneo se muestra al usuario.

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 es un agente de IA integrado impulsado por OpenCode que puede analizar binarios, archivos comprimidos, APK y objetivos web. Sube un archivo y chatea con él: el agente usa radare2, strings, triaje de archivos, Frida y más para investigar tu objetivo.




Genera informes de divulgación profesionales a partir de los hallazgos de tu escaneo con un solo clic. Overlord IA sintetiza tu inventario de activos, hallazgos de vulnerabilidades, contexto del gráfico y datos CVE en un informe pulido.
Formatos:
| Formato | Salida |
|---|---|
Cómo funciona:
.md, .html o .pdf — o copia el Markdown sin procesar
Overlord selecciona los pasos óptimos de reconocimiento y explotación para tus objetivos basándose en lo que ya se ha descubierto — inventario de activos, hallazgos existentes, estructura del gráfico y capacidades de herramientas disponibles.
Modos:
Cómo funciona:
Registro de capacidades: 10 módulos integrados + 16 agentes Overlord, cada uno etiquetado con nivel de riesgo (seguro / activo / destructivo) y categoría para filtrado por modo.

Ejecuta escaneos en múltiples máquinas en paralelo. Despliega nodos trabajadores en hosts remotos y se registran automáticamente con el controlador, solicitan trabajos, ejecutan herramientas localmente y envían los resultados de vuelta.
Desplegar un trabajador:
./xpfarm-worker -controller http://xpfarm-host:8888 -id worker-1 -labels high-bandwidth,internal
Cómo funciona:
Cola de trabajos: Crea trabajos desde la interfaz de Trabajadores o mediante POST /api/jobs/create. La cola muestra estado en vivo, trabajador asignado y salida del resultado.

XPFarm construye un gráfico dirigido unificado de cada entidad descubierta durante el escaneo, lo que facilita responder preguntas como "¿qué servicios ejecutan tecnología con un exploit CVE activo?" o "muéstrame todo lo accesible desde este activo".
Tipos de nodos:
Ruta de ejemplo:
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 es extensible mediante un SDK de plugins comunitario. Cualquiera puede añadir nuevas herramientas, agentes y pipelines sin tocar el código principal.
plugins/
├── all/all.go ← añade aquí la importación de tu plugin
├── example-echo/ ← plantilla inicial minimalista
├── example-repo-scanner/ ← ejemplo de escáner de repositorio simulado
├── repo-semgrep/ ← plugin Semgrep SAST (listo para producción)
└── repo-secrets/ ← plugin Gitleaks + SecretFinder (listo para producción)
Escribir un plugin — tres pasos:
plugins/mi-plugin/plugin.go — implementa Tool y/o Agent, llama a plugin.RegisterTool() / plugin.RegisterAgent() en init()plugins/mi-plugin/plugin.yaml — metadatos_ "xpfarm/plugins/mi-plugin" en plugins/all/all.goGET /api/plugins lista todas las herramientas, agentes, pipelines y manifiestos registrados.
Las salidas sin procesar de los escáneres de Nuclei, Nmap, Semgrep y Gitleaks se normalizan en un modelo de Hallazgo unificado, enriquecido con inteligencia de amenazas en vivo, deduplicado y agrupado.
POST /api/normalize {"source": "nuclei", "raw": {...}}
│
▼ Adaptador (nuclei / nmap / semgrep / gitleaks)
│ → Hallazgo canónico (CVE, CWE, gravedad, evidencia, etiquetas)
│
▼ Enriquecedores (aplicados en orden)
│ 1. CWE — trie de palabras clave de 40 reglas + mapa de 35 etiquetas (local, instantáneo)
│ 2. CVSS — API REST NVD v2, CVSS 3.1→3.0→2.0, caché en proceso
│ 3. EPSS — API de probabilidad de explotación de FIRST.org, caché en proceso
│ 4. KEV — catálogo de vulnerabilidades explotadas conocidas de CISA (sync.Once)
│
▼ Huella SHA-256 → deduplicar → agrupar por CWE/CVE/Gravedad/Objetivo
│
▼ Almacenamiento SQLite (FindingRecord + GroupRecord)
./xpfarm-workerdata/.xpfarm.key./xpfarm.sh update para actualizaciones optativas# Recomendado
./xpfarm.sh build # Construir todos los contenedores
./xpfarm.sh up # Iniciar todo (xpfarm :8888 + overlord :3000)
./xpfarm.sh update # Reconstruir con las últimas versiones de herramientas (actualización optativa)
# Windows
.\xpfarm.ps1 build
.\xpfarm.ps1 up
# Docker estándar
docker compose up --build
# Compilar desde código fuente (sin Overlord)
go build -o xpfarm
./xpfarm
./xpfarm -debug







![]() Asjidkalam |
![]() jamoski3112 Investigación |
Markdown |
.md limpio con resumen ejecutivo, tabla de hallazgos, remediación |
PDF | Renderizado mediante wkhtmltopdf, recurre a HTML |
HackerOne | Estructura optimizada para la plataforma con CVSS, pasos de reproducción |
Bugcrowd | Título, gravedad, categoría VRT, impacto, PoC |
| Modo | Lo que planifica |
|---|
Completo | Las 26 capacidades — evaluación completa |
Reconocimiento | Solo descubrimiento de subdominios, puertos, HTTP, tecnologías |
Web | Sondeo HTTP, rastreo, verificaciones de vulnerabilidades web |
Binario | Agentes de Overlord para análisis de binarios/APK/malware |
Seguro | Solo herramientas de solo lectura sin riesgo |
| Nodo | Color | Poblado desde |
|---|
asset | púrpura #8b5cf6 | Tabla de activos |
target | azul #0ea5e9 | Tabla de objetivos |
service | verde #10b981 | Tabla de puertos (puertos abiertos) |
tech | ámbar #f59e0b | WebAsset.TechStack + Port.Product |
vuln | rojo #ef4444 | Tablas de vulnerabilidad y CVE |
exploit | rojo oscuro #dc2626 | CVEs con IsKEV=true Y HasPOC=true |