Voltar às atualizações
New releaseAug 7, 2026

nerva v1.61.0

CLI de fingerprinting rápido de serviços para 170+ protocolos (TCP/UDP/SCTP) - criado pela Praetorian

Compartilhar
Nerva - CLI rápida de fingerprinting de serviços para reconhecimento de rede com suporte a mais de 170 protocolos

Nerva
Nerva: CLI rápida de fingerprinting de serviços

Lançamento Status da Build Relatório Go Report Card Licença Estrelas

FuncionalidadesInstalaçãoInício RápidoUsoProtocolosBibliotecaCasos de UsoSoluçã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 rica de metadados.

Nerva detecta e identifica rapidamente serviços em execução em portas de rede abertas. Use-o junto com scanners de porta como Naabu para fazer fingerprinting de serviços descobertos, ou integre-o em seus pipelines de segurança para reconhecimento automatizado.

Funcionalidades

  • 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 AI/LLM e mais
  • Detecção de Configurações Incorretas de Segurança — Identifique problemas comuns de segurança como APIs não autenticadas e protocolos em texto claro (--misconfigs)
  • Suporte a Múltiplos Transportes — TCP (padrão), UDP (--udp) e SCTP (--sctp, apenas Linux)
  • Suporte a Proxy — Roteie o tráfego de varredura de forma transparente através de proxies SOCKS5 ou HTTP com resolução de DNS configurável
  • Metadados Ricos — Extraia versões, configurações e detalhes relevantes de segurança de cada serviço
  • Modo Rápido — Escaneie apenas portas padrão para reconhecimento rápido (--fast)
  • Saída Flexível — Formatos JSON, CSV ou legíveis por humanos
  • Amigável para Pipelines — Pipe a partir de Naabu, Nmap ou qualquer ferramenta que produza host:porta
  • Biblioteca Go — Importe diretamente em suas aplicações Go

Instalação

Lançamentos

Baixe um binário pré-compilado da página de Lançamentos.

A partir do GitHub```sh

go install github.com/praetorian-inc/nerva/cmd/nerva@latest

### A partir 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

Identifique 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

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

### Flags

| Flag | Short | Descrição | Padrão |
|------|-------|-----------|---------|
| `--targets` | `-t` | Alvo ou lista de alvos separados por vírgula | — |
| `--list` | `-l` | Ficheiro de entrada contendo alvos | — |
| `--output` | `-o` | Caminho do ficheiro de saída | stdout |
| `--json` | | Saída no formato JSON | false |
| `--csv` | | Saída no formato CSV | false |
| `--misconfigs` | | Ativar deteção de configurações incorretas de segurança | false |
| `--proxy` | | URL do proxy (ex.: socks5://127.0.0.1:1080) | — |
| `--proxy-auth` | | Autenticação do proxy SOCKS5 (ex.: username:password) | — |
| `--dns-order` | | Ordem de resolução DNS: `p`, `l`, `lp`, `pl` | `lp` |
| `--fast` | `-f` | Modo rápido (apenas portas padrão) | false |
| `--capabilities` | `-c` | Listar capacidades disponíveis e sair | false |
| `--udp` | `-U` | Executar plugins UDP | false |
| `--sctp` | `-S` | Executar plugins SCTP (apenas Linux) | false |
| `--timeout` | `-w` | Tempo limite em milissegundos | 2000 |
| `--verbose` | `-v` | Saída detalhada para stderr | false |
| `--workers` | `-W` | Trabalhadores de análise concorrentes | 50 |
| `--max-host-conn` | `-H` | Máximo de conexões concorrentes por IP de anfitrião (0=sem limite) | 0 |
| `--rate-limit` | `-R` | Máximo de análises por segundo globalmente (0=sem limite) | 0 |

### 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 (somente 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ção Incorreta de Segurança

Nerva pode identificar configurações incorretas de segurança comuns quando ativada com `--misconfigs`:```sh
nerva -t example.com:2375 --misconfigs --json

Configurações incorretas detectadas:

