Zurück zu den Updates
New releaseJul 22, 2026

nerva v1.42.9

Schnelle Service-Fingerprinting-CLI für 170+ Protokolle (TCP/UDP/SCTP) - entwickelt von Praetorian

Teilen
Nerva - Schnelle CLI für Dienst-Fingerprinting zur Netzwerkerkundung mit Unterstützung von über 170 Protokollen

Nerva
Nerva: Schnelle CLI für Dienst-Fingerprinting

Veröffentlichung Build-Status Go Report Card Lizenz Sterne

FunktionenInstallationSchnellstartVerwendungProtokolleBibliothekAnwendungsfälleFehlerbehebung

Hochleistungsfähiges Dienst-Fingerprinting, geschrieben in Go. Identifiziert über 170 Netzwerkprotokolle über TCP-, UDP- und SCTP-Transporte mit umfangreicher Metadatenextraktion.

Nerva erkennt und identifiziert schnell Dienste, die auf offenen Netzwerk-Ports laufen. Verwenden Sie es zusammen mit Port-Scannern wie Naabu, um entdeckte Dienste zu fingerprinten, oder integrieren Sie es in Ihre Sicherheits-Pipelines für automatisierte Erkundung.

Funktionen

  • 170+ Protokoll-Plugins — Datenbanken, Remote-Zugriff, Webdienste, Messaging, Industrie- und Telekommunikationsprotokolle
  • 76 HTTP-Fingerprint-Tools — Erkennung von Web-Technologien einschließlich Firewalls, Datenbanken, AI/LLM-Servern und mehr
  • Erkennung von Sicherheitsfehlkonfigurationen — Identifiziert häufige Sicherheitsprobleme wie nicht authentifizierte APIs und Klartext-Protokolle (--misconfigs)
  • Unterstützung mehrerer Transportschichten — TCP (Standard), UDP (--udp) und SCTP (--sctp, nur Linux)
  • Proxy-Unterstützung — Leitet Scan-Traffic transparent über SOCKS5- oder HTTP-Proxys mit konfigurierbarer DNS-Auflösung
  • Umfangreiche Metadaten — Extrahiert Versionen, Konfigurationen und sicherheitsrelevante Details aus jedem Dienst
  • Schnellmodus — Scannt nur Standard-Ports für schnelle Erkundung (--fast)
  • Flexible Ausgabe — JSON, CSV oder menschenlesbare Formate
  • Pipeline-freundlich — Einlesen von Naabu, Nmap oder jedem Tool, das host:port ausgibt
  • Go-Bibliothek — Direkter Import in Ihre Go-Anwendungen

Installation

Veröffentlichungen

Laden Sie ein vorgefertigtes Binärprogramm von der Seite Veröffentlichungen herunter.

Von GitHub```sh

go install github.com/praetorian-inc/nerva/cmd/nerva@latest

### Aus dem Quellcode```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

Ein einzelnes Ziel fingerprinten:```sh
nerva -t example.com:22
# ssh://example.com:22

Holen Sie detaillierte JSON-Metadaten:```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 Port-Scanner:```sh
naabu -host example.com -silent | nerva
# http://example.com:80
# ssh://example.com:22
# https://example.com:443

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

### Flags

| Flag | Short | Beschreibung | Standard |
|------|-------|--------------|----------|
| `--targets` | `-t` | Ziel oder durch Komma getrennte Zielliste | — |
| `--list` | `-l` | Eingabedatei mit Zielen | — |
| `--output` | `-o` | Ausgabedateipfad | stdout |
| `--json` | | Ausgabe im JSON-Format | false |
| `--csv` | | Ausgabe im CSV-Format | false |
| `--misconfigs` | | Sicherheitskonfigurationserkennung aktivieren | false |
| `--proxy` | | Proxy-URL (z.B. socks5://127.0.0.1:1080) | — |
| `--proxy-auth` | | SOCKS5-Proxy-Authentifizierung (z.B. Benutzername:Passwort) | — |
| `--dns-order` | | DNS-Auflösungsreihenfolge: `p`, `l`, `lp`, `pl` | `lp` |
| `--fast` | `-f` | Schnellmodus (nur Standard-Ports) | false |
| `--capabilities` | `-c` | Verfügbare Fähigkeiten auflisten und beenden | false |
| `--udp` | `-U` | UDP-Plugins ausführen | false |
| `--sctp` | `-S` | SCTP-Plugins ausführen (nur Linux) | false |
| `--timeout` | `-w` | Timeout in Millisekunden | 2000 |
| `--verbose` | `-v` | Ausführliche Ausgabe auf stderr | false |
| `--workers` | `-W` | Gleichzeitige Scan-Arbeiter | 50 |
| `--max-host-conn` | `-H` | Maximale gleichzeitige Verbindungen pro Host-IP (0=unbegrenzt) | 0 |
| `--rate-limit` | `-R` | Maximale Scans pro Sekunde global (0=unbegrenzt) | 0 |

### 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

**Schnellmodus** (nur Standardports):```sh
nerva -l large-target-list.txt --fast --json

