Skip to content
KitploitKITPLOIT
HerramientasExploitsBlog
Log in
Enviar
HerramientasExploitsBlog
Enviar

¡Herramientas de Hacking, PenTest y Ciberseguridad para tu Arsenal de Seguridad!

Kitploit es un directorio de herramientas de hacking, ciberseguridad y pentesting. Descubre las últimas actualizaciones de proyectos para encontrar vulnerabilidades, analizar sistemas, automatizar pruebas y fortalecer tu seguridad.

FeedsContactoPrivacidad© 2026 Kitploit

Directorio de Herramientas

Categorías

Ver todas las categorías
Loading categories
nerva — CLI de identificación rápida de servicios para más de 170 protocolos (TCP/UDP/SCTP) - creado por Praetorian | Kitploit
Herramientas/GitHubGitHub/praetorian-inc/nerva
ReconocimientoSeguridad IoTMapeo de RedesEscaneo de PuertosSeguridad SCADA/ICSRecopilación de InformaciónMala Configuración
GitHubpraetorian-inc/nerva

nerva

CLI de identificación rápida de servicios para más de 170 protocolos (TCP/UDP/SCTP) - creado por Praetorian

Ver Repositorio
3223864hace 0 díasRevisado por Kitploit

Más Populares

Ver todos →

Descubre las herramientas más usadas por nuestra comunidad.

Explora todas las herramientas

Explora nuestra colección de herramientas

Ver todas las herramientas →
Compartir
<img width="2976" height="1440" alt="Nerva - CLI de fingerprinting de servicios rápido para reconocimiento de red compatible con más de 170 protocolos" src="https://assets.kitploit.com/production/public/readmes/12252/3a0b59e2929fa8fdc41aafe4cb8649e3e85f0ba5f9df8128f7f3f952d70b0018.webp" />
<h1 align="center">
  Nerva
  <br>
  <sub>Nerva: CLI de fingerprinting de servicios rápido</sub>
</h1>

<p align="center">
<a href="https://github.com/praetorian-inc/nerva/releases"><img src="https://img.shields.io/github/v/release/praetorian-inc/nerva?style=flat-square" alt="Release"></a>
<a href="https://github.com/praetorian-inc/nerva/actions"><img src="https://img.shields.io/github/actions/workflow/status/praetorian-inc/nerva/ci.yml?style=flat-square" alt="Build Status"></a>
<a href="https://goreportcard.com/report/github.com/praetorian-inc/nerva"><img src="https://goreportcard.com/badge/github.com/praetorian-inc/nerva?style=flat-square" alt="Go Report Card"></a>
<a href="https://opensource.org/licenses/Apache-2.0"><img src="https://img.shields.io/badge/License-Apache%202.0-blue.svg?style=flat-square" alt="License"></a>
<a href="https://github.com/praetorian-inc/nerva/stargazers"><img src="https://img.shields.io/github/stars/praetorian-inc/nerva?style=flat-square" alt="Stars"></a>
</p>

<p align="center">
  <a href="#features">Características</a> •
  <a href="#installation">Instalación</a> •
  <a href="#quick-start">Inicio rápido</a> •
  <a href="#usage">Uso</a> •
  <a href="#supported-protocols">Protocolos</a> •
  <a href="#library-usage">Biblioteca</a> •
  <a href="#use-cases">Casos de uso</a> •
  <a href="#troubleshooting">Solución de problemas</a>
</p>

> **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](https://github.com/projectdiscovery/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](https://github.com/praetorian-inc/nerva/releases).

### Desde GitHub

```sh
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
```

### 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
```

## 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
# {"host":"example.com","ip":"93.184.216.34","port":22,"protocol":"ssh","transport":"tcp","metadata":{...}}
```

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
```

<!-- BEGIN generated: cli-subcommands -->

<!-- END generated: cli-subcommands -->

<!-- BEGIN generated: cli-aliases -->
La referencia completa — cada subcomando, alias y flag, incluidos los ocultos de `--help` — se genera en [docs/CLI.md](https://github.com/praetorian-inc/nerva/blob/main/docs/CLI.md).
<!-- END generated: cli-aliases -->

## 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:**

```sh
nerva -t example.com:22,example.com:80,example.com:443
```

**Desde el archivo:**

```sh
nerva -l targets.txt --json -o results.json
```

**Escaneo UDP**:

```sh
nerva -t example.com:53 -U
# dns://example.com:53
```

**Escaneo SCTP** (solo Linux):

```sh
nerva -t telecom-server:3868 -S
# diameter://telecom-server:3868
```

**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 |
| `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:**

```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`):