ID da DescobertaGravidadeDescrição
docker-unauth-apiCríticoAPI Docker acessível sem autenticação
x11-unauth-accessCríticoServidor X11 permite conexões não autenticadas
smb-signing-not-requiredMédioAssinatura SMB não exigida (risco de ataque de relé)
telnet-cleartextMédioTelnet transmite credenciais em texto claro
vnc-detectedMédioVNC detectado (autenticação frequentemente fraca)
ssh-password-authMédioServidor permite autenticação por senha
ssh-weak-cipherBaixoServidor oferece cifras fracas (RC4, 3DES, Blowfish)
ssh-weak-kexBaixoServidor oferece algoritmos de troca de chaves fracos
ssh-weak-macBaixoServidor oferece algoritmos MAC fracos
ftp-cleartextBaixoFTP transmite credenciais em texto claro

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

Nerva suporta o roteamento do 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 de DNS (--dns-order):

OpçãoEstratégiaCaso de uso
lApenas localDNS local padrão (padrão)
pApenas proxyForçar resolução de DNS pelo proxy
lpLocal, com fallback para proxyTentar local primeiro, usar proxy em caso de falha
plProxy, com fallback para localTentar proxy primeiro, usar local em caso de falha

Nota: O esquema socks5h:// força automaticamente a resolução de DNS pelo proxy (equivalente a --dns-order p)

Exemplo de varredura com Tor:```sh

Scan .onion services through Tor (SOCKS5 proxy on port 9050)

nerva -t http://example.onion:80 --proxy socks5h://127.0.0.1:9050

**UDP através de proxy:**```sh
# UDP scanning through SOCKS5 proxy (limited support)
nerva -t target.com:161 --proxy socks5://127.0.0.1:1080 --udp

⚠️ Limitações de UDP: O UDP através de SOCKS5 tem suporte limitado. Nem todos os servidores SOCKS5 suportam associação UDP. Pode ocorrer fallback para UDP local.

Varredura paralela com limitação de taxa:```sh nerva -l large-target-list.txt -W 100 -H 5 -R 50 -v

**Desligamento gracioso** (Ctrl+C retorna resultados parciais):```sh
nerva -l huge-target-list.txt -W 50 -v
# Press Ctrl+C to stop — collected results are still printed

Protocolos Suportados

170+ plugins de detecção de serviços em TCP, UDP e SCTP:

Módulos de Impressão Digital HTTP (66)

Detecção de tecnologia para serviços web, organizados por categoria:

Firewalls e Segurança de Rede (12)

MóduloDescrição
CheckpointGateway de Segurança Check Point
Cisco ASA/FTDDispositivos firewall/VPN Cisco
FortiGateFirewall/VPN Fortinet
GlobalProtectVPN Palo Alto Networks
JuniperFirewalls Juniper SRX
OPNsenseFirewall OPNsense
pfSenseFirewall pfSense
SonicWallFirewalls SonicWall
AnyConnectCisco AnyConnect SSL VPN
Cisco ExpresswayGateway de colaboração Cisco
BigIPBalanceador de carga F5 BIG-IP
WinRMWindows Remote Management

AI/LLM e Aprendizado de Máquina (6)

MóduloDescrição
OllamaServidor de inferência LLM auto-hospedado
LocalAIInferência LLM auto-hospedada (compatível com OpenAI)
Open WebUIInterface web LLM (estilo ChatGPT)
TritonNVIDIA Triton Inference Server
WeaviateBanco de dados vetorial para IA
ChromaDBBanco de dados vetorial

Bancos de Dados e Armazenamento de Dados (12)

MóduloDescrição
ArangoDBBanco de dados multimodelo
CockroachDBBanco de dados SQL distribuído
CouchDBBanco de dados documento Apache
ElasticsearchMecanismo de busca e análise
etcdArmazenamento chave-valor distribuído
MilvusBanco de dados vetorial
MinIOArmazenamento de objetos compatível com S3
PineconeBanco de dados vetorial
Redis CommanderInterface web de gerenciamento Redis
TiDBBanco de dados SQL distribuído
YugabyteDBBanco de dados SQL distribuído
QdrantBanco de dados vetorial

