
UltraViolet v1.0.11
Самостоятельно размещаемый инструмент для обнаружения сети и поисковый движок с непрерывным сканированием портов, глубоким зондированием протоколов по ~100 сервисам, локальным сопоставлением CVE и полнотекстовым поиском для инвентаризации инфраструктуры и мониторинга рисков.
UltraViolet
Самостоятельно размещаемое обнаружение сети и поиск — ваш собственный Shodan на вашем оборудовании.
Сканирование TCP/UDP · ~100 протокольных проб · отпечатки TLS/JARM · сопоставление CVE · полнотекстовый поиск · отслеживание дельт · оповещения
Быстрый старт · Возможности · Архитектура · Документация · Продакшн
Важно. Сканируйте только те сети, которыми владеете или на сканирование которых имеете письменное разрешение. UltraViolet выполняет пассивную разведку сервисов — он не эксплуатирует уязвимости.
Зачем нужен UltraViolet
| Вариант использования | Что вы получаете |
|---|---|
| Периметр и инвентаризация | Непрерывное обнаружение открытых портов и сервисов в диапазонах CIDR |
| Поиск по инфраструктуре | Полнотекстовый поиск по телам HTTP-ответов, баннерам, TLS, DNS и CVE |
| Риски и соответствие | Локальное сопоставление NVD плюс CISA KEV и EPSS — без зависимости от облака |
| Изолированные (air-gapped) развертывания | Офлайн-архив с Docker-образами, начальным набором CVE и GeoIP MMDB на диске |
| Отслеживание изменений | Дельты между сканированиями, WebSocket-события, оповещения по сохраненным поискам |
Один арендатор, один стек Docker Compose, полный контроль над вашими данными.
✨ Возможности
Обнаружение
- TCP-сканер подключений с masscan или zmap в качестве движка обнаружения
- UDP-пробы на настраиваемых портах
- Ограничено
SCAN_ALLOWED_CIDRSс лимитами на хосты и порты
Глубокие пробы (~100 протоколов)
- Веб: HTTP/HTTPS, HTTP/3, GraphQL, хеш фавиконки,
robots.txt,security.txt, технологический стек - TLS: цепочки сертификатов, JARM, JA3S/JA4S, оценка конфигурации
- Почта и каталоги: SMTP, POP3/IMAP, LDAP, IPMI
- Базы данных и очереди: MySQL, PostgreSQL, MongoDB, Redis, Kafka, MQTT, NATS, AMQP…
- ICS/SCADA: Modbus, BACnet, DNP3, IEC 104, S7Comm, ENIP, OPC UA…
- Интернет вещей и медиа: ONVIF, RTSP, Chromecast, AirPlay, UPnP…
- Полный список — в документации по протоколам
Обогащение
- Обратный DNS, GeoIP (MMDB), ASN
- Опционально прямой DNS и обнаружение через CT-логи
CVE и риски
- Локальное зеркало NVD с фоновой синхронизацией и сопоставлением на основе отпечатков
- CISA KEV и FIRST EPSS
Эксплуатация
- RBAC (
viewer/operator/admin), JWT + refresh-токены - Расписания сканирования, пауза/возобновление, восстановление потерянных задач после перезапуска воркера
- Prometheus
/metrics, опциональный профиль Grafana - Журнал аудита, ограничение частоты запросов, политики хранения
🏗 Архитектура
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
Образ UI из релиза проксирует /api/ и /realtime на uv-api — единый источник (single origin), без пересборки фронтенда под каждый URL API.
| Каталог | Назначение |
|---|---|
service-api/ | Go: uv-api (HTTP API, WebSocket, воркеры) + uv-scanner (конвейер) |
service-frontend/ | React 19 + Vite + RTK — сканирования, хосты, поиск, дашборд |
service-documentation-frontend/ | VitePress — документация для пользователей и операторов |
service-env/ | docker-compose, секреты, install.sh / upgrade.sh / резервное копирование |
Правила разработки бэкенда: CLAUDE.md.
🚀 Быстрый старт
Требования: Go 1.25+, Docker Engine ≥ 24, ~4 ГБ ОЗУ. Продакшн-образы предназначены для Linux amd64.
Запуск из Docker Hub (без сборки из исходников)
Путь для начинающих — загрузите опубликованные образы с помощью 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
См. раздел Docker Registry на сайте документации.
Разработка из исходного кода
Образы API/сканера копируют предварительно собранные бинарники из service-api/bin/ (они не компилируются внутри Docker). make dev выполняет make -C service-api build-linux перед 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 | Назначение |
|---|---|
| http://localhost:3000 | UI (API через nginx /api/) |
| http://localhost:8080 | API напрямую |
| http://localhost:9090/metrics | Prometheus |
Бутстрап для разработки: admin / admin (только когда APP_ENV≠production).
📖 Документация
Полное руководство — VitePress в service-documentation-frontend/docs/:
make docs-dev # → http://localhost:5173
В продакшене включите профиль docs:
cd service-env && docker compose --profile docs up -d
# → http://localhost:${UV_DOCUMENTATION_PORT:-3002}
Ключевые разделы: установка · сканирование · API · развертывание · офлайн-установка.
🛠 Разработка
Полный Docker
make dev # build-linux → compose prod + dev override --build
Пересоберите Go-бинарники после изменений бэкенда (make -C service-api build-linux), затем перезапустите или выполните make dev заново.
Гибридный режим (более быстрая итерация по бэкенду)
make dev-db # PostgreSQL only on :5432