Zurück zu den Updates
New releaseAug 26, 2026

nerva v1.69.2

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

Teilen
Nerva - Schnelles Service-Fingerprinting-CLI für Netzwerkaufklärung mit Unterstützung für über 170 Protokolle

Nerva
Nerva: Schnelles Service-Fingerprinting-CLI

Release Build Status Go Report Card License Stars

FunktionenInstallationSchnellstartVerwendungProtokolleBibliothekAnwendungsfälleFehlerbehebung

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:port ausgibt
  • 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 IDSchweregradBeschreibung
docker-unauth-apiKritischDocker-API ohne Authentifizierung erreichbar
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 Cipher (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 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):

OptionStrategieAnwendungsfall
lNur lokalStandard-lokales DNS (Standard)
pNur ProxyDNS-Auflösung über den Proxy erzwingen
lpLokal, Fallback auf ProxyZuerst lokal versuchen, bei Fehler Proxy verwenden
plProxy, Fallback auf lokalZuerst Proxy versuchen, bei Fehler lokal verwenden

Hinweis: Das Schema socks5h:// erzwingt automatisch DNS über den Proxy (entspricht --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. Ein lokaler UDP-Fallback kann auftreten.

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

**Graceful Shutdown** (Strg+C liefert 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

Über 170 Service-Erkennungs-Plugins für TCP, UDP und SCTP:

HTTP-Fingerprint-Module (66)

Technologie-Erkennung für Webdienste, organisiert nach Kategorien:

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

KI/LLM & Maschinelles Lernen (6)

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

Datenbanken & Datenspeicher (12)

ModulBeschreibung
ArangoDBMulti-Model-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

Enterprise & Business (8)

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

Home & IoT (2)

ModulBeschreibung
Home AssistantHeimautomatisierungsplattform
UniFi/EdgeOSUbiquiti-Netzwerkgeräte

Sonstige (2)

ModulBeschreibung
Go pprofGo-Profiling-Endpunkte
NATSMessage Broker

Datenbanken (20)

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

ProtokollTransportStandardports
SSHTCP22, 2222
RDPTCP/TLS3389
TelnetTCP23
VNCTCP5900
AnyDeskTCP7070
TeamViewerTCP5938

Web & API (2)

ProtokollTransportHinweise
HTTP/HTTPSTCPHTTP/2, Technologie-Erkennung via Wappalyzer
KubernetesTCPAPI-Server-Erkennung

Messaging & Warteschlangen (10)

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

ProtokollTransportStandardports
FTPTCP21
SMBTCP445
NFSTCP/UDP2049
RsyncTCP873
TFTPUDP69
SVNTCP3690
LDAPTCP/TLS389, 636

Netzwerkdienste (11)

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

Industrielle Steuerungssysteme (18)

ProtokollTransportStandardportsHinweise
ModbusTCP502SCADA/SPS
S7commTCP102Siemens SPS
EtherNet/IPTCP44818Rockwell/Allen-Bradley
PROFINETTCP34962-34964Siemens Industrie
BACnetUDP47808Gebäudeautomation
OPC UATCP4840Industrielle Interoperabilität
OMRON FINSTCP/UDP9600OMRON SPS
MELSEC-QTCP5006, 5007Mitsubishi SPS
KNXnet/IPUDP3671Gebäudeautomation
IEC 104TCP2404Stromnetz-SCADA
DNP3TCP20000Stromnetz-SCADA
CodesysTCP1200, 2455SPS-Laufzeitumgebung
FoxTCP1911Tridium Niagara
PC WORXTCP1962Phoenix Contact
ProConOSTCP20547SPS-Laufzeitumgebung
HART-IPTCP5094Prozessautomatisierung
EtherCATUDP34980Motion Control
Crimson v3TCP789Red Lion HMI
PCOMTCP20256Unitronics SPS
GE SRTPTCP18245GE SPS
ATGTCP10001Tankmessgeräte

Telekommunikation & VoIP (17)

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

VPN & Sicherheit (11)

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

Fernzugriff & -verwaltung (10)

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

Entwicklerwerkzeuge (8)

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

Bibliotheksnutzung

Importiere Nerva in deine 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/main/examples/service-fingerprinting-example.go) für ein vollständiges funktionierendes Beispiel.

## Anwendungsfälle

### Penetrationstests

Fingerprinting von Diensten, die während der Aufklärung entdeckt wurden, um potenzielle Angriffsvektoren schnell zu identifizieren.

### Asset-Discovery-Pipelines

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

CI/CD-Sicherheitsscans

In Deployment-Pipelines integrieren, um zu überprüfen, dass nur erwartete Dienste exponiert sind.

Bug-Bounty-Aufklärung

Dienste über Scope-Ziele hinweg schnell enumerieren, um interessante Endpunkte zu finden.

Telekommunikationsnetzwerkanalyse

Diameter-Knoten in LTE/5G-Netzen mittels SCTP-Transport fingerprinten (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 prüft das wahrscheinlichste Protokoll zuerst 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: Kein Protokoll muss im Voraus angegeben werden
  • Einfachere Verwendung: nerva -t host:port vs echo host | zgrab2 http -p port

Fehlerbehebung

Keine Ausgabe

Ursache: Der Port ist geschlossen oder es wurde 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 ist standardmäßig deaktiviert.

Lösung: Mit dem -U-Flag aktivieren (erfordert möglicherweise root):```sh sudo nerva -t example.com:53 -U

### SCTP funktioniert nicht

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

**Lösung**: Auf einem Linux-System oder in einem Container ausführen:```sh
docker run --rm nerva -t telecom:3868 -S

Terminologie

  • Dienst: Ein Netzwerkdienst, der auf einem Port läuft (SSH, HTTP, PostgreSQL usw.)
  • Fingerprinting: Erkennen und Identifizieren von Diensttyp, Version und Konfiguration
  • Plugin: Ein protokollspezifisches Erkennungsmodul
  • Fast Mode: Scannen nur des Standardports für jedes Protokoll (80/20-Optimierung)
  • Transport: Netzwerkschichtprotokoll (TCP, UDP oder SCTP)

Unterstützung

Wenn Sie Nerva nützlich finden, ziehen Sie bitte in Betracht, ihm einen Stern zu geben:

GitHub stars

Mitwirken

Wir freuen uns über 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