Proxy-Routing mit entfernter DNS-Auflösung:```sh nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p

### Erkennung von Sicherheitsfehlkonfigurationen

Nerva kann häufige Sicherheitsfehlkonfigurationen erkennen, wenn es mit `--misconfigs` aktiviert wird:```sh
nerva -t example.com:2375 --misconfigs --json

Erkannte Fehlkonfigurationen:

Fund-IDSchweregradBeschreibung
docker-unauth-apiKritischDocker-API ohne Authentifizierung zugänglich
x11-unauth-accessKritischX11-Server erlaubt unauthentifizierte Verbindungen
smb-signing-not-requiredMittelSMB-Signierung nicht erforderlich (Relay-Angriffsrisiko)
telnet-cleartextMittelTelnet überträgt Anmeldedaten im Klartext
vnc-detectedMittelVNC erkannt (oft schwache Authentifizierung)
ssh-password-authMittelServer erlaubt Passwort-Authentifizierung
ssh-weak-cipherNiedrigServer bietet schwache Chiffren (RC4, 3DES, Blowfish)
ssh-weak-kexNiedrigServer bietet schwache Schlüsselaustauschalgorithmen
ssh-weak-macNiedrigServer bietet schwache MAC-Algorithmen
ftp-cleartextNiedrigFTP ü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 die Weiterleitung von Scan-Verkehr durch 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):

OptionStrategieAnwendungsfall
lNur lokalStandardmäßige lokale DNS (Standard)
pNur ProxyErzwinge Proxy-seitige DNS-Auflösung
lpLokal, Fallback auf ProxyZuerst lokal versuchen, bei Fehler Proxy verwenden
plProxy, Fallback auf lokalZuerst Proxy versuchen, bei Fehler lokal verwenden

Hinweis: socks5h://-Schema erzwingt automatisch Proxy-seitige DNS (äquivalent zu --dns-order p)

Tor-Scan-Beispiel:```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 über Proxy:**```sh
# UDP scanning through SOCKS5 proxy (limited support)
nerva -t target.com:161 --proxy socks5://127.0.0.1:1080 --udp

⚠️ UDP-Einschränkungen: UDP über SOCKS5 wird nur eingeschränkt unterstützt. Nicht alle SOCKS5-Server unterstützen UDP-Assoziation. Lokaler UDP-Fallback kann auftreten.

Paralleles Scannen mit Ratenbegrenzung:```sh nerva -l large-target-list.txt -W 100 -H 5 -R 50 -v

**Sanftes Herunterfahren** (Ctrl+C gibt Teilergebnisse zurück):```sh
nerva -l huge-target-list.txt -W 50 -v
# Press Ctrl+C to stop — collected results are still printed

Unterstützte Protokolle

170+ Serviceerkennungs-Plugins über TCP, UDP und SCTP:

HTTP-Fingerprint-Module (66)

Technologieerkennung für Webdienste, nach Kategorie organisiert:

Firewalls & Netzwerksicherheit (12)

