アップデート一覧に戻る
New releaseJul 22, 2026

nerva v1.42.9

高速サービスフィンガープリンティングCLI - 170+プロトコル (TCP/UDP/SCTP) 対応 - Praetorian 製

共有
Nerva - 高速サービスフィンガープリンティングCLI: 170以上のプロトコルに対応したネットワーク偵察用

Nerva
Nerva: 高速サービスフィンガープリンティングCLI

Release Build Status Go Report Card License Stars

特徴インストールクイックスタート使用方法対応プロトコルライブラリユースケーストラブルシューティング

Goで書かれた高性能サービスフィンガープリンティング。 TCP、UDP、SCTPトランスポートで170以上のネットワークプロトコルを識別し、豊富なメタデータを抽出します。

Nervaは、開放されたネットワークポート上で動作するサービスを高速に検出・識別します。Naabuのようなポートスキャナーと併用して発見したサービスのフィンガープリントを取得したり、セキュリティパイプラインに統合して自動偵察に活用できます。

特徴

  • 170以上のプロトコルプラグイン — データベース、リモートアクセス、Webサービス、メッセージング、産業用、通信プロトコル
  • 76のHTTPフィンガープリンター — ファイアウォール、データベース、AI/LLMサーバーなどを含むWeb技術を検出
  • セキュリティ設定ミス検出 — 認証なし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

使用方法```

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

### フラグ

| Flag | Short | Description | Default |
|------|-------|-------------|---------|
| `--targets` | `-t` | ターゲット、またはカンマ区切りのターゲットリスト | — |
| `--list` | `-l` | ターゲットを含む入力ファイル | — |
| `--output` | `-o` | 出力ファイルパス | stdout |
| `--json` | | JSON形式で出力 | false |
| `--csv` | | CSV形式で出力 | false |
| `--misconfigs` | | セキュリティ設定ミス検出を有効化 | false |
| `--proxy` | | プロキシURL(例:socks5://127.0.0.1:1080) | — |
| `--proxy-auth` | | SOCKS5プロキシ認証(例:username:password) | — |
| `--dns-order` | | DNS解決順序: `p`, `l`, `lp`, `pl` | `lp` |
| `--fast` | `-f` | 高速モード(デフォルトポートのみ) | false |
| `--capabilities` | `-c` | 利用可能な機能を表示して終了 | false |
| `--udp` | `-U` | UDPプラグインを実行 | false |
| `--sctp` | `-S` | SCTPプラグインを実行(Linuxのみ) | false |
| `--timeout` | `-w` | タイムアウト(ミリ秒) | 2000 |
| `--verbose` | `-v` | 詳細出力をstderrへ | false |
| `--workers` | `-W` | 同時スキャンワーカー数 | 50 |
| `--max-host-conn` | `-H` | ホストIPあたりの最大同時接続数(0=無制限) | 0 |
| `--rate-limit` | `-R` | グローバルな1秒あたりの最大スキャン数(0=無制限) | 0 |

### 例

**複数ターゲット:**```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

### セキュリティ設定ミスの検出

Nervaは、`--misconfigs`を有効にすると、一般的なセキュリティ設定ミスを識別できます。```sh
nerva -t example.com:2375 --misconfigs --json

検出された設定ミス:

Finding IDSeverityDescription
docker-unauth-api致命的認証なしでアクセス可能なDocker API
x11-unauth-access致命的認証なしの接続を許可するX11サーバー
smb-signing-not-requiredSMB署名が不要(リレー攻撃のリスク)
telnet-cleartextTelnetがクリアテキストで認証情報を送信
vnc-detectedVNC検出(通常は弱い認証)
ssh-password-authサーバーがパスワード認証を許可
ssh-weak-cipherサーバーが弱い暗号化方式を提供(RC4、3DES、Blowfish)
ssh-weak-kexサーバーが弱い鍵交換アルゴリズムを提供
ssh-weak-macサーバーが弱いMACアルゴリズムを提供
ftp-cleartextFTPがクリアテキストで認証情報を送信

設定ミスを含む出力例:```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は、設定可能なDNS解決を備えたSOCKS5およびHTTPプロキシを介したスキャントラフィックのルーティングをサポートしています。

**対応プロキシスキーム:**

