
Быстрый CLI для идентификации сервисов по 170+ протоколам (TCP/UDP/SCTP) — разработан компанией Praetorian
Возможности • Установка • Быстрый старт • Использование • Протоколы • Библиотека • Сценарии использования • Устранение неполадок
Высокопроизводительный фингерпринтинг сервисов, написанный на Go. Определяйте 170+ сетевых протоколов через транспорты TCP, UDP и SCTP с извлечением подробных метаданных.
Nerva быстро обнаруживает и идентифицирует сервисы, работающие на открытых сетевых портах. Используйте её вместе со сканерами портов, такими как Naabu, для фингерпринтинга обнаруженных сервисов или интегрируйте её в свои конвейеры безопасности для автоматизированной разведки.
--misconfigs)--udp) и SCTP (--sctp, только Linux)--fast)host:portСкачайте готовый бинарный файл со страницы Releases.
go install github.com/praetorian-inc/nerva/cmd/nerva@latest
### Из исходного кода```sh
git clone https://github.com/praetorian-inc/nerva.git
cd nerva
go build ./cmd/nerva
./nerva -h
git clone https://github.com/praetorian-inc/nerva.git cd nerva docker build -t nerva . docker run --rm nerva -h docker run --rm nerva -t example.com:80 --json
## Быстрый старт
Определение отпечатка одного целевого узла:```sh
nerva -t example.com:22
# ssh://example.com:22
Получить подробные метаданные JSON:```sh nerva -t example.com:22 --json
Pipe из сканера портов:```sh
naabu -host example.com -silent | nerva
# http://example.com:80
# ssh://example.com:22
# https://example.com:443
Полный справочник — каждая подкоманда, псевдоним и флаг, включая скрытые от --help — генерируется в docs/CLI.md.
nerva [flags]
TARGET SPECIFICATION: Requires host:port or ip:port format. Assumes ports are open.
EXAMPLES: nerva -t example.com:80 nerva -t example.com:80,example.com:443 nerva -l targets.txt nerva --json -t example.com:80 cat targets.txt | nerva
### Примеры
**Несколько целей:**```sh
nerva -t example.com:22,example.com:80,example.com:443
Из файла:```sh nerva -l targets.txt --json -o results.json
**Сканирование UDP** (может потребоваться root):```sh
sudo nerva -t example.com:53 -U
# dns://example.com:53
Сканирование SCTP (только Linux):```sh nerva -t telecom-server:3868 -S
**Быстрый режим** (только порты по умолчанию):```sh
nerva -l large-target-list.txt --fast --json
Прокси-маршрутизация с удалённым разрешением DNS:```sh nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p
### Обнаружение ошибок конфигурации безопасности
Nerva может выявлять распространённые ошибки конфигурации безопасности при включении флага `--misconfigs`:```sh
nerva -t example.com:2375 --misconfigs --json
Обнаруженные ошибки конфигурации:
| Finding ID | Severity | Description |
|---|---|---|
docker-unauth-api | Critical | Docker API доступен без аутентификации |
x11-unauth-access | Critical | X11-сервер допускает неаутентифицированные подключения |
smb-signing-not-required | Medium | Подписывание SMB не требуется (риск relay-атаки) |
telnet-cleartext | Medium | Telnet передаёт учётные данные в открытом виде |
vnc-detected | Medium | Обнаружен VNC (часто слабая аутентификация) |
ssh-password-auth | Medium | Сервер допускает аутентификацию по паролю |
ssh-weak-cipher | Low | Сервер предлагает слабые шифры (RC4, 3DES, Blowfish) |
ssh-weak-kex | Low | Сервер предлагает слабые алгоритмы обмена ключами |
ssh-weak-mac | Low | Сервер предлагает слабые алгоритмы MAC |
ftp-cleartext | Low | FTP передаёт учётные данные в открытом виде |
Пример вывода с ошибками конфигурации:```json { "host": "example.com", "port": 2375, "protocol": "docker", "anonymous_access": true, "security_findings": [ { "id": "docker-unauth-api", "severity": "critical", "description": "Docker API accessible without authentication", "evidence": "Successfully queried /version endpoint without credentials" } ] }
### Поддержка прокси
Nerva поддерживает маршрутизацию трафика сканирования через SOCKS5 и HTTP-прокси с настраиваемым разрешением DNS.
**Поддерживаемые схемы прокси:**
- `socks5://` - SOCKS5-прокси с локальным разрешением DNS
- `socks5h://` - SOCKS5-прокси с разрешением DNS на стороне прокси (всегда)
- `http://` - HTTP CONNECT-прокси
- `https://` - HTTPS CONNECT-прокси
**Аутентификация прокси:**```sh
# Inline authentication (URL format)
nerva -t example.com:80 --proxy socks5://username:[email protected]:1080
# Separate authentication flag
nerva -t example.com:80 --proxy socks5://127.0.0.1:1080 --proxy-auth username:password
Стратегии разрешения DNS (--dns-order):