DevOps e Infraestrutura (14)

MóduloDescrição
ArtifactoryRepositório de artefatos JFrog
ConsulMalha de serviço HashiCorp
Docker RegistryRegistro de imagens de contêiner
GiteaServiço Git auto-hospedado
GrafanaPlataforma de observabilidade
HarborRegistro de contêiner
JaegerRastreamento distribuído
JenkinsAutomação CI/CD
KubernetesAPI de orquestração de contêiner
PortainerInterface de gerenciamento Docker
PrometheusSistema de monitoramento
Swagger/OpenAPIDocumentação de API
TeamCityServidor CI/CD
VaultGerenciamento de segredos HashiCorp

Servidores Web e Frameworks (10)

MóduloDescrição
Apache HTTPDApache HTTP Server
Express.jsFramework web Node.js
GoAheadServidor web embarcado
GotenbergServiço de geração de PDF
GuacamoleGateway de desktop remoto Apache
SOAPServiços web
TengineServidor web Alibaba
TomcatApache Tomcat
WordPressPlataforma CMS
UPnPUniversal Plug and Play

Empresarial e Negócios (8)

MóduloDescrição
AEMAdobe Experience Manager
Dynamics 365Microsoft Dynamics 365 / Power Apps
Oracle Service CloudPlataforma CRM Oracle
SAP NetWeaverPlataforma empresarial SAP
SplunkPlataforma de gerenciamento de logs
VMware HorizonInfraestrutura de desktop virtual
QNAP QTSGerenciamento NAS
ExchangeMicrosoft Exchange Server

Casa e IoT (2)

MóduloDescrição
Home AssistantPlataforma de automação residencial
UniFi/EdgeOSDispositivos de rede Ubiquiti

Outros (2)

MóduloDescrição
Go pprofEndpoints de perfil Go
NATSBroker de mensagens

Bancos de Dados (20)

ProtocoloTransportePortas Padrão
PostgreSQLTCP5432
MySQLTCP3306
MSSQLTCP1433
OracleTCP1521
MongoDBTCP27017
RedisTCP/TLS6379, 6380
CassandraTCP9042
InfluxDBTCP8086
Neo4jTCP/TLS7687
DB2TCP446, 50000
SybaseTCP5000
FirebirdTCP3050
MemcachedTCP11211
ZooKeeperTCP2181
MilvusTCP19530, 9091
CouchDBHTTP5984
ElasticsearchHTTP9200
ArangoDBHTTP8529
ChromaDBHTTP8000
PineconeHTTP443

Acesso Remoto (6)

ProtocoloTransportePortas Padrão
SSHTCP22, 2222
RDPTCP/TLS3389
TelnetTCP23
VNCTCP5900
AnyDeskTCP7070
TeamViewerTCP5938

Web e API (2)

ProtocoloTransporteNotas
HTTP/HTTPSTCPHTTP/2, detecção de tecnologia via Wappalyzer
KubernetesTCPDetecção de servidor API

Mensageria e Filas (10)

ProtocoloTransportePortas Padrão
KafkaTCP/TLS9092, 9093
MQTT 3/5TCP/TLS1883, 8883
AMQPTCP/TLS5672, 5671
ActiveMQTCP/TLS61616, 61617
NATSTCP/TLS4222, 6222
PulsarTCP/TLS6650, 6651
SMTPTCP/TLS25, 465, 587
POP3TCP/TLS110, 995
IMAPTCP/TLS143, 993
SMPPTCP2775, 2776

Serviços de Arquivo e Diretório (7)

ProtocoloTransportePortas Padrão
FTPTCP21
SMBTCP445
NFSTCP/UDP2049
RsyncTCP873
TFTPUDP69
SVNTCP3690
LDAPTCP/TLS389, 636

Serviços de Rede (11)

ProtocoloTransportePortas Padrão
DNSTCP/UDP53
DHCPUDP67, 68
NTPUDP123
SNMPUDP161
NetBIOS-NSUDP137
STUNUDP3478
OpenVPNUDP1194
IPsecUDP500
IPMIUDP623
CoAPUDP5683
EchoTCP/UDP7