- `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)

モジュール説明
CheckpointCheck Point セキュリティゲートウェイ
Cisco ASA/FTDCisco ファイアウォール/VPN アプライアンス
FortiGateFortinet ファイアウォール/VPN
GlobalProtectPalo Alto Networks VPN
JuniperJuniper SRX ファイアウォール
OPNsenseOPNsense ファイアウォール
pfSensepfSense ファイアウォール
SonicWallSonicWall ファイアウォール
AnyConnectCisco AnyConnect SSL VPN
Cisco ExpresswayCisco コラボレーションゲートウェイ
BigIPF5 BIG-IP ロードバランサー
WinRMWindows リモート管理

AI/LLM & 機械学習 (6)

モジュール説明
Ollamaセルフホスト型 LLM 推論サーバー
LocalAIセルフホスト型 LLM 推論 (OpenAI 互換)
Open WebUILLM Web インターフェース (ChatGPT スタイル)
TritonNVIDIA Triton 推論サーバー
WeaviateAI 向けベクトルデータベース
ChromaDBベクトルデータベース

データベース & データストア (12)

モジュール説明
ArangoDBマルチモデルデータベース
CockroachDB分散 SQL データベース
CouchDBApache ドキュメントデータベース
Elasticsearch検索・分析エンジン
etcd分散キーバリューストア
Milvusベクトルデータベース
MinIOS3 互換オブジェクトストレージ
Pineconeベクトルデータベース
Redis CommanderRedis Web 管理 UI
TiDB分散 SQL データベース
YugabyteDB分散 SQL データベース
Qdrantベクトルデータベース

DevOps & インフラ (14)

モジュール説明
ArtifactoryJFrog アーティファクトリポジトリ
ConsulHashiCorp サービスメッシュ
Docker Registryコンテナイメージレジストリ
Giteaセルフホスト型 Git サービス
Grafana可観測性プラットフォーム
Harborコンテナレジストリ
Jaeger分散トレーシング
JenkinsCI/CD 自動化
Kubernetesコンテナオーケストレーション API
PortainerDocker 管理 UI
Prometheus監視システム
Swagger/OpenAPIAPI ドキュメント
TeamCityCI/CD サーバー
VaultHashiCorp シークレット管理

Web サーバー & フレームワーク (10)

モジュール説明
Apache HTTPDApache HTTP サーバー
Express.jsNode.js Web フレームワーク
GoAhead組み込み Web サーバー
GotenbergPDF 生成サービス
GuacamoleApache リモートデスクトップゲートウェイ
SOAPWeb サービス
TengineAlibaba Web サーバー
TomcatApache Tomcat
WordPressCMS プラットフォーム
UPnPユニバーサルプラグアンドプレイ

エンタープライズ & ビジネス (8)

モジュール説明
AEMAdobe Experience Manager
Dynamics 365Microsoft Dynamics 365 / Power Apps
Oracle Service CloudOracle CRM プラットフォーム
SAP NetWeaverSAP エンタープライズプラットフォーム
Splunkログ管理プラットフォーム
VMware Horizon仮想デスクトップインフラ
QNAP QTSNAS 管理
ExchangeMicrosoft Exchange サーバー

ホーム & IoT (2)

モジュール説明
Home Assistantホームオートメーションプラットフォーム
UniFi/EdgeOSUbiquiti ネットワークデバイス

その他 (2)

モジュール説明
Go pprofGo プロファイリングエンドポイント
NATSメッセージブローカー

データベース (20)

プロトコルトランスポートデフォルトポート
PostgreSQLTCP5432
MySQLTCP3306
MSSQLTCP1433
OracleTCP1521
MongoDBTCP27017
RedisTCP/TLS6379, 6380
CassandraTCP9042
InfluxDBTCP8086
Neo4jTCP/TLS7687
DB2TCP446, 50000
SybaseTCP5000
FirebirdTCP3050
MemcachedTCP11211
ZooKeeperTCP2181
MilvusTCP19530, 9091
CouchDBHTTP5984
ElasticsearchHTTP9200
ArangoDBHTTP8529
ChromaDBHTTP8000
PineconeHTTP443

リモートアクセス (6)

プロトコルトランスポートデフォルトポート
SSHTCP22, 2222
RDPTCP/TLS3389
TelnetTCP23
VNCTCP5900
AnyDeskTCP7070
TeamViewerTCP5938

Web & API (2)

プロトコルトランスポート備考
HTTP/HTTPSTCPHTTP/2、Wappalyzer によるテクノロジー検出
KubernetesTCPAPI サーバー検出

メッセージング & キュー (10)

プロトコルトランスポートデフォルトポート
KafkaTCP/TLS9092, 9093
MQTT 3/5TCP/TLS1883, 8883
AMQPTCP/TLS5672, 5671
ActiveMQTCP/TLS61616, 61617
NATSTCP/TLS4222, 6222
PulsarTCP/TLS6650, 6651
SMTPTCP/TLS25, 465, 587
POP3TCP/TLS110, 995
IMAPTCP/TLS143, 993
SMPPTCP2775, 2776

ファイル & ディレクトリサービス (7)

プロトコルトランスポートデフォルトポート
FTPTCP21
SMBTCP445
NFSTCP/UDP2049
RsyncTCP873
TFTPUDP69
SVNTCP3690
LDAPTCP/TLS389, 636

ネットワークサービス (11)

プロトコルトランスポートデフォルトポート
DNSTCP/UDP53
DHCPUDP67, 68
NTPUDP123
SNMPUDP161
NetBIOS-NSUDP137
STUNUDP3478
OpenVPNUDP1194
IPsecUDP500
IPMIUDP623
CoAPUDP5683
EchoTCP/UDP7

産業用制御システム (18)

プロトコルトランスポートデフォルトポート備考
ModbusTCP502SCADA/PLC
S7commTCP102Siemens PLC
EtherNet/IPTCP44818Rockwell/Allen-Bradley
PROFINETTCP34962-34964Siemens 産業用
BACnetUDP47808ビルオートメーション
OPC UATCP4840産業用相互運用
OMRON FINSTCP/UDP9600OMRON PLC
MELSEC-QTCP5006, 5007Mitsubishi PLC
KNXnet/IPUDP3671ビルオートメーション
IEC 104TCP2404電力系統 SCADA
DNP3TCP20000電力系統 SCADA
CodesysTCP1200, 2455PLC ランタイム
FoxTCP1911Tridium Niagara
PC WORXTCP1962Phoenix Contact
ProConOSTCP20547PLC ランタイム
HART-IPTCP5094プロセスオートメーション
EtherCATUDP34980モーションコントロール
Crimson v3TCP789Red Lion HMI
PCOMTCP20256Unitronics PLC
GE SRTPTCP18245GE PLC
ATGTCP10001タンクゲージ

テレコム & VoIP (17)

プロトコルトランスポートデフォルトポート備考
DiameterTCP/SCTP3868LTE/5G AAA
M3UASCTP2905SS7 over IP
M2UASCTP2904MTP2 ユーザーアダプテーション
M2PASCTP3565MTP2 ピアアダプテーション
SGsAPSCTP29118回線交換フォールバック
X2APSCTP36422LTE 基地局間インターフェース
IUASCTP9900ISDN over IP
SIPTCP/UDP/TLS5060, 5061VoIP シグナリング
MEGACO/H.248UDP2944, 2945メディアゲートウェイ
MGCPUDP2427, 2727メディアゲートウェイ
H.323TCP1720ビデオ会議
SCCP/SkinnyTCP2000, 2443Cisco IP 電話
IAX2UDP4569Asterisk プロトコル
GTP-CUDP2123GPRS 制御
GTP-UUDP2152GPRS ユーザープレーン
GTP'UDP3386GPRS 課金
PFCPUDP88055G ユーザープレーン

VPN & セキュリティ (11)

プロトコルトランスポートデフォルトポート
SSHTCP22, 2222
OpenVPNUDP1194
WireGuardUDP51820
IPsec/IKEv2UDP500, 4500
L2TPUDP1701
SSTPTCP443
GlobalProtectHTTP443
AnyConnectHTTP443
FortiGateHTTP443
STUN/TURNUDP3478, 5349
KerberosTCP88

リモートアクセス & 管理 (10)

プロトコルトランスポートデフォルトポート
RDPTCP/TLS3389
VNCTCP5900
TelnetTCP23
WinRMHTTP5985, 5986
IPMIUDP623
SNMPUDP161
Zabbix AgentTCP10050
NRPETCP/TLS5666
DockerTCP/TLS2375, 2376
X11TCP6000-6063

開発者ツール (8)

プロトコルトランスポートデフォルトポート
HTTP/HTTPSTCP80, 443, 8080, 8443
Java RMITCP1099
JDWPTCP5005
RTSPTCP554
Linux RPCTCP111
JetDirectTCP9100
CUPS/IPPTCP631
SonarQubeTCP9000

ライブラリの使用方法

Nerva を Go アプリケーションにインポート:```go package main

