# nmap: port scanning y detección de servicios en un pentest

> Cómo instalar y ejecutar nmap, qué perfiles de escaneo importan, cómo leer su salida XML, y dónde encaja en el active scanning de Tandera.

`nmap` no necesita presentación y la recibe igual, porque la mayoría usa quizá el cinco por ciento de él. Descubre hosts, enumera puertos, identifica servicios y versiones, y ejecuta un motor de scripting que hace de todo, desde parseo de banners hasta comprobaciones de vulnerabilidad.

## Instalación

```bash
# Debian / Ubuntu / Kali
sudo apt install nmap

# macOS
brew install nmap

# RHEL / Fedora
sudo dnf install nmap
```

## Comandos principales

```bash
# rápido, top puertos, versiones de servicio
nmap -sV --top-ports 1000 -T4 -oA scan example.com

# rango TCP completo
nmap -p- -sV -T4 -oA fullscan 10.0.0.0/24

# SYN scan — necesita root, más silencioso y rápido
sudo nmap -sS -p- -T4 -oA syn 10.0.0.0/24

# UDP, el lento que encuentra lo que todos se pierden
sudo nmap -sU --top-ports 100 -oA udp 10.0.0.0/24

# scripts por defecto más detección de versión
nmap -sC -sV -oA default example.com

# específicos de TLS
nmap --script ssl-enum-ciphers -p 443 example.com
```

`-oA` escribe los tres formatos a la vez — normal, greppable y XML. Úsalo siempre: el XML es lo que leen los importadores, y no puedes regenerarlo después sin volver a escanear.

## Salida

El XML (`scan.xml`) es el legible por máquina:

```xml
<port protocol="tcp" portid="22">
  <state state="open" reason="syn-ack"/>
  <service name="ssh" product="OpenSSH" version="6.6.1p1" method="probe"/>
</port>
```

## Dónde encaja en Tandera

nmap se ejecuta en la fase de **active_scan** solo de `recon_web_full` — nunca en `recon_web_lite`, que tiene techo `NonIntrusive`. Se ejecuta después de que `cdncheck` haya clasificado el espacio de direcciones, así que la lista de objetivos excluye rangos de CDN y de proveedor compartido.

El CLI `tandera` también importa XML de nmap directamente:

```bash
nmap -sV -oX - example.com | tandera import --auto-dedupe
```

## Uso en un pentest

**`-T4` no siempre es seguro.** Contra objetivos industriales o embebidos frágiles causa caídas. `-T2` en cualquier cosa sobre la que te advirtieron, y acuerda el timing con el cliente por escrito.

**La detección de versión es donde están los findings.** Un puerto abierto no es un finding. `OpenSSH 6.6.1p1` sí — es una versión con problemas conocidos que puedes citar. Sin `-sV` tienes un inventario, no resultados.

**UDP es donde viven los servicios olvidados.** Es lo bastante lento como para que la mayoría de los testers lo salten, que es exactamente por qué SNMP con community string por defecto sigue siendo hallable en 2026.

**Guarda el XML.** Es tu evidencia de que el escaneo ocurrió, cuándo, y qué vio. Los clientes disputan findings; el XML con timestamp lo zanja.

---

Canonical: https://tandera.io/es/tools/nmap
This page as markdown: https://tandera.io/es/tools/nmap.md
Index for agents: https://tandera.io/llms.txt

Every page here is also available as markdown: append `.md` to the path (e.g. `/recon.md`, `/index.md` for this homepage, `/blog/<slug>.md`), or request the canonical path with `Accept: text/markdown`.