| Opción | Estrategia | Caso de uso |
|--------|----------|----------|
| `l` | Solo local | DNS local estándar (predeterminado) |
| `p` | Solo proxy | Forzar la resolución DNS del lado del proxy |
| `lp` | Local, con fallback a proxy | Intentar local primero, usar proxy en caso de fallo |
| `pl` | Proxy, con fallback a local | Intentar proxy primero, usar local en caso de fallo |

**Nota:** el esquema `socks5h://` fuerza automáticamente el DNS del lado del proxy (equivalente a `--dns-order p`)

**Ejemplo de escaneo con 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 a través de proxy:**

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

⚠️ **Limitaciones de UDP:** UDP a través de SOCKS5 tiene soporte limitado. No todos los servidores SOCKS5 admiten la asociación UDP. Puede producirse un fallback local de UDP.

**Escaneo paralelo con limitación de tasa:**

```sh
nerva -l large-target-list.txt -W 100 -H 5 -R 50 -v
```

**Apagado controlado** (Ctrl+C devuelve resultados parciales):

```sh
nerva -l huge-target-list.txt -W 50 -v
# Press Ctrl+C to stop — collected results are still printed
```

## Protocolos compatibles

**Más de 170 plugins de detección de servicios** en TCP, UDP y SCTP:

### Módulos de huella HTTP (66)

Detección de tecnología para servicios web, organizada por categoría:

#### Cortafuegos y seguridad de red (12)

| Módulo | Descripción |
|--------|-------------|
| Checkpoint | Check Point Security Gateway |
| Cisco ASA/FTD | Aparatos de cortafuegos/VPN de Cisco |
| FortiGate | Cortafuegos/VPN de Fortinet |
| GlobalProtect | VPN de Palo Alto Networks |
| Juniper | Cortafuegos Juniper SRX |
| OPNsense | Cortafuegos OPNsense |
| pfSense | Cortafuegos pfSense |
| SonicWall | Cortafuegos SonicWall |
| AnyConnect | VPN SSL de Cisco AnyConnect |
| Cisco Expressway | Pasarela de colaboración de Cisco |
| BigIP | Balanceador de carga F5 BIG-IP |
| WinRM | Administración remota de Windows |

#### IA/LLM y aprendizaje automático (6)

| Módulo | Descripción |
|--------|-------------|
| Ollama | Servidor de inferencia LLM autoalojado |
| LocalAI | Inferencia LLM autoalojada (compatible con OpenAI) |
| Open WebUI | Interfaz web para LLM (estilo ChatGPT) |
| Triton | Servidor de inferencia NVIDIA Triton |
| Weaviate | Base de datos vectorial para IA |
| ChromaDB | Base de datos vectorial |

#### Bases de datos y almacenes de datos (12)

| Módulo | Descripción |
|--------|-------------|
| ArangoDB | Base de datos multimodelo |
| CockroachDB | Base de datos SQL distribuida |
| CouchDB | Base de datos de documentos de Apache |
| Elasticsearch | Motor de búsqueda y analítica |
| etcd | Almacén distribuido de clave-valor |
| Milvus | Base de datos vectorial |
| MinIO | Almacenamiento de objetos compatible con S3 |
| Pinecone | Base de datos vectorial |
| Redis Commander | Interfaz web de administración de Redis |
| TiDB | Base de datos SQL distribuida |
| YugabyteDB | Base de datos SQL distribuida |
| Qdrant | Base de datos vectorial |

#### DevOps e infraestructura (14)

| Módulo | Descripción |
|--------|-------------|
| Artifactory | Repositorio de artefactos de JFrog |
| Consul | Malla de servicios de HashiCorp |
| Docker Registry | Registro de imágenes de contenedores |
| Gitea | Servicio Git autoalojado |
| Grafana | Plataforma de observabilidad |
| Harbor | Registro de contenedores |
| Jaeger | Trazabilidad distribuida |
| Jenkins | Automatización CI/CD |
| Kubernetes | API de orquestación de contenedores |
| Portainer | Interfaz de administración de Docker |
| Prometheus | Sistema de monitorización |
| Swagger/OpenAPI | Documentación de API |
| TeamCity | Servidor CI/CD |
| Vault | Gestión de secretos de HashiCorp |

#### Servidores web y frameworks (10)

| Módulo | Descripción |
|--------|-------------|
| Apache HTTPD | Servidor HTTP Apache |
| Express.js | Framework web para Node.js |
| GoAhead | Servidor web embebido |
| Gotenberg | Servicio de generación de PDF |
| Guacamole | Pasarela de escritorio remoto de Apache |
| SOAP | Servicios web |
| Tengine | Servidor web de Alibaba |
| Tomcat | Apache Tomcat |
| WordPress | Plataforma CMS |
| UPnP | Universal Plug and Play |