import ( "context" "fmt" "log" "net/netip" "time"

"github.com/praetorian-inc/nerva/pkg/plugins"
"github.com/praetorian-inc/nerva/pkg/scan"

)

func main() { // Configure scan config := scan.Config{ DefaultTimeout: 2 * time.Second, FastMode: false, UDP: false, Proxy: "socks5://127.0.0.1:1080", // optional ProxyAuth: "username:password", // optional DNSOrder: "p", // resolver strategy }

// Create target
ip, _ := netip.ParseAddr("93.184.216.34")
target := plugins.Target{
    Address: netip.AddrPortFrom(ip, 22),
    Host:    "example.com",
}

// Run scan
results, err := scan.ScanTargets(context.Background(), []plugins.Target{target}, config)
if err != nil {
    log.Fatal(err)
}

// Process results
for _, result := range results {
    fmt.Printf("%s:%d - %s (%s)\n",
        result.Host, result.Port,
        result.Protocol, result.Transport)
}

}

See [examples/service-fingerprinting-example.go](https://github.com/praetorian-inc/nerva/blob/HEAD/examples/service-fingerprinting-example.go) を参照して完全な動作例を確認してください。

## ユースケース

### ペネトレーションテスト

偵察中に発見されたサービスを迅速にフィンガープリントし、潜在的な攻撃ベクトルを特定します。

### アセットディスカバリーパイプライン

Naabu や Masscan と組み合わせて大規模なアセットインベントリを実施します:```sh
naabu -host 10.0.0.0/24 -silent | nerva --json | jq '.protocol'

CI/CD セキュリティスキャン

デプロイメントパイプラインに統合して、期待されるサービスのみが公開されていることを確認します。

バグバウンティ偵察

スコープ対象全体のサービスを迅速に列挙し、興味深いエンドポイントを見つけます。

通信ネットワーク分析

SCTPトランスポート(Linux)を使用してLTE/5Gネットワーク内のDiameterノードをフィンガープリントします:```sh nerva -t mme.telecom.local:3868 -S --json

## アーキテクチャ```mermaid
graph LR
    A[host:port input] --> B[Target Parser]
    B --> C[Scan Engine]
    C --> D{Transport}
    D -->|TCP| E[TCP Plugins]
    D -->|UDP| F[UDP Plugins]
    D -->|SCTP| G[SCTP Plugins]
    E --> H[Service Detection]
    F --> H
    G --> H
    H --> I[Metadata Extraction]
    I --> J[JSON/CSV/Text Output]

なぜNervaなのか?

Nmapとの比較

  • よりスマートなデフォルト設定: Nervaはポート番号に基づいて最も可能性の高いプロトコルを最初にチェックします
  • 構造化された出力: ネイティブのJSON/CSVサポートにより、簡単な解析とパイプライン統合が可能
  • 焦点を絞った: サービスフィンガープリントのみ — 発見には専用のポートスキャナーと組み合わせて使用します

zgrab2との比較

  • 自動検出: 事前にプロトコルを指定する必要はありません
  • よりシンプルな使い方: nerva -t host:port vs echo host | zgrab2 http -p port

トラブルシューティング

出力がない

原因: ポートが閉じているか、サポートされているサービスが検出されません。

解決策: ポートが開いていることを確認してください:```sh nc -zv example.com 80

### タイムアウトエラー

**原因**: デフォルトの2秒のタイムアウトは、低速サービスには短すぎます。

**解決策**: タイムアウトを増やす:```sh
nerva -t example.com:80 -w 5000  # 5 seconds

UDPサービスが検出されない

原因: デフォルトでUDPスキャンが無効になっています。

解決策: -Uフラグで有効にします(root権限が必要な場合があります):```sh sudo nerva -t example.com:53 -U

### SCTPが動作しない

**原因**: SCTPはLinuxでのみサポートされています。

**解決策**: Linuxシステムまたはコンテナ上で実行してください:```sh
docker run --rm nerva -t telecom:3868 -S

用語

  • サービス: ポート上で動作するネットワークサービス(SSH、HTTP、PostgreSQLなど)
  • フィンガープリンティング: サービスの種類、バージョン、構成を検出・識別すること
  • プラグイン: プロトコル固有の検出モジュール
  • 高速モード: 各プロトコルのデフォルトポートのみをスキャン(80/20最適化)
  • トランスポート: ネットワーク層プロトコル(TCP、UDP、またはSCTP)

サポート

Nervaが役立つと感じられたら、ぜひスターをお願いします:

GitHub stars

コントリビューション

コントリビューションを歓迎します! ガイドラインについてはCONTRIBUTING.mdをご覧ください。

ライセンス

Apache 2.0 — 詳細はLICENSEをご覧ください。

謝辞

Nervaは、fingerprintxのメンテナンスフォークであり、もともとはPraetorianの2022年インターンクラスによって開発されました:

カテゴリ