
nerva v1.69.6
Быстрый CLI для идентификации сервисов по 170+ протоколам (TCP/UDP/SCTP) — разработан компанией Praetorian
Nerva
Nerva: быстрый CLI для фингерпринтинга сервисов
Возможности • Установка • Быстрый старт • Использование • Протоколы • Библиотека • Сценарии использования • Устранение неполадок
Высокопроизводительный фингерпринтинг сервисов, написанный на Go. Определяйте 170+ сетевых протоколов через транспорты TCP, UDP и SCTP с извлечением богатых метаданных.
Nerva быстро обнаруживает и идентифицирует сервисы, работающие на открытых сетевых портах. Используйте её вместе со сканерами портов, такими как Naabu, для фингерпринтинга обнаруженных сервисов или интегрируйте её в свои security-пайплайны для автоматизированной разведки.
Возможности
- 170+ плагинов протоколов — базы данных, удалённый доступ, веб-сервисы, обмен сообщениями, промышленные и телеком-протоколы
- 76 HTTP-фингерпринтеров — обнаружение веб-технологий, включая межсетевые экраны, базы данных, AI/LLM-серверы и многое другое
- Обнаружение ошибок конфигурации безопасности — выявление распространённых проблем безопасности, таких как неаутентифицированные API и протоколы с передачей данных в открытом виде (
--misconfigs) - Поддержка нескольких транспортов — TCP (по умолчанию), UDP (
--udp) и SCTP (--sctp, только Linux) - Поддержка прокси — прозрачная маршрутизация трафика сканирования через SOCKS5 или HTTP-прокси с настраиваемым разрешением DNS
- Богатые метаданные — извлечение версий, конфигураций и деталей, значимых для безопасности, из каждого сервиса
- Быстрый режим — сканирование только портов по умолчанию для быстрой разведки (
--fast) - Гибкий вывод — форматы JSON, CSV или удобочитаемый
- Удобство для пайплайнов — передача из Naabu, Nmap или любого инструмента, выводящего
host:port - Go-библиотека — импорт напрямую в ваши Go-приложения
Установка
Релизы
Скачайте готовый бинарник со страницы Releases.
Из GitHub
go install github.com/praetorian-inc/nerva/cmd/nerva@latest
Из исходного кода
git clone https://github.com/praetorian-inc/nerva.git
cd nerva
go build ./cmd/nerva
./nerva -h
Docker
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
Быстрый старт
Определение отпечатка одного целевого узла:
nerva -t example.com:22
# ssh://example.com:22
Получить подробные метаданные JSON:
nerva -t example.com:22 --json
# {"host":"example.com","ip":"93.184.216.34","port":22,"protocol":"ssh","transport":"tcp","metadata":{...}}
Передача из сканера портов:
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
Примеры
Несколько целей:
nerva -t example.com:22,example.com:80,example.com:443
Из файла:
nerva -l targets.txt --json -o results.json
Сканирование UDP:
nerva -t example.com:53 -U
# dns://example.com:53
Сканирование SCTP (только Linux):
nerva -t telecom-server:3868 -S
# diameter://telecom-server:3868
Быстрый режим (только порты по умолчанию):
nerva -l large-target-list.txt --fast --json
Прокси-маршрутизация с удалённым разрешением DNS:
nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p
Обнаружение ошибок конфигурации безопасности
Nerva может выявлять распространённые ошибки конфигурации безопасности при включении флага --misconfigs:
nerva -t example.com:2375 --misconfigs --json
Обнаруженные ошибки конфигурации:
| Идентификатор находки | Уровень серьёзности | Описание |
|---|---|---|
docker-unauth-api | Критический | Docker API доступен без аутентификации |
x11-unauth-access | Критический | X11-сервер допускает неаутентифицированные подключения |
dotnet-remoting-http-exposed | Высокий | HTTP-канал .NET Remoting открыт (риск десериализации) |
smb-signing-not-required | Средний | Подписывание SMB не требуется (риск relay-атаки) |
telnet-cleartext | Средний | Telnet передаёт учётные данные в открытом виде |
vnc-detected | Средний | Обнаружен VNC (часто слабая аутентификация) |
ssh-password-auth | Средний | Сервер допускает аутентификацию по паролю |
ssh-weak-cipher | Низкий | Сервер предлагает слабые шифры (RC4, 3DES, Blowfish) |
ssh-weak-kex | Низкий | Сервер предлагает слабые алгоритмы обмена ключами |
ssh-weak-mac | Низкий | Сервер предлагает слабые алгоритмы MAC |
ftp-cleartext | Низкий | FTP передаёт учётные данные в открытом виде |
Пример вывода с ошибками конфигурации:
{
"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 с локальным разрешением DNSsocks5h://— прокси SOCKS5 с разрешением DNS на стороне прокси (всегда)http://— прокси HTTP CONNECThttps://— прокси HTTPS CONNECT
Аутентификация прокси:
# 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):