アップデート一覧に戻る
New releaseAug 26, 2026

nerva v1.69.2

高速サービスフィンガープリンティング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のみ)
  • プロキシ対応 — 設定可能なDNS解決により、SOCKS5またはHTTPプロキシを介してスキャントラフィックを透過的にルーティング
  • 豊富なメタデータ — 各サービスからバージョン、設定、セキュリティ関連の詳細を抽出
  • 高速モード — 迅速な偵察のためにデフォルトポートのみをスキャン (--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

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

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

検出された設定ミス:

Finding ID重大度説明
docker-unauth-apiCritical認証なしでアクセス可能な Docker API
x11-unauth-accessCriticalX11 サーバーが未認証接続を許可
smb-signing-not-requiredMediumSMB 署名が必須ではない (リレー攻撃のリスク)
telnet-cleartextMediumTelnet が認証情報を平文で送信
vnc-detectedMediumVNC を検出 (多くの場合、弱い認証)
ssh-password-authMediumサーバーがパスワード認証を許可
ssh-weak-cipherLowサーバーが弱い暗号 (RC4、3DES、Blowfish) を提供
ssh-weak-kexLowサーバーが弱い鍵交換アルゴリズムを提供
ssh-weak-macLowサーバーが弱い MAC アルゴリズムを提供
ftp-cleartextLowFTP が認証情報を平文で送信

設定ミスを含む出力例:```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

対応プロトコル

TCP、UDP、SCTPにわたる170以上のサービス検出プラグイン:

HTTPフィンガープリントモジュール (66)

カテゴリ別に整理されたWebサービスの技術検出:

ファイアウォール & ネットワークセキュリティ (12)

モジュール説明
CheckpointCheck Point Security Gateway
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 Remote Management

AI/LLM & 機械学習 (6)

モジュール説明
Ollamaセルフホスト型LLM推論サーバー
LocalAIセルフホスト型LLM推論 (OpenAI互換)
Open WebUILLM Webインターフェース (ChatGPTスタイル)
TritonNVIDIA Triton Inference Server
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 Server
Express.jsNode.js Webフレームワーク
GoAhead組み込みWebサーバー
GotenbergPDF生成サービス
GuacamoleApacheリモートデスクトップゲートウェイ
SOAPWebサービス
TengineAlibaba Webサーバー
TomcatApache Tomcat
WordPressCMSプラットフォーム
UPnPUniversal Plug and Play

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

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

ホーム & 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 User Adaptation
M2PASCTP3565MTP2 Peer Adaptation
SGsAPSCTP29118回線交換フォールバック
X2APSCTP36422LTE inter-eNodeB
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)
}

}

完全な動作例については、[examples/service-fingerprinting-example.go](https://github.com/praetorian-inc/nerva/blob/main/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:portecho 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 年のインターンクラスによって開発されました:

カテゴリ