
nerva v1.69.6
CLI de identificación rápida de servicios para más de 170 protocolos (TCP/UDP/SCTP) - creado por Praetorian
Nerva
Nerva: CLI de fingerprinting de servicios rápido
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.
Características
- Más de 170 plugins de protocolos — Bases de datos, acceso remoto, servicios web, mensajería, protocolos industriales y de telecomunicaciones
- 76 fingerprinters HTTP — Detecta tecnologías web, incluidos firewalls, bases de datos, servidores de IA/LLM y más
- Detección de malas configuraciones de seguridad — Identifica problemas de seguridad comunes como APIs sin autenticación y protocolos en texto plano (
--misconfigs) - Compatibilidad con múltiples transportes — TCP (predeterminado), UDP (
--udp) y SCTP (--sctp, solo Linux) - Compatibilidad con proxies — Enruta el tráfico de escaneo de forma transparente a través de proxies SOCKS5 o HTTP con resolución DNS configurable
- Metadatos enriquecidos — Extrae versiones, configuraciones y detalles relevantes para la seguridad de cada servicio
- Modo rápido — Escanea solo los puertos predeterminados para un reconocimiento rápido (
--fast) - Salida flexible — Formatos JSON, CSV o legible por humanos
- Compatible con pipelines — Canaliza desde Naabu, Nmap o cualquier herramienta que genere
host:port - Biblioteca Go — Impórtala directamente en tus aplicaciones Go
Instalación
Releases
Descarga un binario precompilado desde la página de Releases.
Desde GitHub
go install github.com/praetorian-inc/nerva/cmd/nerva@latest
Desde el código fuente
git clone https://github.com/praetorian-inc/nerva.git
cd nerva
go build ./cmd/nerva
./nerva -h
Docker
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:
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.
Uso
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:
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
Detección de configuraciones de seguridad incorrectas
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"
}
]
}
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 localsocks5h://- Proxy SOCKS5 con resolución DNS del lado del proxy (siempre)http://- Proxy HTTP CONNECThttps://- Proxy HTTPS CONNECT
Autenticació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