Playbook operativo de Nmap
Nmap puede ejecutar descubrimiento, escaneo de puertos, identificación, scripts y trazado desde una sola línea. Esa comodidad también permite mezclar preguntas hasta que un fallo deja de ser diagnosticable. Este playbook conserva las fases por separado para que cada ejecución cambie el modelo del objetivo de una forma que pueda explicarse.
El punto de partida son objetivos aprobados, una estación que superó readiness y un directorio de actividad. El resultado final no es «haber pasado Nmap», sino disponer de cobertura declarada, servicios asignados a sus workflows y silencios que todavía conservan su incertidumbre.
1. Congelar el punto de partida
Sección titulada «1. Congelar el punto de partida»Registra antes de escanear:
- versión de Nmap y paquete
- usuario y privilegios
- interfaz, dirección y ruta
- DNS
- hora y zona
- objetivo y exclusiones
- rate máximo acordado
Valida expansión con -sL -n. Si el listado no coincide con el scope, corrige la entrada antes de producir tráfico. Este control evita que un error de notación se propague a todos los artefactos posteriores.
2. Descubrir con señales elegidas
Sección titulada «2. Descubrir con señales elegidas»Ejecuta -sn con --reason y output XML. Empieza con el comportamiento predeterminado y amplía ICMP, SYN, ACK o UDP solo para cubrir señales plausibles. Mantén una lista de:
- activos confirmados
- direcciones sin señal
- direcciones excluidas
- respuestas de infraestructura intermedia
Si un host concreto debe existir y no responde, prueba -Pn sobre ese host. Si aparecen puertos, el descubrimiento era la capa bloqueada. Si tampoco aparecen y la captura no muestra respuesta, la conclusión sigue siendo «sin señal desde esta posición».
3. Obtener una vista TCP inicial
Sección titulada «3. Obtener una vista TCP inicial»Sobre hosts confirmados, usa una primera pasada para abrir líneas de enumeración sin esperar a la cobertura completa. -F consulta los 100 puertos más frecuentes de cada protocolo seleccionado. --top-ports N permite elegir el tamaño del conjunto. El valor se obtiene de las frecuencias de nmap-services, no de una lista universal inmutable.
sudo nmap -sS -n -Pn -T4 -F --reason \ --stats-every 15s -oA scans/tcp-fast TARGET_IPUna vista inicial algo más amplia puede usar los 1.000 puertos frecuentes, que también es el conjunto predeterminado de un escaneo de puertos:
sudo nmap -sS -n -Pn -T4 --top-ports 1000 \ --reason --stats-every 30s -oA scans/tcp-top-1000 TARGET_IPMientras se enumeran los puertos encontrados, ejecuta la cobertura de 1-65535 mediante -p-. Empieza con el ajuste dinámico de Nmap o un techo conocido. Si la ventana exige una pasada de triage con --min-rate RATE y pocas retransmisiones, etiqueta ese resultado como parcial y conserva otra tarea para repetir silencios y estados dudosos. El perfil rápido adelanta decisiones. La pasada conservadora protege la cobertura.
sudo nmap -sS -n -Pn -T4 -p- --max-rate RATE \ --reason --stats-every 30s -oA scans/tcp-all TARGET_IPCompara las listas. Un puerto solo visible en una ejecución se repite de forma aislada con --reason y --packet-trace. Un puerto omitido por -F o --top-ports no es un falso negativo de Nmap: nunca formó parte de esa pasada.
4. Cubrir UDP por probabilidad
Sección titulada «4. Cubrir UDP por probabilidad»Prioriza UDP por función del activo, exposición y protocolos esperados. Un resultado open|filtered abre una tarea de validación, no un servicio inventariado. Aplica -sV o un cliente válido al puerto concreto. Si el servicio esperado usa una petición autenticada, conserva la diferencia entre «no responde sin credenciales» y «no está presente».
5. Identificar servicios
Sección titulada «5. Identificar servicios»Ejecuta -sV solo sobre puertos candidatos. Conserva intensidad y base de datos. Contrasta:
- TLS y certificados
- respuesta manual del protocolo
- nombres y virtual hosting
- comportamiento autenticado y no autenticado
- diferencias por SNI, EHLO, Host o negociación
Asigna cada servicio a su página canónica.
6. Estimar el sistema operativo
Sección titulada «6. Estimar el sistema operativo»Usa -O --osscan-limit cuando haya puertos abiertos y cerrados suficientes. Registra el rango de coincidencias y señales contradictorias. No permitas que una estimación de OS anule evidencia de aplicación más fuerte.
7. Seleccionar NSE por pregunta
Sección titulada «7. Seleccionar NSE por pregunta»Consulta --script-help SCRIPT_NAME y el código distribuido. Registra categorías, regla, argumentos, comandos, terceros, intentos y cambios. Ejecuta scripts concretos. Valida manualmente las conclusiones relevantes.
Los mapas de servicio contienen la selección aplicada. No uses --script vuln, --script brute o un glob completo como primera interacción.
8. Comparar y explicar
Sección titulada «8. Comparar y explicar»Usa XML y ndiff para:
- vista rápida frente a cobertura completa
- antes y después de una regla
- origen externo frente a pivot
- no autenticado frente a autenticado
- medición de referencia frente al control temporal modificado
Una diferencia crea una hipótesis. Repite una sola variable para acercarte a la causa. Si el control ya no reproduce la observación original, registra el cambio temporal antes de seguir ajustando flags.
9. Diagnosticar sin reiniciar a ciegas
Sección titulada «9. Diagnosticar sin reiniciar a ciegas»Cuando una ejecución parece detenida, pulsa una tecla que no tenga función especial para obtener estadísticas. v aumenta la verbosidad, d la depuración y p activa el packet trace en tiempo de ejecución. Antes de repetir el escaneo completo:
- aísla un host y un puerto
- añade
--reason - observa paquetes con
--packet-trace - compara la misma interacción con un cliente del protocolo
- cambia una sola variable: origen, timeout, transporte, SNI, hostname o credencial
--traceroute ayuda a documentar la ruta que Nmap pudo observar hasta un host alcanzable. La tabla de rutas local explica el primer salto y la interfaz elegida. Los huecos del trazado permanecen como saltos que no respondieron, no como dispositivos inexistentes.
10. Abrir una vista por posición
Sección titulada «10. Abrir una vista por posición»Cada VPN, foothold, pivot o egress define una nueva posición porque cambia la ruta, la política aplicable y, a veces, las técnicas disponibles:
position-external/position-vpn/position-host-001/position-egress-b/No sobrescribas resultados. La misma dirección puede exponer servicios y rutas distintas. Si una herramienta a través del pivot solo admite conexiones TCP, registra esa limitación antes de comparar sus resultados con raw packets enviados desde otra posición.
11. Cerrar
Sección titulada «11. Cerrar»Antes de finalizar:
- detén escaneos y procesos
- conserva XML, comandos, stderr y versiones
- registra limitaciones y timeouts
- actualiza activos, hipótesis y cobertura
- sanea copias para reporting
- retira archivos temporales y listas con datos sensibles
La checklist conserva el estado de cobertura. La cheatsheet recupera sintaxis ya explicada. Ninguna de las dos reemplaza las razones, capturas y decisiones del registro de actividad.