ModulBeschreibung
CheckpointCheck Point Security Gateway
Cisco ASA/FTDCisco Firewall/VPN-Appliances
FortiGateFortinet Firewall/VPN
GlobalProtectPalo Alto Networks VPN
JuniperJuniper SRX Firewalls
OPNsenseOPNsense Firewall
pfSensepfSense Firewall
SonicWallSonicWall Firewalls
AnyConnectCisco AnyConnect SSL VPN
Cisco ExpresswayCisco Collaboration Gateway
BigIPF5 BIG-IP Load Balancer
WinRMWindows Remote Management

AI/LLM & Maschinelles Lernen (6)

ModulBeschreibung
OllamaSelbstgehosteter LLM-Inferenzserver
LocalAISelbstgehostete LLM-Inferenz (OpenAI-kompatibel)
Open WebUILLM-Weboberfläche (ChatGPT-Stil)
TritonNVIDIA Triton Inference Server
WeaviateVektordatenbank für KI
ChromaDBVektordatenbank

Datenbanken & Datenspeicher (12)

ModulBeschreibung
ArangoDBMulti-Modell-Datenbank
CockroachDBVerteilte SQL-Datenbank
CouchDBApache-Dokumentendatenbank
ElasticsearchSuch- und Analyse-Engine
etcdVerteilter Key-Value-Speicher
MilvusVektordatenbank
MinIOS3-kompatibler Objektspeicher
PineconeVektordatenbank
Redis CommanderRedis-Webverwaltungsoberfläche
TiDBVerteilte SQL-Datenbank
YugabyteDBVerteilte SQL-Datenbank
QdrantVektordatenbank

DevOps & Infrastruktur (14)

ModulBeschreibung
ArtifactoryJFrog-Artefakt-Repository
ConsulHashiCorp Service Mesh
Docker RegistryContainer-Image-Registry
GiteaSelbstgehosteter Git-Dienst
GrafanaObservability-Plattform
HarborContainer-Registry
JaegerVerteiltes Tracing
JenkinsCI/CD-Automatisierung
KubernetesContainer-Orchestrierungs-API
PortainerDocker-Verwaltungsoberfläche
PrometheusÜberwachungssystem
Swagger/OpenAPIAPI-Dokumentation
TeamCityCI/CD-Server
VaultHashiCorp Secrets Management

Webserver & Frameworks (10)

ModulBeschreibung
Apache HTTPDApache HTTP Server
Express.jsNode.js-Webframework
GoAheadEingebetteter Webserver
GotenbergPDF-Generierungsdienst
GuacamoleApache Remote Desktop Gateway
SOAPWebdienste
TengineAlibaba-Webserver
TomcatApache Tomcat
WordPressCMS-Plattform
UPnPUniversal Plug and Play

Unternehmen & Geschäft (8)

ModulBeschreibung
AEMAdobe Experience Manager
Dynamics 365Microsoft Dynamics 365 / Power Apps
Oracle Service CloudOracle CRM-Plattform
SAP NetWeaverSAP-Unternehmensplattform
SplunkLog-Management-Plattform
VMware HorizonVirtual Desktop Infrastructure
QNAP QTSNAS-Verwaltung
ExchangeMicrosoft Exchange Server

Haus & IoT (2)

ModulBeschreibung
Home AssistantHome-Automation-Plattform
UniFi/EdgeOSUbiquiti-Netzwerkgeräte

Sonstige (2)

ModulBeschreibung
Go pprofGo-Profilierungs-Endpunkte
NATSMessage Broker

Datenbanken (20)

ProtokollTransportStandard-Ports
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

Fernzugriff (6)

ProtokollTransportStandard-Ports
SSHTCP22, 2222
RDPTCP/TLS3389
TelnetTCP23
VNCTCP5900
AnyDeskTCP7070
TeamViewerTCP5938

Web & API (2)

ProtokollTransportAnmerkungen
HTTP/HTTPSTCPHTTP/2, Technologieerkennung via Wappalyzer
KubernetesTCPAPI-Servererkennung

Messaging & Queues (10)

