
nerva v1.69.6
快速服务指纹识别CLI,支持170多种协议(TCP/UDP/SCTP)- 由Praetorian构建
Nerva
Nerva:快速服务指纹识别 CLI
功能特性 • 安装 • 快速开始 • 使用方法 • 协议 • 库 • 使用场景 • 故障排除
使用 Go 编写的高性能服务指纹识别工具。 可识别 TCP、UDP 和 SCTP 传输层上的 170+ 种网络协议,并提取丰富的元数据。
Nerva 可快速检测并识别开放网络端口上运行的服务。可将其与 Naabu 等端口扫描器配合使用,对发现的服务进行指纹识别,或将其集成到你的安全流水线中实现自动化侦察。
功能特性
- 170+ 协议插件 — 数据库、远程访问、Web 服务、消息传递、工业及电信协议
- 76 个 HTTP 指纹识别器 — 检测 Web 技术,包括防火墙、数据库、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
安全配置错误检测
启用 --misconfigs 后,Nerva 可以识别常见的安全配置错误:
nerva -t example.com:2375 --misconfigs --json
检测到的错误配置:
| 发现 ID | 严重性 | 描述 |
|---|---|---|
docker-unauth-api | 严重 | Docker API 可在未经身份验证的情况下访问 |
x11-unauth-access | 严重 | X11 服务器允许未经身份验证的连接 |
dotnet-remoting-http-exposed | 高 | .NET Remoting HTTP 通道暴露(反序列化风险) |
smb-signing-not-required | 中 | 未要求 SMB 签名(中继攻击风险) |
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://- 使用本地 DNS 解析的 SOCKS5 代理socks5h://- 使用代理端 DNS 解析的 SOCKS5 代理(始终)http://- HTTP CONNECT 代理https://- 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):
| 选项 | 策略 | 使用场景 |
|---|---|---|
l | 仅本地 | 标准本地 DNS(默认) |
p | 仅代理 | 强制使用代理端 DNS 解析 |
lp | 本地,失败时回退到代理 | 先尝试本地,失败时使用代理 |
pl | 代理,失败时回退到本地 | 先尝试代理,失败时使用本地 |
注意: socks5h:// 方案会自动强制使用代理端 DNS(等同于 --dns-order p)
Tor 扫描示例:
# Scan .onion services through Tor (SOCKS5 proxy on port 9050)
nerva -t http://example.onion:80 --proxy socks5h://127.0.0.1:9050
通过代理的 UDP:
# UDP scanning through SOCKS5 proxy (limited support)
nerva -t target.com:161 --proxy socks5://127.0.0.1:1080 --udp
⚠️ UDP 限制: 通过 SOCKS5 的 UDP 支持有限。并非所有 SOCKS5 服务器都支持 UDP 关联。可能会发生本地 UDP 回退。
带速率限制的并行扫描:
nerva -l large-target-list.txt -W 100 -H 5 -R 50 -v
优雅关闭(Ctrl+C 返回部分结果):
nerva -l huge-target-list.txt -W 50 -v
# Press Ctrl+C to stop — collected results are still printed
支持的协议
170+ 个服务检测插件,覆盖 TCP、UDP 和 SCTP:
HTTP 指纹模块(66)
针对 Web 服务的技术检测,按类别组织:
防火墙与网络安全(12)
| 模块 | 描述 |
|---|---|
| Checkpoint | Check Point 安全网关 |
| Cisco ASA/FTD | Cisco 防火墙/VPN 设备 |
| FortiGate | Fortinet 防火墙/VPN |
| GlobalProtect | Palo Alto Networks VPN |
| Juniper | Juniper SRX 防火墙 |
| OPNsense | OPNsense 防火墙 |
| pfSense | pfSense 防火墙 |
| SonicWall | SonicWall 防火墙 |
| AnyConnect | Cisco AnyConnect SSL VPN |
| Cisco Expressway | Cisco 协作网关 |
| BigIP | F5 BIG-IP 负载均衡器 |
| WinRM | Windows 远程管理 |
AI/LLM 与机器学习(6)
| 模块 | 描述 |
|---|---|
| Ollama | 自托管 LLM 推理服务器 |
| LocalAI | 自托管 LLM 推理(兼容 OpenAI) |
| Open WebUI | LLM Web 界面(ChatGPT 风格) |
| Triton | NVIDIA Triton 推理服务器 |
| Weaviate | 面向 AI 的向量数据库 |
| ChromaDB | 向量数据库 |
数据库与数据存储(12)
| 模块 | 描述 |
|---|---|
| ArangoDB | 多模型数据库 |
| CockroachDB | 分布式 SQL 数据库 |
| CouchDB | Apache 文档数据库 |
| Elasticsearch | 搜索与分析引擎 |
| etcd | 分布式键值存储 |
| Milvus | 向量数据库 |
| MinIO | 兼容 S3 的对象存储 |
| Pinecone | 向量数据库 |
| Redis Commander | Redis Web 管理界面 |
| TiDB | 分布式 SQL 数据库 |
| YugabyteDB | 分布式 SQL 数据库 |
| Qdrant | 向量数据库 |