
UltraViolet v1.0.11
Motor de descubrimiento de red y búsqueda autohospedado con escaneo continuo de puertos, sondeo profundo de protocolos en ~100 servicios, coincidencia local de CVE y búsqueda de texto completo para inventario de infraestructura y monitoreo de riesgos.
UltraViolet
Descubrimiento y búsqueda de red autoalojados: tu propio Shodan, en tu propio hardware.
Escaneo TCP/UDP · sondas de ~100 protocolos · huellas TLS/JARM · coincidencia de CVEs · búsqueda de texto completo · seguimiento de deltas · alertas
Inicio rápido · Características · Arquitectura · Documentación · Producción
Importante. Escanea únicamente redes que te pertenezcan o para las que tengas autorización por escrito. UltraViolet realiza reconocimiento pasivo de servicios; no explota vulnerabilidades.
Por qué UltraViolet
| Caso de uso | Qué obtienes |
|---|---|
| Perímetro e inventario | Descubrimiento continuo de puertos y servicios abiertos en rangos CIDR |
| Búsqueda de infraestructura | Búsqueda de texto completo en cuerpos HTTP, banners, TLS, DNS y CVEs |
| Riesgo y cumplimiento | Coincidencia local con NVD más CISA KEV y EPSS, sin dependencia de la nube |
| Despliegues aislados | Archivo sin conexión con imágenes Docker, semilla de CVEs y GeoIP MMDB en disco |
| Seguimiento de cambios | Deltas entre escaneos, eventos WebSocket, alertas en búsquedas guardadas |
Un solo inquilino, una pila de Docker Compose y control total sobre tus datos.
✨ Características
Descubrimiento
- Escáner de conexión TCP con masscan o zmap como motor de descubrimiento
- Sondas UDP en puertos configurables
- Acotado por
SCAN_ALLOWED_CIDRScon límites de hosts y puertos
Sondas profundas (~100 protocolos)
- Web: HTTP/HTTPS, HTTP/3, GraphQL, hash de favicon,
robots.txt,security.txt, pila tecnológica - TLS: cadenas de certificados, JARM, JA3S/JA4S, clasificación de configuración
- Correo y directorios: SMTP, POP3/IMAP, LDAP, IPMI
- Bases de datos y colas: MySQL, PostgreSQL, MongoDB, Redis, Kafka, MQTT, NATS, AMQP…
- ICS/SCADA: Modbus, BACnet, DNP3, IEC 104, S7Comm, ENIP, OPC UA…
- IoT y multimedia: ONVIF, RTSP, Chromecast, AirPlay, UPnP…
- Lista completa en la documentación de protocolos
Enriquecimiento
- DNS inverso, GeoIP (MMDB), ASN
- DNS directo opcional y descubrimiento en registros CT
CVE y riesgo
- Espejo local de NVD con sincronización en segundo plano y coincidencia basada en huellas
- CISA KEV y FIRST EPSS
Operaciones
- RBAC (
viewer/operator/admin), JWT + tokens de refresco - Programación de escaneos, pausa/reanudación, recuperación de huérfanos tras reiniciar workers
- Prometheus
/metrics, perfil opcional de Grafana - Registro de auditoría, limitación de tasa, políticas de retención
🏗 Arquitectura
flowchart TB
Browser["Browser"]
FE["service-frontend<br/>React + nginx"]
API["uv-api<br/>REST · WS · metrics"]
PG[("PostgreSQL 16")]
SCAN["uv-scanner<br/>probe pipeline"]
Browser --> FE
FE -->|"/api"| API
FE -->|"/realtime"| API
API <--> PG
SCAN <--> PG
API -.->|LISTEN/NOTIFY| API
La imagen de UI publicada redirige /api/ y /realtime a uv-api — origen único, sin reconstrucción del frontend por URL de API.
| Directorio | Propósito |
|---|---|
service-api/ | Go: uv-api (API HTTP, WebSocket, workers) + uv-scanner (pipeline) |
service-frontend/ | React 19 + Vite + RTK: escaneos, hosts, búsqueda, panel |
service-documentation-frontend/ | VitePress: documentación de usuarios y operadores |
service-env/ | docker-compose, secrets, install.sh / upgrade.sh / backup |
Reglas de desarrollo del backend: CLAUDE.md.
🚀 Inicio rápido
Requisitos: Go 1.25+, Docker Engine ≥ 24, ~4 GB de RAM. Las imágenes de producción están dirigidas a Linux amd64.
Ejecutar desde Docker Hub (sin compilar el código)
Camino para principiantes: descarga las imágenes publicadas con
service-env/docker-compose.registry.yml:
cd service-env
cp env.registry.example .env
# set POSTGRES_PASSWORD, AUTH_JWT_SECRET, AUTH_BOOTSTRAP_PASSWORD
mkdir -p geoip catalog-seed
docker compose -f docker-compose.registry.yml pull
docker compose -f docker-compose.registry.yml up -d
# UI → http://localhost:3000
Consulta Docker Registry en el sitio de documentación.
Desarrollar desde el código fuente
Las imágenes de API/scanner copian binarios precompilados desde service-api/bin/ (no se compilan dentro de Docker). make dev ejecuta make -C service-api build-linux antes de docker compose … --build.
git clone https://github.com/yakushstanislav/UltraViolet.git
cd UltraViolet/service-env
cp .env.example .env
mkdir -p secrets
openssl rand -hex 32 > secrets/postgres_password
openssl rand -hex 32 > secrets/auth_jwt_secret
cd ..
make dev
| URL | Propósito |
|---|---|
| http://localhost:3000 | UI (API a través de nginx /api/) |
| http://localhost:8080 | API directamente |
| http://localhost:9090/metrics | Prometheus |
Arranque de desarrollo: admin / admin (solo cuando APP_ENV≠production).
📖 Documentación
Guía completa: VitePress en service-documentation-frontend/docs/:
make docs-dev # → http://localhost:5173
En producción, habilita el perfil docs:
cd service-env && docker compose --profile docs up -d
# → http://localhost:${UV_DOCUMENTATION_PORT:-3002}
Secciones clave: instalación · escaneo · API · despliegue · instalación sin conexión.
🛠 Desarrollo
Docker completo
make dev # build-linux → compose prod + dev override --build
Recompila los binarios Go tras cambios en el backend (make -C service-api build-linux) y luego reinicia o vuelve a ejecutar make dev.
Modo híbrido (iteración más rápida del backend)
make dev-db # PostgreSQL only on :5432