ProtokollTransportStandard-Ports
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

Datei- & Verzeichnisdienste (7)

ProtokollTransportStandard-Ports
FTPTCP21
SMBTCP445
NFSTCP/UDP2049
RsyncTCP873
TFTPUDP69
SVNTCP3690
LDAPTCP/TLS389, 636

Netzwerkdienste (11)

ProtokollTransportStandard-Ports
DNSTCP/UDP53
DHCPUDP67, 68
NTPUDP123
SNMPUDP161
NetBIOS-NSUDP137
STUNUDP3478
OpenVPNUDP1194
IPsecUDP500
IPMIUDP623
CoAPUDP5683
EchoTCP/UDP7

Industrielle Steuerungssysteme (18)

ProtokollTransportStandard-PortsAnmerkungen
ModbusTCP502SCADA/SPS
S7commTCP102Siemens SPS
EtherNet/IPTCP44818Rockwell/Allen-Bradley
PROFINETTCP34962-34964Siemens Industrie
BACnetUDP47808Gebäudeautomatisierung
OPC UATCP4840Industrielle Interoperabilität
OMRON FINSTCP/UDP9600OMRON SPS
MELSEC-QTCP5006, 5007Mitsubishi SPS
KNXnet/IPUDP3671Gebäudeautomatisierung
IEC 104TCP2404Stromnetz-SCADA
DNP3TCP20000Stromnetz-SCADA
CodesysTCP1200, 2455SPS-Laufzeit
FoxTCP1911Tridium Niagara
PC WORXTCP1962Phoenix Contact
ProConOSTCP20547SPS-Laufzeit
HART-IPTCP5094Prozessautomation
EtherCATUDP34980Bewegungssteuerung
Crimson v3TCP789Red Lion HMI
PCOMTCP20256Unitronics SPS
GE SRTPTCP18245GE SPS
ATGTCP10001Tankfüllstandsmessung

Telekommunikation & VoIP (17)

ProtokollTransportStandard-PortsAnmerkungen
DiameterTCP/SCTP3868LTE/5G AAA
M3UASCTP2905SS7 über IP
M2UASCTP2904MTP2-Benutzeranpassung
M2PASCTP3565MTP2-Peer-Anpassung
SGsAPSCTP29118Leitungsvermittelter Fallback
X2APSCTP36422LTE Inter-eNodeB
IUASCTP9900ISDN über IP
SIPTCP/UDP/TLS5060, 5061VoIP-Signalisierung
MEGACO/H.248UDP2944, 2945Media Gateway
MGCPUDP2427, 2727Media Gateway
H.323TCP1720Videokonferenz
SCCP/SkinnyTCP2000, 2443Cisco IP-Telefone
IAX2UDP4569Asterisk-Protokoll
GTP-CUDP2123GPRS-Steuerung
GTP-UUDP2152GPRS-Nutzerebene
GTP'UDP3386GPRS-Abrechnung
PFCPUDP88055G-Nutzerebene

VPN & Sicherheit (11)

ProtokollTransportStandard-Ports
SSHTCP22, 2222
OpenVPNUDP1194
WireGuardUDP51820
IPsec/IKEv2UDP500, 4500
L2TPUDP1701
SSTPTCP443
GlobalProtectHTTP443
AnyConnectHTTP443
FortiGateHTTP443
STUN/TURNUDP3478, 5349
KerberosTCP88

Fernzugriff & Verwaltung (10)

ProtokollTransportStandard-Ports
RDPTCP/TLS3389
VNCTCP5900
TelnetTCP23
WinRMHTTP5985, 5986
IPMIUDP623
SNMPUDP161
Zabbix AgentTCP10050
NRPETCP/TLS5666
DockerTCP/TLS2375, 2376
X11TCP6000-6063

Entwicklerwerkzeuge (8)

ProtokollTransportStandard-Ports
HTTP/HTTPSTCP80, 443, 8080, 8443
Java RMITCP1099
JDWPTCP5005
RTSPTCP554
Linux RPCTCP111
JetDirectTCP9100
CUPS/IPPTCP631
SonarQubeTCP9000

