
nerva v1.42.9
Schnelle Service-Fingerprinting-CLI für 170+ Protokolle (TCP/UDP/SCTP) - entwickelt von Praetorian
Nerva
Nerva: Schnelles Service-Fingerprinting-CLI
Funktionen • Installation • Schnellstart • Verwendung • Protokolle • Bibliothek • Anwendungsfälle • Fehlerbehebung
Hochperformantes Service-Fingerprinting in Go. Identifizieren Sie über 170 Netzwerkprotokolle über TCP-, UDP- und SCTP-Transporte mit umfangreicher Metadatenextraktion.
Nerva erkennt und identifiziert schnell Dienste, die auf offenen Netzwerkports laufen. Verwenden Sie es zusammen mit Portscannern wie Naabu, um entdeckte Dienste zu fingerprinten, oder integrieren Sie es in Ihre Sicherheitspipelines für automatisierte Aufklärung.
Funktionen
- Über 170 Protokoll-Plugins — Datenbanken, Fernzugriff, Webdienste, Messaging, industrielle und Telekommunikationsprotokolle
- 76 HTTP-Fingerprinter — Erkennung von Webtechnologien einschließlich Firewalls, Datenbanken, KI/LLM-Servern und mehr
- Erkennung von Sicherheitsfehlkonfigurationen — Identifizierung häufiger Sicherheitsprobleme wie nicht authentifizierte APIs und Klartextprotokolle (
--misconfigs) - Unterstützung mehrerer Transporte — TCP (Standard), UDP (
--udp) und SCTP (--sctp, nur Linux) - Proxy-Unterstützung — Scannen Sie Datenverkehr transparent über SOCKS5- oder HTTP-Proxys mit konfigurierbarer DNS-Auflösung
- Umfangreiche Metadaten — Extrahieren Sie Versionen, Konfigurationen und sicherheitsrelevante Details aus jedem Dienst
- Schnellmodus — Scannen Sie nur Standardports für eine schnelle Aufklärung (
--fast) - Flexible Ausgabe — JSON-, CSV- oder menschenlesbare Formate
- Pipeline-freundlich — Pipe von Naabu, Nmap oder jedem Tool, das
host:portausgibt - Go-Bibliothek — Direkt in Ihre Go-Anwendungen importierbar
Installation
Releases
Laden Sie eine vorgefertigte Binärdatei von der Releases-Seite herunter.
Von GitHub```sh
go install github.com/praetorian-inc/nerva/cmd/nerva@latest
### Aus der Quelle```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
## Schnellstart
Einen einzelnen Host fingerprinten:```sh
nerva -t example.com:22
# ssh://example.com:22
Detaillierte JSON-Metadaten abrufen:```sh nerva -t example.com:22 --json
{"host":"example.com","ip":"93.184.216.34","port":22,"protocol":"ssh","transport":"tcp","metadata":{...}}
Pipe von einem Portscanner:```sh
naabu -host example.com -silent | nerva
# http://example.com:80
# ssh://example.com:22
# https://example.com:443
Die vollständige Referenz — jeder Unterbefehl, Alias und jedes Flag, einschließlich der in --help verborgenen — wird in docs/CLI.md generiert.
Verwendung```
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
### Beispiele
**Mehrere Ziele:**```sh
nerva -t example.com:22,example.com:80,example.com:443
Aus Datei:```sh nerva -l targets.txt --json -o results.json
**UDP-Scanning** (erfordert möglicherweise Root):```sh
sudo nerva -t example.com:53 -U
# dns://example.com:53
SCTP-Scanning (nur Linux):```sh nerva -t telecom-server:3868 -S
diameter://telecom-server:3868
**Schneller Modus** (nur Standard-Ports):```sh
nerva -l large-target-list.txt --fast --json
Proxy-Routing mit Remote-DNS-Auflösung:```sh nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p
### Erkennung von Sicherheitsfehlkonfigurationen
Nerva kann gängige Sicherheitsfehlkonfigurationen identifizieren, wenn es mit `--misconfigs` aktiviert wird:```sh
nerva -t example.com:2375 --misconfigs --json
Erkannte Fehlkonfigurationen:
| Finding ID | Schweregrad | Beschreibung |
|---|---|---|
docker-unauth-api | Kritisch | Docker-API ohne Authentifizierung erreichbar |
x11-unauth-access | Kritisch | X11-Server erlaubt unauthentifizierte Verbindungen |
smb-signing-not-required | Mittel | SMB-Signierung nicht erforderlich (Relay-Angriffsrisiko) |
telnet-cleartext | Mittel | Telnet überträgt Anmeldedaten im Klartext |
vnc-detected | Mittel | VNC erkannt (oft schwache Authentifizierung) |
ssh-password-auth | Mittel | Server erlaubt Passwort-Authentifizierung |
ssh-weak-cipher | Niedrig | Server bietet schwache Cipher (RC4, 3DES, Blowfish) |
ssh-weak-kex | Niedrig | Server bietet schwache Schlüsselaustauschalgorithmen |
ssh-weak-mac | Niedrig | Server bietet schwache MAC-Algorithmen |
ftp-cleartext | Niedrig | FTP überträgt Anmeldedaten im Klartext |
Beispielausgabe mit Fehlkonfigurationen:```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" } ] }
### Proxy-Unterstützung
Nerva unterstützt das Routing von Scan-Verkehr über SOCKS5- und HTTP-Proxys mit konfigurierbarer DNS-Auflösung.
**Unterstützte Proxy-Schemata:**
- `socks5://` - SOCKS5-Proxy mit lokaler DNS-Auflösung
- `socks5h://` - SOCKS5-Proxy mit proxyseitiger DNS-Auflösung (immer)
- `http://` - HTTP-CONNECT-Proxy
- `https://` - HTTPS-CONNECT-Proxy
**Proxy-Authentifizierung:**```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-Auflösungsstrategien (--dns-order):