
nerva v1.57.1
CLI de fingerprinting rápido de serviços para 170+ protocolos (TCP/UDP/SCTP) - criado pela Praetorian
Nerva
Nerva: CLI rápida de fingerprinting de serviços
Recursos • Instalação • Início Rápido • Uso • Protocolos • Biblioteca • Casos de Uso • Solução de Problemas
Fingerprinting de serviços de alto desempenho escrito em Go. Identifique mais de 170 protocolos de rede nos transportes TCP, UDP e SCTP com extração avançada de metadados.
O Nerva detecta e identifica rapidamente serviços em execução em portas de rede abertas. Use-o em conjunto com scanners de portas como o Naabu para fazer fingerprinting dos serviços descobertos, ou integre-o aos seus pipelines de segurança para reconhecimento automatizado.
Recursos
- Mais de 170 Plugins de Protocolo — Bancos de dados, acesso remoto, serviços web, mensageria, protocolos industriais e de telecomunicações
- 76 Fingerprinters HTTP — Detecte tecnologias web, incluindo firewalls, bancos de dados, servidores de IA/LLM e muito mais
- Detecção de Configurações de Segurança Incorretas — Identifique problemas de segurança comuns, como APIs não autenticadas e protocolos em texto claro (
--misconfigs) - Suporte a Múltiplos Transportes — TCP (padrão), UDP (
--udp) e SCTP (--sctp, somente Linux) - Suporte a Proxy — Encaminhe o tráfego de varredura de forma transparente por proxies SOCKS5 ou HTTP com resolução DNS configurável
- Metadados Ricos — Extraia versões, configurações e detalhes relevantes para segurança de cada serviço
- Modo Rápido — Escaneie apenas as portas padrão para reconhecimento rápido (
--fast) - Saída Flexível — Formatos JSON, CSV ou legível por humanos
- Compatível com Pipelines — Receba dados via pipe do Naabu, Nmap ou qualquer ferramenta que produza
host:port - Biblioteca Go — Importe diretamente em suas aplicações Go
Instalação
Releases
Baixe um binário pré-compilado na página de Releases.
Do GitHub```sh
go install github.com/praetorian-inc/nerva/cmd/nerva@latest
### Do Código-Fonte```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
## Início Rápido
Fingerprint de um único alvo:```sh
nerva -t example.com:22
# ssh://example.com:22
Obtenha metadados JSON detalhados:```sh nerva -t example.com:22 --json
{"host":"example.com","ip":"93.184.216.34","port":22,"protocol":"ssh","transport":"tcp","metadata":{...}}
Pipe de um scanner de portas:```sh
naabu -host example.com -silent | nerva
# http://example.com:80
# ssh://example.com:22
# https://example.com:443
A referência completa — cada subcomando, alias e flag, incluindo os que estão ocultos de --help — é gerada em 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
### Exemplos
**Múltiplos alvos:**```sh
nerva -t example.com:22,example.com:80,example.com:443
Do arquivo:```sh nerva -l targets.txt --json -o results.json
**Varredura UDP** (pode exigir root):```sh
sudo nerva -t example.com:53 -U
# dns://example.com:53
Varredura SCTP (apenas Linux):```sh nerva -t telecom-server:3868 -S
diameter://telecom-server:3868
**Modo rápido** (apenas portas padrão):```sh
nerva -l large-target-list.txt --fast --json
Roteamento de proxy com resolução DNS remota:```sh nerva -t target.internal:80 --proxy socks5://127.0.0.1:1080 --dns-order p
### Detecção de Configurações de Segurança Incorretas
O Nerva pode identificar configurações de segurança incorretas comuns quando ativado com `--misconfigs`:```sh
nerva -t example.com:2375 --misconfigs --json
Configurações incorretas detetadas:
| ID da descoberta | Gravidade | Descrição |
|---|---|---|
docker-unauth-api | Crítica | API do Docker acessível sem autenticação |
x11-unauth-access | Crítica | O servidor X11 permite ligações não autenticadas |
smb-signing-not-required | Média | Assinatura SMB não exigida (risco de ataque relay) |
telnet-cleartext | Média | O Telnet transmite credenciais em texto simples |
vnc-detected | Média | VNC detetado (frequentemente com autenticação fraca) |
ssh-password-auth | Média | O servidor permite autenticação por palavra-passe |
ssh-weak-cipher | Baixa | O servidor oferece cifras fracas (RC4, 3DES, Blowfish) |
ssh-weak-kex | Baixa | O servidor oferece algoritmos de troca de chaves fracos |
ssh-weak-mac | Baixa | O servidor oferece algoritmos MAC fracos |
ftp-cleartext | Baixa | O FTP transmite credenciais em texto simples |
Exemplo de saída com configurações incorretas:```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" } ] }
### Suporte a Proxy
O Nerva oferece suporte ao roteamento de tráfego de varredura através de proxies SOCKS5 e HTTP com resolução DNS configurável.
**Esquemas de proxy suportados:**
- `socks5://` - Proxy SOCKS5 com resolução DNS local
- `socks5h://` - Proxy SOCKS5 com resolução DNS do lado do proxy (sempre)
- `http://` - Proxy HTTP CONNECT
- `https://` - Proxy HTTPS CONNECT
**Autenticação 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
Estratégias de resolução DNS (--dns-order):