#### Empresa y negocio (8)

| Módulo | Descripción |
|--------|-------------|
| AEM | Adobe Experience Manager |
| Dynamics 365 | Microsoft Dynamics 365 / Power Apps |
| Oracle Service Cloud | Plataforma CRM de Oracle |
| SAP NetWeaver | Plataforma empresarial de SAP |
| Splunk | Plataforma de gestión de registros |
| VMware Horizon | Infraestructura de escritorio virtual |
| QNAP QTS | Administración de NAS |
| Exchange | Microsoft Exchange Server |

#### Hogar e IoT (2)

| Módulo | Descripción |
|--------|-------------|
| Home Assistant | Plataforma de automatización del hogar |
| UniFi/EdgeOS | Dispositivos de red Ubiquiti |

#### Otros (3)

| Módulo | Descripción |
|--------|-------------|
| .NET Remoting HTTP | Canal HTTP de Microsoft .NET Remoting |
| Go pprof | Endpoints de perfilado de Go |
| NATS | Broker de mensajes |

### Bases de datos (20)

| Protocolo | Transporte | Puertos predeterminados |
|----------|-----------|---------------|
| PostgreSQL | TCP | 5432 |
| MySQL | TCP | 3306 |
| MSSQL | TCP | 1433 |
| Oracle | TCP | 1521 |
| MongoDB | TCP | 27017 |
| Redis | TCP/TLS | 6379, 6380 |
| Cassandra | TCP | 9042 |
| InfluxDB | TCP | 8086 |
| Neo4j | TCP/TLS | 7687 |
| DB2 | TCP | 446, 50000 |
| Sybase | TCP | 5000 |
| Firebird | TCP | 3050 |
| Memcached | TCP | 11211 |
| ZooKeeper | TCP | 2181 |
| Milvus | TCP | 19530, 9091 |
| CouchDB | HTTP | 5984 |
| Elasticsearch | HTTP | 9200 |
| ArangoDB | HTTP | 8529 |
| ChromaDB | HTTP | 8000 |
| Pinecone | HTTP | 443 |

### Acceso remoto (6)

| Protocolo | Transporte | Puertos predeterminados |
|----------|-----------|---------------|
| SSH | TCP | 22, 2222 |
| RDP | TCP/TLS | 3389 |
| Telnet | TCP | 23 |
| VNC | TCP | 5900 |
| AnyDesk | TCP | 7070 |
| TeamViewer | TCP | 5938 |

### Web y API (2)

| Protocolo | Transporte | Notas |
|----------|-----------|-------|
| HTTP/HTTPS | TCP | HTTP/2, detección de tecnología mediante Wappalyzer |
| Kubernetes | TCP | Detección del servidor de API |

### Mensajería y colas (10)

| Protocolo | Transporte | Puertos predeterminados |
|----------|-----------|---------------|
| Kafka | TCP/TLS | 9092, 9093 |
| MQTT 3/5 | TCP/TLS | 1883, 8883 |
| AMQP | TCP/TLS | 5672, 5671 |
| ActiveMQ | TCP/TLS | 61616, 61617 |
| NATS | TCP/TLS | 4222, 6222 |
| Pulsar | TCP/TLS | 6650, 6651 |
| SMTP | TCP/TLS | 25, 465, 587 |
| POP3 | TCP/TLS | 110, 995 |
| IMAP | TCP/TLS | 143, 993 |
| SMPP | TCP | 2775, 2776 |

### Servicios de archivos y directorios (7)

| Protocolo | Transporte | Puertos predeterminados |
|----------|-----------|---------------|
| FTP | TCP | 21 |
| SMB | TCP | 445 |
| NFS | TCP/UDP | 2049 |
| Rsync | TCP | 873 |
| TFTP | UDP | 69 |
| SVN | TCP | 3690 |
| LDAP | TCP/TLS | 389, 636 |

### Servicios de red (11)

| Protocolo | Transporte | Puertos predeterminados |
|----------|-----------|---------------|
| DNS | TCP/UDP | 53 |
| DHCP | UDP | 67, 68 |
| NTP | UDP | 123 |
| SNMP | UDP | 161 |
| NetBIOS-NS | UDP | 137 |
| STUN | UDP | 3478 |
| OpenVPN | UDP | 1194 |
| IPsec | UDP | 500 |
| IPMI | UDP | 623 |
| CoAP | UDP | 5683 |
| Echo | TCP/UDP | 7 |