Bibliotheksnutzung

Importieren Sie Nerva in Ihre Go-Anwendungen:```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)
}

}

Siehe [examples/service-fingerprinting-example.go](https://github.com/praetorian-inc/nerva/blob/HEAD/examples/service-fingerprinting-example.go) für ein vollständiges funktionierendes Beispiel.

## Anwendungsfälle

### Penetrationstests

Fingerabdrücke von Diensten, die während der Aufklärung entdeckt wurden, schnell erstellen, um potenzielle Angriffsvektoren zu identifizieren.

### Asset Discovery Pipelines

Kombinieren Sie mit Naabu oder Masscan für großangelegte Bestandsaufnahmen von Assets:```sh
naabu -host 10.0.0.0/24 -silent | nerva --json | jq '.protocol'

CI/CD-Sicherheitsscanning

In Bereitstellungspipelines integrieren, um zu überprüfen, dass nur erwartete Dienste exponiert sind.

Bug-Bounty-Aufklärung

Dienste schnell über Zielbereiche hinweg aufzählen, um interessante Endpunkte zu finden.

Telekommunikationsnetzwerkanalyse

Fingerabdruck von Diameter-Knoten in LTE/5G-Netzen mittels SCTP-Transport (Linux):```sh nerva -t mme.telecom.local:3868 -S --json

## Architektur```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]

Warum Nerva?

vs Nmap

  • Intelligentere Standardeinstellungen: Nerva überprüft zuerst das wahrscheinlichste Protokoll basierend auf der Portnummer
  • Strukturierte Ausgabe: Native JSON/CSV-Unterstützung für einfaches Parsen und Pipeline-Integration
  • Fokussiert: Nur Service-Fingerprinting — kombinieren Sie es mit dedizierten Port-Scannern für die Erkennung

vs zgrab2

  • Automatische Erkennung: Keine vorherige Angabe des Protokolls erforderlich
  • Einfachere Nutzung: nerva -t host:port vs echo host | zgrab2 http -p port

Fehlerbehebung

Keine Ausgabe

Ursache: Port ist geschlossen oder kein unterstützter Dienst erkannt.

Lösung: Überprüfen Sie, ob der Port geöffnet ist:```sh nc -zv example.com 80

### Timeout-Fehler

**Ursache**: Standard-Timeout von 2 Sekunden zu kurz für langsame Dienste.

**Lösung**: Timeout erhöhen:```sh
nerva -t example.com:80 -w 5000  # 5 seconds

UDP-Dienste nicht erkannt

Ursache: UDP-Scanning standardmäßig deaktiviert.

Lösung: Aktivieren mit dem Flag -U (erfordert möglicherweise Root-Rechte):```sh sudo nerva -t example.com:53 -U

### SCTP funktioniert nicht

**Ursache**: SCTP wird nur unter Linux unterstützt.

**Lösung**: Führen Sie es auf einem Linux-System oder in einem Container aus:```sh
docker run --rm nerva -t telecom:3868 -S

Terminologie

  • Dienst: Ein Netzwerkdienst, der auf einem Port läuft (SSH, HTTP, PostgreSQL, usw.)
  • Fingerprinting: Erkennung und Identifizierung des Diensttyps, der Version und der Konfiguration
  • Plugin: Ein protokollspezifisches Erkennungsmodul
  • Schnellmodus: Scan nur der Standardports für jedes Protokoll (80/20-Optimierung)
  • Transport: Netzwerkschichtprotokoll (TCP, UDP oder SCTP)

Unterstützung

Wenn Sie Nerva nützlich finden, erwägen Sie bitte, einen Stern zu vergeben:

GitHub stars

Mitwirken

Wir begrüßen Beiträge! Siehe CONTRIBUTING.md für Richtlinien.

Lizenz

Apache 2.0 — siehe LICENSE für Details.

Danksagungen

Nerva ist ein gepflegter Fork von fingerprintx, ursprünglich entwickelt von Praetorians Praktikantenklasse von 2022:

Kategorien