Sistemas de Controle Industrial (18)

ProtocoloTransportePortas PadrãoNotas
ModbusTCP502SCADA/PLC
S7commTCP102Siemens PLC
EtherNet/IPTCP44818Rockwell/Allen-Bradley
PROFINETTCP34962-34964Siemens industrial
BACnetUDP47808Automação predial
OPC UATCP4840Interoperabilidade industrial
OMRON FINSTCP/UDP9600OMRON PLC
MELSEC-QTCP5006, 5007Mitsubishi PLC
KNXnet/IPUDP3671Automação predial
IEC 104TCP2404SCADA de rede elétrica
DNP3TCP20000SCADA de rede elétrica
CodesysTCP1200, 2455Runtime PLC
FoxTCP1911Tridium Niagara
PC WORXTCP1962Phoenix Contact
ProConOSTCP20547Runtime PLC
HART-IPTCP5094Automação de processos
EtherCATUDP34980Controle de movimento
Crimson v3TCP789Red Lion HMI
PCOMTCP20256Unitronics PLC
GE SRTPTCP18245GE PLC
ATGTCP10001Medidores de tanque

Telecom e VoIP (17)

ProtocoloTransportePortas PadrãoNotas
DiameterTCP/SCTP3868AAA LTE/5G
M3UASCTP2905SS7 sobre IP
M2UASCTP2904Adaptação de usuário MTP2
M2PASCTP3565Adaptação de peer MTP2
SGsAPSCTP29118Fallback de circuito comutado
X2APSCTP36422Inter-eNodeB LTE
IUASCTP9900ISDN sobre IP
SIPTCP/UDP/TLS5060, 5061Sinalização VoIP
MEGACO/H.248UDP2944, 2945Gateway de mídia
MGCPUDP2427, 2727Gateway de mídia
H.323TCP1720Videoconferência
SCCP/SkinnyTCP2000, 2443Telefones IP Cisco
IAX2UDP4569Protocolo Asterisk
GTP-CUDP2123Controle GPRS
GTP-UUDP2152Plano de usuário GPRS
GTP'UDP3386Cobrança GPRS
PFCPUDP8805Plano de usuário 5G

VPN e Segurança (11)

ProtocoloTransportePortas Padrão
SSHTCP22, 2222
OpenVPNUDP1194
WireGuardUDP51820
IPsec/IKEv2UDP500, 4500
L2TPUDP1701
SSTPTCP443
GlobalProtectHTTP443
AnyConnectHTTP443
FortiGateHTTP443
STUN/TURNUDP3478, 5349
KerberosTCP88

Acesso Remoto e Gerenciamento (10)

ProtocoloTransportePortas Padrão
RDPTCP/TLS3389
VNCTCP5900
TelnetTCP23
WinRMHTTP5985, 5986
IPMIUDP623
SNMPUDP161
Zabbix AgentTCP10050
NRPETCP/TLS5666
DockerTCP/TLS2375, 2376
X11TCP6000-6063

Ferramentas para Desenvolvedores (8)

ProtocoloTransportePortas Padrão
HTTP/HTTPSTCP80, 443, 8080, 8443
Java RMITCP1099
JDWPTCP5005
RTSPTCP554
Linux RPCTCP111
JetDirectTCP9100
CUPS/IPPTCP631
SonarQubeTCP9000

Uso da Biblioteca