### Sistemas de control industrial (18)

| Protocolo | Transporte | Puertos predeterminados | Notas |
|----------|-----------|---------------|-------|
| Modbus | TCP | 502 | SCADA/PLC |
| S7comm | TCP | 102 | PLC de Siemens |
| EtherNet/IP | TCP | 44818 | Rockwell/Allen-Bradley |
| PROFINET | TCP | 34962-34964 | Industrial de Siemens |
| BACnet | UDP | 47808 | Automatización de edificios |
| OPC UA | TCP | 4840 | Interoperabilidad industrial |
| OMRON FINS | TCP/UDP | 9600 | PLC de OMRON |
| MELSEC-Q | TCP | 5006, 5007 | PLC de Mitsubishi |
| KNXnet/IP | UDP | 3671 | Automatización de edificios |
| IEC 104 | TCP | 2404 | SCADA de red eléctrica |
| DNP3 | TCP | 20000 | SCADA de red eléctrica |
| Codesys | TCP | 1200, 2455 | Entorno de ejecución de PLC |
| Fox | TCP | 1911 | Tridium Niagara |
| PC WORX | TCP | 1962 | Phoenix Contact |
| ProConOS | TCP | 20547 | Entorno de ejecución de PLC |
| HART-IP | TCP | 5094 | Automatización de procesos |
| EtherCAT | UDP | 34980 | Control de movimiento |
| Crimson v3 | TCP | 789 | HMI de Red Lion |
| PCOM | TCP | 20256 | PLC de Unitronics |
| GE SRTP | TCP | 18245 | PLC de GE |
| ATG | TCP | 10001 | Medidores de tanques |

### Telecomunicaciones y VoIP (17)

| Protocolo | Transporte | Puertos predeterminados | Notas |
|----------|-----------|---------------|-------|
| Diameter | TCP/SCTP | 3868 | AAA de LTE/5G |
| M3UA | SCTP | 2905 | SS7 sobre IP |
| M2UA | SCTP | 2904 | Adaptación de usuario MTP2 |
| M2PA | SCTP | 3565 | Adaptación de par MTP2 |
| SGsAP | SCTP | 29118 | Conmutación de circuitos de reserva |
| X2AP | SCTP | 36422 | Inter-eNodeB de LTE |
| IUA | SCTP | 9900 | ISDN sobre IP |
| SIP | TCP/UDP/TLS | 5060, 5061 | Señalización VoIP |
| MEGACO/H.248 | UDP | 2944, 2945 | Pasarela de medios |
| MGCP | UDP | 2427, 2727 | Pasarela de medios |
| H.323 | TCP | 1720 | Videoconferencia |
| SCCP/Skinny | TCP | 2000, 2443 | Teléfonos IP de Cisco |
| IAX2 | UDP | 4569 | Protocolo Asterisk |
| GTP-C | UDP | 2123 | Control GPRS |
| GTP-U | UDP | 2152 | Plano de usuario GPRS |
| GTP' | UDP | 3386 | Tarificación GPRS |
| PFCP | UDP | 8805 | Plano de usuario 5G |

### VPN y seguridad (11)

| Protocolo | Transporte | Puertos predeterminados |
|----------|-----------|---------------|
| SSH | TCP | 22, 2222 |
| OpenVPN | UDP | 1194 |
| WireGuard | UDP | 51820 |
| IPsec/IKEv2 | UDP | 500, 4500 |
| L2TP | UDP | 1701 |
| SSTP | TCP | 443 |
| GlobalProtect | HTTP | 443 |
| AnyConnect | HTTP | 443 |
| FortiGate | HTTP | 443 |
| STUN/TURN | UDP | 3478, 5349 |
| Kerberos | TCP | 88 |

### Acceso remoto y administración (10)

| Protocolo | Transporte | Puertos predeterminados |
|----------|-----------|---------------|
| RDP | TCP/TLS | 3389 |
| VNC | TCP | 5900 |
| Telnet | TCP | 23 |
| WinRM | HTTP | 5985, 5986 |
| IPMI | UDP | 623 |
| SNMP | UDP | 161 |
| Zabbix Agent | TCP | 10050 |
| NRPE | TCP/TLS | 5666 |
| Docker | TCP/TLS | 2375, 2376 |
| X11 | TCP | 6000-6063 |

### Herramientas para desarrolladores (8)

| Protocolo | Transporte | Puertos predeterminados |
|----------|-----------|---------------|
| HTTP/HTTPS | TCP | 80, 443, 8080, 8443 |
| Java RMI | TCP | 1099 |
| JDWP | TCP | 5005 |
| RTSP | TCP | 554 |
| Linux RPC | TCP | 111 |
| JetDirect | TCP | 9100 |
| CUPS/IPP | TCP | 631 |
| SonarQube | TCP | 9000 |

