
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 transportes TCP, UDP y SCTP con extracción de metadatos enriquecida.
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
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
Huella digital de un único objetivo:
nerva -t example.com:22
# ssh://example.com:22
Obtener metadatos JSON detallados:
nerva -t example.com:22 --json
# {"host":"example.com","ip":"93.184.216.34","port":22,"protocol":"ssh","transport":"tcp","metadata":{...}}
Canalizar desde un escáner de puertos:
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
Múltiples objetivos:
nerva -t example.com:22,example.com:80,example.com:443
Desde el archivo:
nerva -l targets.txt --json -o results.json
Escaneo UDP:
nerva -t example.com:53 -U
# dns://example.com:53
Escaneo SCTP (solo Linux):
nerva -t telecom-server:3868 -S
# diameter://telecom-server:3868
Modo rápido (solo puertos predeterminados):
nerva -l large-target-list.txt --fast --json
Enrutamiento de proxy con resolución DNS remota:
nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p
Nerva puede identificar configuraciones de seguridad incorrectas comunes cuando se habilita con --misconfigs:
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 |
dotnet-remoting-http-exposed | Alta | Canal HTTP de .NET Remoting expuesto (riesgo de deserialización) |
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 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:
{
"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"
}
]
}
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 localsocks5h:// - Proxy SOCKS5 con resolución DNS del lado del proxy (siempre)http:// - Proxy HTTP CONNECThttps:// - Proxy HTTPS CONNECTAutenticación de proxy:
# 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