
nerva v1.64.3
快速服务指纹识别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```sh
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
Docker```sh
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
{"host":"example.com","ip":"93.184.216.34","port":22,"protocol":"ssh","transport":"tcp","metadata":{...}}
从端口扫描器管道输入:```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
diameter://telecom-server:3868
**快速模式**(仅默认端口):```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
### 安全配置错误检测
启用 `--misconfigs` 后,Nerva 可以识别常见的安全配置错误:```sh
nerva -t example.com:2375 --misconfigs --json
检测到的错误配置:
| 发现 ID | 严重性 | 描述 |
|---|---|---|
docker-unauth-api | 严重 | Docker API 可在未经认证的情况下访问 |
x11-unauth-access | 严重 | X11 服务器允许未经认证的连接 |
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 以明文传输凭据 |
包含错误配置的示例输出:```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://` - 使用本地 DNS 解析的 SOCKS5 代理
- `socks5h://` - 使用代理端 DNS 解析的 SOCKS5 代理(始终)
- `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):
| 选项 | 策略 | 使用场景 |
|---|---|---|
l | 仅本地 | 标准本地 DNS(默认) |
p | 仅代理 | 强制使用代理端 DNS 解析 |
lp | 本地,失败时回退到代理 | 先尝试本地,失败时使用代理 |
pl | 代理,失败时回退到本地 | 先尝试代理,失败时使用本地 |
注意: socks5h:// 方案会自动强制使用代理端 DNS(等同于 --dns-order p)
Tor 扫描示例:```sh
Scan .onion services through Tor (SOCKS5 proxy on port 9050)
nerva -t http://example.onion:80 --proxy socks5h://127.0.0.1:9050
**通过代理的 UDP:**```sh
# 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 回退。
带速率限制的并行扫描:```sh nerva -l large-target-list.txt -W 100 -H 5 -R 50 -v
**优雅关闭**(Ctrl+C 返回部分结果):```sh
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 | 向量数据库 |