## Uso de la biblioteca

Importa Nerva en tus aplicaciones 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)
    }
}
```

Consulta [examples/service-fingerprinting-example.go](https://github.com/praetorian-inc/nerva/blob/main/examples/service-fingerprinting-example.go) para ver un ejemplo completo y funcional.

## Casos de uso

### Pruebas de penetración

Realiza fingerprinting rápidamente de los servicios descubiertos durante el reconocimiento para identificar posibles vectores de ataque.

### Pipelines de descubrimiento de activos

Combínalo con Naabu o Masscan para un inventario de activos a gran escala:

```sh
naabu -host 10.0.0.0/24 -silent | nerva --json | jq '.protocol'
```

### Escaneo de seguridad en CI/CD

Integrar en pipelines de despliegue para verificar que solo los servicios esperados estén expuestos.

### Reconocimiento en Bug Bounty

Enumerar rápidamente servicios en los objetivos del alcance para encontrar endpoints interesantes.

### Análisis de redes de telecomunicaciones

Identificar nodos Diameter en redes LTE/5G usando transporte SCTP (Linux):

```sh
nerva -t mme.telecom.local:3868 -S --json
```

## Arquitectura

```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 qué Nerva?

### vs Nmap

- **Valores predeterminados más inteligentes**: Nerva comprueba primero el protocolo más probable según el número de puerto
- **Salida estructurada**: Compatibilidad nativa con JSON/CSV para facilitar el análisis e integración en pipelines
- **Enfocado**: Solo fingerprinting de servicios — combínalo con escáneres de puertos dedicados para el descubrimiento

### vs zgrab2

- **Detección automática**: No es necesario especificar el protocolo de antemano
- **Uso más sencillo**: `nerva -t host:port` vs `echo host | zgrab2 http -p port`

## Solución de problemas

### Sin salida

**Causa**: El puerto está cerrado o no se ha detectado ningún servicio compatible.

**Solución**: Verifica que el puerto esté abierto:

```sh
nc -zv example.com 80
```

### Errores de tiempo de espera

**Causa**: El tiempo de espera predeterminado de 2 segundos es demasiado corto para servicios lentos.

**Solución**: Aumentar el tiempo de espera:

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

### Servicios UDP no detectados

**Causa**: El escaneo UDP está deshabilitado por defecto.

**Solución**: Habilitarlo con la opción `-U`:

```sh
nerva -t example.com:53 -U
```

Los escaneos UDP de Nerva utilizan sockets de datagramas conectados y no requieren root.

### SCTP no funciona

**Causa**: SCTP solo es compatible con Linux.

**Solución**: Ejecutar en un sistema Linux o contenedor:

```sh
docker run --rm nerva -t telecom:3868 -S
```

## Terminología

- **Servicio**: Un servicio de red que se ejecuta en un puerto (SSH, HTTP, PostgreSQL, etc.)
- **Fingerprinting**: Detectar e identificar el tipo de servicio, la versión y la configuración
- **Plugin**: Un módulo de detección específico de protocolo
- **Modo rápido**: Escanear solo el puerto predeterminado para cada protocolo (optimización 80/20)
- **Transporte**: Protocolo de capa de red (TCP, UDP o SCTP)

## Soporte

Si encuentras útil Nerva, considera darle una estrella:

[![GitHub stars](https://img.shields.io/github/stars/praetorian-inc/nerva?style=social)](https://github.com/praetorian-inc/nerva)

## Contribuir

¡Aceptamos contribuciones! Consulta [CONTRIBUTING.md](https://github.com/praetorian-inc/nerva/blob/main/CONTRIBUTING.md) para obtener las pautas.

## Licencia

Apache 2.0 — consulta [LICENSE](https://github.com/praetorian-inc/nerva/blob/main/LICENSE) para más detalles.

## Agradecimientos

Nerva es un fork mantenido de [fingerprintx](https://github.com/praetorian-inc/fingerprintx), desarrollado originalmente por la clase de pasantes de Praetorian de 2022:

* [Soham Roy](https://github.com/praetorian-sohamroy)
* [Jue Huang](https://github.com/jue-huang)
* [Henry Jung](https://github.com/henryjung64)
* [Tristan Wiesepape](https://github.com/qwetboy10)
* [Joseph Henry](https://github.com/jwhenry28)
* [Noah Tutt](https://github.com/noahtutt)
* [Nathan Sportsman](https://github.com/nsportsman)
Descargar herramienta