
UltraViolet v1.0.11
Mecanismo de descoberta e pesquisa de rede auto-hospedado com varredura contínua de portas, sondagem profunda de protocolos em ~100 serviços, correspondência local de CVEs e pesquisa de texto completo para inventário de infraestrutura e monitoramento de riscos.
UltraViolet
Descoberta e busca de rede auto-hospedada — seu próprio Shodan, no seu hardware.
Varredura TCP/UDP · ~100 sondas de protocolo · impressões digitais TLS/JARM · correspondência de CVE · busca em texto completo · rastreamento de deltas · alertas
Início rápido · Recursos · Arquitetura · Documentação · Checklist de produção
Importante. Varra apenas redes que você possui ou para as quais tenha autorização por escrito para varrer. O UltraViolet realiza reconhecimento passivo de serviços — ele não explora vulnerabilidades.
Por que UltraViolet
| Caso de uso | O que você obtém |
|---|---|
| Perímetro e inventário | Descoberta contínua de portas abertas e serviços em intervalos de CIDR |
| Busca de infraestrutura | Busca em texto completo em corpos HTTP, banners, TLS, DNS e CVEs |
| Risco e conformidade | Correspondência local com NVD, além de CISA KEV e EPSS — sem dependência de nuvem |
| Implantações em ambientes isolados (air-gapped) | Arquivo offline com imagens Docker, seed de CVEs e MMDB do GeoIP em disco |
| Rastreamento de mudanças | Deltas entre varreduras, eventos WebSocket, alertas em buscas salvas |
Locatário único, um único stack Docker Compose, controle total sobre seus dados.
✨ Recursos
Descoberta
- Scanner TCP connect com masscan ou zmap como motor de descoberta
- Sondas UDP em portas configuráveis
- Escopado por
SCAN_ALLOWED_CIDRScom limites de host e porta
Sondas profundas (~100 protocolos)
- Web: HTTP/HTTPS, HTTP/3, GraphQL, hash de favicon,
robots.txt,security.txt, stack de tecnologia - TLS: cadeias de certificados, JARM, JA3S/JA4S, avaliação de configuração
- E-mail e diretórios: SMTP, POP3/IMAP, LDAP, IPMI
- Bancos de dados e filas: MySQL, PostgreSQL, MongoDB, Redis, Kafka, MQTT, NATS, AMQP…
- ICS/SCADA: Modbus, BACnet, DNP3, IEC 104, S7Comm, ENIP, OPC UA…
- IoT e mídia: ONVIF, RTSP, Chromecast, AirPlay, UPnP…
- Lista completa na documentação de protocolos
Enriquecimento
- DNS reverso, GeoIP (MMDB), ASN
- Descoberta opcional de DNS direto e logs de CT
CVE e risco
- Espelho local do NVD com sincronização em segundo plano e correspondência baseada em impressões digitais
- CISA KEV e FIRST EPSS
Operações
- RBAC (
viewer/operator/admin), JWT + tokens de atualização - Agendamentos de varredura, pausar/retomar, recuperação de órfãos após reinício do worker
- Prometheus
/metrics, perfil opcional de Grafana - Log de auditoria, limite de taxa, políticas de retenção
🏗 Arquitetura
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
A imagem de UI do release faz proxy de /api/ e /realtime para uv-api — origem única, sem reconstrução do frontend por URL de API.
| Diretório | Finalidade |
|---|---|
service-api/ | Go: uv-api (API HTTP, WebSocket, workers) + uv-scanner (pipeline) |
service-frontend/ | React 19 + Vite + RTK — varreduras, hosts, busca, painel |
service-documentation-frontend/ | VitePress — documentação de usuário e operador |
service-env/ | docker-compose, segredos, install.sh / upgrade.sh / backup |
Regras de desenvolvimento do backend: CLAUDE.md.
🚀 Início rápido
Requisitos: Go 1.25+, Docker Engine ≥ 24, ~4 GB de RAM. As imagens de produção são voltadas para Linux amd64.
Executar pelo Docker Hub (sem compilar o código-fonte)
Caminho para iniciantes — baixe as imagens publicadas com
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
Veja Docker Registry no site de documentação.
Desenvolver a partir do código-fonte
As imagens da API/scanner copiam binários pré-compilados de service-api/bin/ (eles não são compilados dentro do Docker). O make dev executa 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 via nginx /api/) |
| http://localhost:8080 | API diretamente |
| http://localhost:9090/metrics | Prometheus |
Bootstrap de desenvolvimento: admin / admin (somente quando APP_ENV≠production).
📖 Documentação
Guia completo — VitePress em service-documentation-frontend/docs/:
make docs-dev # → http://localhost:5173
Em produção, habilite o perfil docs:
cd service-env && docker compose --profile docs up -d
# → http://localhost:${UV_DOCUMENTATION_PORT:-3002}
Seções principais: instalação · varredura · API · implantação · instalação offline.
🛠 Desenvolvimento
Docker completo
make dev # build-linux → compose prod + dev override --build
Recompile os binários Go após alterações no backend (make -C service-api build-linux) e reinicie ou execute novamente o make dev.
Modo híbrido (iteração mais rápida no backend)
make dev-db # PostgreSQL only on :5432