# Nmap

> `-sS` = TCP SYN · `-sU` = UDP · `-sV` = versión. Parte de Enumeración.

## Descubrimiento de hosts
```bash
sudo nmap -sn 192.168.X.0/24            # ping sweep: quién está vivo
sudo nmap -sn -PR 192.168.X.0/24        # ARP (LAN, el más fiable)
sudo nmap -sn -PS21,22,25,80,445 IP/24  # TCP discovery si ICMP filtrado
```

## Escaneo de puertos
```bash
sudo nmap -sS 192.168.X.0/24 -oG full.txt      # SYN top-1000, greppable
sudo nmap -p- -Pn --min-rate 5000 -n --open IP  # TODOS los 65535, solo abiertos → Puertos olvidados
sudo nmap -sU --top-ports 50 -T4 IP            # UDP (SNMP/TFTP/NTP)
sudo nmap -sCV -p 22,80,445 IP                  # versión + scripts default → Nmap NSE
sudo nmap -p80 --script vuln IP                 # NSE de vulnerabilidades
```

## El combo de dos pasos (patrón real)
```bash
nmap -p- -Pn --min-rate 5000 -n --open IP   # 1) rápido: ¿qué puertos abren?
nmap -sCV -p 22,80,445 IP                    # 2) dirigido: versión+scripts sobre esos
```
`-sCV` = `-sC` (scripts default) + `-sV` (versión). Luego `searchsploit` por versión → searchsploit.

## Salida
- `-oN` normal (legible, los NSE salen aquí) · `-oG` greppable (1 línea/host, ideal `grep`) · `-oA` los 3.
- Greppeo de resultados → Bucles bash sobre IPs.

## Trampas
- El top-1000 **ya** incluye 80/443/22/445. Si `grep` no saca nada y el scan cubría el puerto → **la máquina no está viva**, no es el scan.
- `filtered ≠ open` (firewall/sin respuesta).
- `-Pn` en un /24 = ruido (256 hosts "up" falsos). `-Pn` es para **1 host concreto**.
- Confusión clásica: **SNMP = UDP/161 (`-sU`)**, **SMTP = TCP/25 (`-sS`)**.

Relacionado: Nmap NSE · searchsploit · Trampas de enumeración · SMB · OSCP MOC