Importe o Nerva para suas aplicações Go:```go package main

import ( "context" "fmt" "log" "net/netip" "time"

"github.com/praetorian-inc/nerva/pkg/plugins"
"github.com/praetorian-inc/nerva/pkg/scan"

)

func main() { // Configure scan config := scan.Config{ DefaultTimeout: 2 * time.Second, FastMode: false, UDP: false, Proxy: "socks5://127.0.0.1:1080", // optional ProxyAuth: "username:password", // optional DNSOrder: "p", // resolver strategy }

// Create target
ip, _ := netip.ParseAddr("93.184.216.34")
target := plugins.Target{
    Address: netip.AddrPortFrom(ip, 22),
    Host:    "example.com",
}

// Run scan
results, err := scan.ScanTargets(context.Background(), []plugins.Target{target}, config)
if err != nil {
    log.Fatal(err)
}

// Process results
for _, result := range results {
    fmt.Printf("%s:%d - %s (%s)\n",
        result.Host, result.Port,
        result.Protocol, result.Transport)
}

}

Veja [examples/service-fingerprinting-example.go](https://github.com/praetorian-inc/nerva/blob/HEAD/examples/service-fingerprinting-example.go) para um exemplo completo funcional.

## Casos de Uso

### Testes de Penetração

Identifique rapidamente os serviços descobertos durante o reconhecimento para identificar possíveis vetores de ataque.

### Pipelines de Descoberta de Ativos

Combine com Naabu ou Masscan para inventário de ativos em larga escala:```sh
naabu -host 10.0.0.0/24 -silent | nerva --json | jq '.protocol'

Varredura de Segurança CI/CD

Integre nos pipelines de implantação para verificar se apenas os serviços esperados estão expostos.

Reconhecimento para Bug Bounty

Enumere rapidamente serviços em alvos dentro do escopo para encontrar endpoints interessantes.

Análise de Rede de Telecomunicações

Identifique nós Diameter em redes LTE/5G usando transporte SCTP (Linux):```sh nerva -t mme.telecom.local:3868 -S --json

## Arquitetura```mermaid
graph LR
    A[host:port input] --> B[Target Parser]
    B --> C[Scan Engine]
    C --> D{Transport}
    D -->|TCP| E[TCP Plugins]
    D -->|UDP| F[UDP Plugins]
    D -->|SCTP| G[SCTP Plugins]
    E --> H[Service Detection]
    F --> H
    G --> H
    H --> I[Metadata Extraction]
    I --> J[JSON/CSV/Text Output]

Por que Nerva?

vs Nmap

  • Padrões mais inteligentes: Nerva verifica o protocolo mais provável primeiro com base no número da porta
  • Saída estruturada: Suporte nativo a JSON/CSV para fácil análise e integração em pipelines
  • Focado: Apenas impressão digital de serviços — combine com scanners de porta dedicados para descoberta

vs zgrab2

  • Detecção automática: Não é necessário especificar o protocolo antecipadamente
  • Uso mais simples: nerva -t host:port vs echo host | zgrab2 http -p port

Solução de Problemas

Sem saída

Causa: Porta está fechada ou nenhum serviço suportado detectado.

Solução: Verifique se a porta está aberta:```sh nc -zv example.com 80

### Erros de timeout

**Causa**: O timeout padrão de 2 segundos é muito curto para serviços lentos.

**Solução**: Aumente o timeout:

``````sh
nerva -t example.com:80 -w 5000  # 5 seconds

Serviços UDP não detectados

Causa: Varredura UDP desabilitada por padrão.

Solução: Ative com a flag -U (pode exigir root):```sh sudo nerva -t example.com:53 -U

### SCTP não está funcionando

**Causa**: SCTP só é suportado no Linux.

**Solução**: Execute em um sistema ou contêiner Linux:```sh
docker run --rm nerva -t telecom:3868 -S

Terminologia

  • Serviço: Um serviço de rede executando em uma porta (SSH, HTTP, PostgreSQL, etc.)
  • Fingerprinting: Detectando e identificando o tipo, versão e configuração do serviço
  • Plugin: Um módulo de detecção específico de protocolo
  • Modo Rápido: Escaneando apenas a porta padrão para cada protocolo (otimização 80/20)
  • Transporte: Protocolo de camada de rede (TCP, UDP ou SCTP)

Suporte

Se você acha o Nerva útil, considere dar uma estrela:

GitHub stars

Contribuindo

Aceitamos contribuições! Veja CONTRIBUTING.md para diretrizes.

Licença

Apache 2.0 — veja LICENSE para detalhes.

Agradecimentos

Nerva é um fork mantido do fingerprintx, originalmente desenvolvido pela turma de estagiários da Praetorian de 2022:

Categorias