Ciberseguridad
Nmap
Herramientas
Antes de interpretar un resultado de Nmap, conviene recordar qué se pidió escanear y desde dónde. Un puerto filtrado no cuenta la misma historia que uno cerrado; el mapa depende del punto de observación.
Herramienta gratuita de código abierto usado para el descubrimiento de redes y auditoría de seguridad.
Nmap puede realizar las siguientes fases según las opciones, privilegios y tipo de objetivo; no todas se ejecutan en cada invocación:
- Enumerar los objetivos
- Descubrir hosts vivos
- Hacer una búsqueda DNS reversa
- Escanear puertos
- Detectar versiones
- Detectar sistema operativo
- Traceroute
- Ejecutar scripts (si es que los hay)
- Escribir los resultados
La sintaxis básica general es:
nmap [tipo de escaneo] [opciones] {objetivos}
Uso común:
Ping de descubrimiento más básico, no siempre funciona porque los dispositivos pueden no responder
nmap -sn direcciónip
Comprobación de puertos abiertos:
nmap -p 22,80,443 direccion_target
En el escaneo de puertos predeterminado examina los 1000 puertos más frecuentes del protocolo seleccionado; -sn omite esa fase. Generalmente sirve agregar 21 ftp, 22 ssh, 80 http, 443 https, 445 windows samba.
Enumeración básica
Lista de hosts que se van a escanear (parámetro -sL) sin hacer reverse dns (parámetro -n).
Nmap host discovery usando ARP
Cuando no se provee de opciones para descubrir hosts, nmap realiza el siguiente procedimiento por defecto:
- Cuando un usuario privilegiado (sudo/root) intenta escanear en una red local (ethernet), Nmap usa normalmente ARP para IPv4 o Neighbor Discovery para IPv6, salvo opciones que cambien ese comportamiento.
- Cuando un usuario privilegiado intenta escanear objetivos fuera de la red local, Nmap usa ICMP echo requests, TCP ACK en puerto 80, TCP SYN al puerto 443 e ICMP timestamp request.
- Cuando un usuario no privilegiado intenta escanear objetivos fuera de la red local, en Unix, Nmap usa intentos
connect()a TCP 80 y 443; una conexión aceptada o rechazada permite reconocer actividad del host
Opciones y parámetros
Algunos ejemplos:
-Pn omite descubrimiento y trata los objetivos como activos para las fases solicitadas. No demuestra que respondan.
--open muestra puertos abiertos o posiblemente abiertos, según el estado resultante
--exclude excluye objetivos; --exclude-ports excluye puertos
-iL archivo pasarle un archivo de lectura, generalmente para incluir una lista de ip
-sV determina el tipo de servicio y versión
-T0 a -T5 selecciona plantillas de temporización. Menor velocidad no garantiza seguridad ni precisión; los valores agresivos también pueden perder resultados según la red.
--min-rate imponer una velocidad mínima de x paquetes por segundo.
-v verboso, va imprimiendo
-O (o de oso), determinar que SO corre el equipo pero suele dar falsos positivos
-sS solicita un escaneo TCP SYN, sujeto a privilegios y entorno.
-sC usa los scripts de la categoría default.
--script vuln selecciona la categoría vuln; revisar qué scripts se ejecutarán y su impacto.
-sL OBJETIVO Obtener una lista de hosts que nmap va a escanear (sin escanearlos). Sin embargo, va a realizar un reverse dns resolution para obtener los nombres. Si no queremos dicho escaneo, agregar
-n
-sn Omitir el escaneo de puertos de sistemas vivos
-PR ARP Scan
-PE ICMP echo request
-PP ICMP Timestamp Scan
-PM ICMP Address Mask Scan
sudo nmap -PS22,80,443 -sn MACHINE_IP/30 TCP SYN Ping Scan
sudo nmap -PA22,80,443 -sn MACHINE_IP/30 TCP ACK Ping Scan
sudo nmap -PU53,161,162 -sn MACHINE_IP/30 UDP Ping Scan
-R reverse-DNS lookup para todos los hosts
#to-do
Véase también
- 06 Solución de problemas — Diagnóstico de conectividad para interpretar descubrimiento de hosts.
Referencia de sintaxis: Nmap: selección de puertos. -p requiere una lista o rango; el objetivo va por separado.
Fuentes: descubrimiento, temporización y NSE. La lista de fases es un resumen: NSE puede actuar también antes o después de otras fases.
+----------------------------------------+
| Floure & |
| Tachibana's guild |
| [Hikari · Nozomi · Rin] |
| SEAL: sha256/12: 1841392472be |
| STATUS: LITURGY_IN_PROGRESS |
+----------------------------------------+