
nerva v1.42.6
CLI per fingerprinting rapido di servizi per oltre 170 protocolli (TCP/UDP/SCTP) - sviluppato da Praetorian
Nerva
Nerva: CLI veloce per il fingerprinting dei servizi
Funzionalità • Installazione • Avvio rapido • Utilizzo • Protocolli • Libreria • Casi d'uso • Risoluzione dei problemi
Fingerprinting dei servizi ad alte prestazioni scritto in Go. Identifica oltre 170 protocolli di rete su trasporti TCP, UDP e SCTP con estrazione di metadati avanzata.
Nerva rileva e identifica rapidamente i servizi in esecuzione sulle porte di rete aperte. Usalo insieme a scanner di porte come Naabu per fare fingerprinting dei servizi individuati, oppure integralo nelle tue pipeline di sicurezza per la ricognizione automatizzata.
Funzionalità
- Oltre 170 plugin di protocollo — Database, accesso remoto, servizi web, messaggistica, protocolli industriali e di telecomunicazioni
- 76 fingerprinter HTTP — Rileva tecnologie web tra cui firewall, database, server AI/LLM e altro ancora
- Rilevamento di misconfigurazioni di sicurezza — Identifica problemi di sicurezza comuni come API non autenticate e protocolli in chiaro (
--misconfigs) - Supporto multi-trasporto — TCP (predefinito), UDP (
--udp) e SCTP (--sctp, solo Linux) - Supporto proxy — Instrada il traffico di scansione in modo trasparente attraverso proxy SOCKS5 o HTTP con risoluzione DNS configurabile
- Metadati avanzati — Estrae versioni, configurazioni e dettagli rilevanti per la sicurezza da ciascun servizio
- Modalità veloce — Scansiona solo le porte predefinite per una ricognizione rapida (
--fast) - Output flessibile — Formati JSON, CSV o leggibile dall'uomo
- Compatibile con le pipeline — Riceve input da Naabu, Nmap o qualsiasi strumento che restituisce
host:port - Libreria Go — Importabile direttamente nelle tue applicazioni Go
Installazione
Release
Scarica un binario precompilato dalla pagina Releases.
Da GitHub```sh
go install github.com/praetorian-inc/nerva/cmd/nerva@latest
### Dal sorgente```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
## Avvio rapido
Impronta un singolo target:```sh
nerva -t example.com:22
# ssh://example.com:22
Ottieni metadati JSON dettagliati:```sh nerva -t example.com:22 --json
{"host":"example.com","ip":"93.184.216.34","port":22,"protocol":"ssh","transport":"tcp","metadata":{...}}
Pipe da uno scanner di porte:```sh
naabu -host example.com -silent | nerva
# http://example.com:80
# ssh://example.com:22
# https://example.com:443
Il riferimento completo — ogni sottocomando, alias e flag, inclusi quelli nascosti da --help — è generato in docs/CLI.md.
Utilizzo```
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
### Esempi
**Target multipli:**```sh
nerva -t example.com:22,example.com:80,example.com:443
Dal file:```sh nerva -l targets.txt --json -o results.json
**Scansione UDP** (potrebbe richiedere i privilegi di root):```sh
sudo nerva -t example.com:53 -U
# dns://example.com:53
Scansione SCTP (solo Linux):```sh nerva -t telecom-server:3868 -S
diameter://telecom-server:3868
**Modalità veloce** (solo porte predefinite):```sh
nerva -l large-target-list.txt --fast --json
Routing proxy con risoluzione DNS remota:```sh nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p
### Rilevamento di configurazioni di sicurezza errate
Nerva può identificare comuni configurazioni di sicurezza errate quando abilitato con `--misconfigs`:```sh
nerva -t example.com:2375 --misconfigs --json
Misconfigurazioni rilevate:
| ID rilevamento | Gravità | Descrizione |
|---|---|---|
docker-unauth-api | Critica | API Docker accessibile senza autenticazione |
x11-unauth-access | Critica | Il server X11 consente connessioni non autenticate |
smb-signing-not-required | Media | Firma SMB non richiesta (rischio di attacco relay) |
telnet-cleartext | Media | Telnet trasmette le credenziali in chiaro |
vnc-detected | Media | VNC rilevato (spesso con autenticazione debole) |
ssh-password-auth | Media | Il server consente l'autenticazione tramite password |
ssh-weak-cipher | Bassa | Il server offre cifrari deboli (RC4, 3DES, Blowfish) |
ssh-weak-kex | Bassa | Il server offre algoritmi di scambio chiavi deboli |
ssh-weak-mac | Bassa | Il server offre algoritmi MAC deboli |
ftp-cleartext | Bassa | FTP trasmette le credenziali in chiaro |
Output di esempio con misconfigurazioni:```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" } ] }
### Supporto Proxy
Nerva supporta l'instradamento del traffico di scansione attraverso proxy SOCKS5 e HTTP con risoluzione DNS configurabile.
**Schemi proxy supportati:**
- `socks5://` - Proxy SOCKS5 con risoluzione DNS locale
- `socks5h://` - Proxy SOCKS5 con risoluzione DNS lato proxy (sempre)
- `http://` - Proxy HTTP CONNECT
- `https://` - Proxy HTTPS CONNECT
**Autenticazione proxy:**```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
Strategie di risoluzione DNS (--dns-order):