
CLI de identificación rápida de servicios para más de 170 protocolos (TCP/UDP/SCTP) - creado por Praetorian
Características • Instalación • Inicio rápido • Uso • Protocolos • Biblioteca • Casos de uso • Solución de problemas
Fingerprinting de servicios de alto rendimiento escrito en Go. Identifica más de 170 protocolos de red en los transportes TCP, UDP y SCTP con extracción de metadatos enriquecidos.
Nerva detecta e identifica rápidamente servicios que se ejecutan en puertos de red abiertos. Úsalo junto con escáneres de puertos como Naabu para hacer fingerprinting de los servicios descubiertos, o intégralo en tus pipelines de seguridad para reconocimiento automatizado.
--misconfigs)--udp) y SCTP (--sctp, solo Linux)--fast)host:portDescarga un binario precompilado desde la página de Releases.
go install github.com/praetorian-inc/nerva/cmd/nerva@latest
### Desde el código fuente```sh
git clone https://github.com/praetorian-inc/nerva.git
cd nerva
go build ./cmd/nerva
./nerva -h
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
## Inicio rápido
Huella digital de un único objetivo:```sh
nerva -t example.com:22
# ssh://example.com:22
Obtener metadatos JSON detallados:```sh nerva -t example.com:22 --json
Canalizar desde un escáner de puertos:```sh
naabu -host example.com -silent | nerva
# http://example.com:80
# ssh://example.com:22
# https://example.com:443
La referencia completa — cada subcomando, alias y flag, incluidos los ocultos de --help — se genera en docs/CLI.md.
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
### Ejemplos
**Múltiples objetivos:**```sh
nerva -t example.com:22,example.com:80,example.com:443
Del archivo:```sh nerva -l targets.txt --json -o results.json
**Escaneo UDP** (puede requerir root):```sh
sudo nerva -t example.com:53 -U
# dns://example.com:53
Escaneo SCTP (solo Linux):```sh nerva -t telecom-server:3868 -S
**Modo rápido** (solo puertos predeterminados):```sh
nerva -l large-target-list.txt --fast --json
Enrutamiento de proxy con resolución DNS remota:```sh nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p
### Detección de configuraciones de seguridad incorrectas
Nerva puede identificar configuraciones de seguridad incorrectas comunes cuando se habilita con `--misconfigs`:```sh
nerva -t example.com:2375 --misconfigs --json
Misconfiguraciones detectadas:
| ID de hallazgo | Severidad | Descripción |
|---|---|---|
docker-unauth-api | Crítica | API de Docker accesible sin autenticación |
x11-unauth-access | Crítica | El servidor X11 permite conexiones no autenticadas |
smb-signing-not-required | Media | Firma SMB no requerida (riesgo de ataque de retransmisión) |
telnet-cleartext | Media | Telnet transmite credenciales en texto claro |
vnc-detected | Media | VNC detectado (a menudo con autenticación débil) |
ssh-password-auth | Media | El servidor permite autenticación por contraseña |
ssh-weak-cipher | Baja | El servidor ofrece cifrados débiles (RC4, 3DES, Blowfish) |
ssh-weak-kex | Baja | El servidor ofrece algoritmos de intercambio de claves débiles |
ssh-weak-mac | Baja | El servidor ofrece algoritmos MAC débiles |
ftp-cleartext | Baja | FTP transmite credenciales en texto claro |
Ejemplo de salida con misconfiguraciones:```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" } ] }
### Soporte de Proxy
Nerva admite el enrutamiento del tráfico de escaneo a través de proxies SOCKS5 y HTTP con resolución DNS configurable.
**Esquemas de proxy compatibles:**
- `socks5://` - Proxy SOCKS5 con resolución DNS local
- `socks5h://` - Proxy SOCKS5 con resolución DNS del lado del proxy (siempre)
- `http://` - Proxy HTTP CONNECT
- `https://` - Proxy HTTPS CONNECT
**Autenticación de 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
Estrategias de resolución DNS (--dns-order):