
nerva v1.53.1
CLI rapide d'empreinte de services pour plus de 170 protocoles (TCP/UDP/SCTP) - construit par Praetorian
Nerva
Nerva : CLI rapide d'empreinte de services
Fonctionnalités • Installation • Démarrage rapide • Utilisation • Protocoles • Bibliothèque • Cas d'usage • Dépannage
Empreinte de services haute performance écrite en Go. Identifiez plus de 170 protocoles réseau sur les transports TCP, UDP et SCTP avec une extraction riche de métadonnées.
Nerva détecte et identifie rapidement les services s'exécutant sur des ports réseau ouverts. Utilisez-le en complément de scanners de ports comme Naabu pour établir l'empreinte des services découverts, ou intégrez-le dans vos pipelines de sécurité pour une reconnaissance automatisée.
Fonctionnalités
- Plus de 170 plugins de protocoles — Bases de données, accès distant, services web, messagerie, protocoles industriels et télécoms
- 76 empreinteurs HTTP — Détectez les technologies web, notamment les pare-feu, les bases de données, les serveurs IA/LLM, et plus encore
- Détection des mauvaises configurations de sécurité — Identifiez les problèmes de sécurité courants comme les API non authentifiées et les protocoles en clair (
--misconfigs) - Prise en charge multi-transport — TCP (par défaut), UDP (
--udp) et SCTP (--sctp, Linux uniquement) - Prise en charge des proxys — Acheminez le trafic de scan de manière transparente via des proxys SOCKS5 ou HTTP avec résolution DNS configurable
- Métadonnées riches — Extrayez les versions, les configurations et les détails pertinents pour la sécurité de chaque service
- Mode rapide — Scannez uniquement les ports par défaut pour une reconnaissance rapide (
--fast) - Sortie flexible — Formats JSON, CSV ou lisible par l'humain
- Compatible avec les pipelines — Recevez les données de Naabu, Nmap ou tout outil produisant
host:port - Bibliothèque Go — Importez directement dans vos applications Go
Installation
Releases
Téléchargez un binaire précompilé depuis la page Releases.
Depuis GitHub```sh
go install github.com/praetorian-inc/nerva/cmd/nerva@latest
### Depuis la source```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
## Démarrage rapide
Empreinte d'une cible unique :```sh
nerva -t example.com:22
# ssh://example.com:22
Obtenir des métadonnées JSON détaillées :```sh nerva -t example.com:22 --json
{"host":"example.com","ip":"93.184.216.34","port":22,"protocol":"ssh","transport":"tcp","metadata":{...}}
Pipe depuis un scanner de ports :```sh
naabu -host example.com -silent | nerva
# http://example.com:80
# ssh://example.com:22
# https://example.com:443
La référence complète — chaque sous-commande, alias et option, y compris ceux masqués de --help — est générée dans docs/CLI.md.
Utilisation```
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
### Exemples
**Cibles multiples :**```sh
nerva -t example.com:22,example.com:80,example.com:443
Depuis le fichier :```sh nerva -l targets.txt --json -o results.json
**Scan UDP** (peut nécessiter les droits root) :```sh
sudo nerva -t example.com:53 -U
# dns://example.com:53
Scan SCTP (Linux uniquement) :```sh nerva -t telecom-server:3868 -S
diameter://telecom-server:3868
**Mode rapide** (ports par défaut uniquement) :```sh
nerva -l large-target-list.txt --fast --json
Routage proxy avec résolution DNS distante :```sh nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p
### Détection des erreurs de configuration de sécurité
Nerva peut identifier les erreurs de configuration de sécurité courantes lorsqu'il est activé avec `--misconfigs` :```sh
nerva -t example.com:2375 --misconfigs --json
Mauvaises configurations détectées :
| ID de constat | Sévérité | Description |
|---|---|---|
docker-unauth-api | Critique | API Docker accessible sans authentification |
x11-unauth-access | Critique | Le serveur X11 autorise les connexions non authentifiées |
smb-signing-not-required | Moyenne | Signature SMB non requise (risque d'attaque par relais) |
telnet-cleartext | Moyenne | Telnet transmet les identifiants en clair |
vnc-detected | Moyenne | VNC détecté (authentification souvent faible) |
ssh-password-auth | Moyenne | Le serveur autorise l'authentification par mot de passe |
ssh-weak-cipher | Faible | Le serveur propose des chiffrements faibles (RC4, 3DES, Blowfish) |
ssh-weak-kex | Faible | Le serveur propose des algorithmes d'échange de clés faibles |
ssh-weak-mac | Faible | Le serveur propose des algorithmes MAC faibles |
ftp-cleartext | Faible | FTP transmet les identifiants en clair |
Exemple de sortie avec mauvaises configurations :```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" } ] }
### Prise en charge des proxys
Nerva prend en charge le routage du trafic de scan via des proxys SOCKS5 et HTTP avec une résolution DNS configurable.
**Schémas de proxy pris en charge :**
- `socks5://` - proxy SOCKS5 avec résolution DNS locale
- `socks5h://` - proxy SOCKS5 avec résolution DNS côté proxy (toujours)
- `http://` - proxy HTTP CONNECT
- `https://` - proxy HTTPS CONNECT
**Authentification par 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
Stratégies de résolution DNS (--dns-order) :