¿Qué es Nmap?
Nmap es una abreviatura de Network Mapper, que consiste en una herramienta de código abierto y gratuita que sirve para la detección de puertos y exploración de vulnerabilidades. Apareció en septiembre de 1997, en un artículo de la revista Phrack Magazine que incluía el código fuente. Aunque fue desarrollada en un principio para Linux hoy en día es una herramienta multiplataforma. Nmap es ampliamente utilizada debido a su usabilidad, flexibilidad y versatilidad. Existe una version con interfaz gráfica llamada ZenMap. Mediante esta herramienta se puede identificar los dispositivos ejecutando en un sistema, descubrir hosts disponibles, así como los servicios que estos ofrecen, también permite detectar puertos abiertos y encontrar riesgos de seguridad.
Utilidades
Algunas de las principales utilidades de nmap son las siguientes:
-
Escaneo de puertos: nmap permite reconocer los puertos que hay en un sistema.
-
Detección del Sistema Operativo: puede detectar los sistemas operativos que se ejecutan en los dispositivos de red, proporcionando incluso el nombre del proveedor, la version de software, SO subyacente e incluso una estimación del tiempo de actividad.
-
Descubrimiento de servicios: Además de puertos y SOs, se puede detectar servicios como servidores de correo, web, aplicaciones, versiones de software, etc.
-
Mapeo de red: permite detectar enrutadores, servidores, conmutadores e incluso como se interconectan. Cuando nmap envía paquetes, estos devuelven una gran cantidad de datos útiles para identificar los diferentes atributos de la red, permitiendo realizar un mapeo de la red y realizando un inventario tanto de hardware como de software.
Instalación de nmap
-
En Windows se puede instalar descargándolo del siguiente enlace:
https://nmap.org/download.html
-
En Linux bastará con introducir la siguiente línea en la terminal:
¿Cómo funciona?
En la práctica es una herramienta de escaneo de puertos ya que recopila información enviando paquetes sin procesar a los puertos del objetivo u objetivos. Posteriormente escucha las respuestas e identifica si los puertos están cerrados, abiertos o filtrados.
Nmap presenta varios estados en los puertos cuando realizamos un escaneo de puertos:
-
Open: la aplicación acepta activamente conexiones TCP o UDP.
-
Closed: un puerto que está cerrado es accesible porque responde a Nmap, sin embargo, no hay ninguna aplicación funcionando en dicho puerto. Es útil para descubrir que un host está levantado, o como parte de la detección de un sistema operativo
-
Filtered: en este estado Nmap no puede determinar si el puerto está abierto, porque hay un firewall filtrando los paquetes de Nmap en dicho puerto. Estos puertos filtrados son los que aparecerán cuando tengamos un firewall activado.
-
Open| Filtered: Nmap no sabe si el puerto está abierto o filtrado. Esto ocurre porque el puerto abierto no envía ninguna respuesta, y dicha falta de respuesta podría ser por el firewall.
-
Closed | Filtered: en este estado no se sabe si el puerto está cerrado o filtrado.
Existen varias técnicas de escaneo de puertos, para entenderlas se debe explicar cómo funciona el protocolo TCP. El protocolo TCP trabaja en la capa de trasporte (Capa 4) del modelo de referencia OSI y es un protocolo orientado a conexión, es decir que antes de comenzar a trasmitir información entre dos hosts, estos primero deben de sincronizarse y realizar de forma completa lo que se conoce como Three Way Handshake.
Este establecimiento de conexión TCP funciona de la siguiente manera:
-
El cliente envía un paquete SYN a la máquina objetivo o servidor especificando la dirección IP, el puerto y un número de reconocimiento. El paquete SYNC tiene un número de secuencia (SEQ) asociado.
-
En el segundo paso, el servidor responde con un paquete SYNC ACK, este paquete ACK es el reconocimiento que el servidor hace del paquete que recibió de parte del cliente.
-
El cliente reconoce la recepción del paquete del servidor y envía un ACK al servidor confirmando que ha recibido el paquete anterior.
Una vez que el Three Way Handshake ha sido completado, se establece una comunicación bidireccional sobre la conexión.
Cheat Sheet
Selección del target
Flag |
Ejemplo |
Descripción |
|
nmap 192.168.0.1 |
Escaneo a una sola IP |
|
nmap 192.168.0.1 192.168.2.1 |
Escaneo IPs específicas |
|
192.168.0.1-200 |
Escaneo a un rango de IPs |
-iL |
nmap -iL IPs.txt |
Escaneo desde un fichero |
Técnicas de escaneo
Flag |
Ejemplo |
Descripción |
-sT |
nmap -sT 192.168.0.1 |
Escaneo de puertos TCP connect |
-sS |
nmap -sS 192.168.0.1 |
Escaneo de puertos TCP SYN (por defecto) |
-sF |
nmap -sA 192.168.0.1 |
Escaneo de puertos TCP FIN |
-sx |
nmap -sA 192.168.0.1 |
Escaneo de puertos TCP Xmas Tree |
-sU |
nmap -sU 192.168.0.1 |
Escaneo de puertos UDP port scan |
-sA |
nmap -sA 192.168.0.1 |
Escaneo de puertos TCP ACK |
-
TCP Connect Scan (-sT): Es un tipo de exploración de puertos ruidosa es decir que es fácilmente identificada por los sistemas de filtrados de paquetes Firewall, o por los sistemas detectores de intrusos (IDS) pero por otro lado es confiable en las respuestas de los estados de los puertos. El funcionamiento consiste en mandar un paquete SYN al objetivo, si el puerto está abierto este responderá con un SYN/ACK y por último nmap enviaría un paquete ACK y posteriormente un paquete RST.
Si el puerto está cerrado el objetivo responderá con un RST/ACK y se acabará la comunicación.
-
TCP SYN Scan (-sS): Es una técnica donde solo se envían paquetes del tipo SYN. Al recibir como respuesta un paquete RST/ACK significa que no existe ningún servicio que escuche por este puerto. Por el contrario, si se recibe un paquete SYN/ACK, podemos afirmar la existencia de un servicio asociado a dicho puerto TCP y en este caso se enviará un paquete RST/ACK para no establecer la conexión y no ser registrados por el sistema objetivo. Es menos ruidosa que la anterior ya que no se termina el Three Way Handshake.
-
TCP FIN Scan (-sF): Es una técnica de exploración de puertos que consiste en enviar un paquete FIN a un puerto determinado, con lo cual deberíamos recibir un paquete de reset (RST) si dicho puerto está cerrado. Es una técnica muy silenciosa así que puede no ser registrada por IDSs o Firewalls.
Si no responde es posible que el puerto esté abierto.
-
TCP Xmas Tree Scan (-sX): Es una técnica de exploración de puertos parecida al FIN Scan, ya que también se obtiene como resultado un paquete de Reset (RST) si el puerto está cerrado. Para el caso de este tipo de exploración de puertos, se envían paquetes o solicitudes del tipo FIN, URG y PUSH al host que se está explorando.
Si no responde es posible que el puerto esté abierto.
-
TCP Null scan (-sN): Este tipo de exploración pone a cero todos los indicadores de la cabecera TCP, por lo tanto, la exploración debería recibir como resultado un paquete de reset (RST) en los puertos no activos.
Si no responde es posible que el puerto esté abierto.
-
TCP ACK (-sA): Envía ACK vacío. Sólo determina si los puertos están o no filtrados. El escaneo TCP ACK (-sA) se usa a menudo para determinar la disponibilidad de puertos en un firewall. Si la respuesta a un ACK devuelve un RST, significa que el puerto no está filtrado.
Descubrimiento de equipos
Flag |
Ejemplo |
Descripción |
-sL |
nmap -sL 192.168.0.1 |
Solo lista equipos, sin enviar paquetes al objetivo |
-sn |
nmap -sn 192.168.0.1/24 |
Deshabilita el escaneo de puertos. Solo escanea equipos |
-Pn |
nmap -Pn 192.168.0.1-5 |
Implica un -PE + -PA 80 + -PS 443 |
-PS |
nmap -PS 192.168.0.1-5 -PS22-25,80 |
Envía un SYN, por defecto al puerto 80. Acepta lista de puertos. |
-PA |
nmap -PA 192.168.0.1-5 -PA22-25,80 |
Envía un ACK vacío, por defecto al puerto 80. Acepta lista de puertos. Traspasa cortafuegos sin estado. |
-PU |
nmap -PU 192.168.0.1-5 -PU53 |
Envía un UDP vacío al puerto 31338. Acepta lista de puertos. Traspasa cortafuegos que sólo filtran TCP. |
-PR |
nmap -PR 192.168.0.1/24 -PR |
Sólo para objetivos de nuestra red local (activopor defecto). Envía un ARP Request. |
-n |
nmap -n 192.168.0.1 |
No realiza nunca resolución inversa de DNS |
Especificación del puerto
Flag |
Ejemplo |
Descripción |
-p |
nmap -p 22 192.168.0.1 |
Escaneo de puerto concreto |
-p |
nmap -p 22-100 192.168.0.1 |
Rango de puertos |
-p |
nmap -p U:53,T:21-25,80 192.168.0.1 |
Escanea multiples puertos TCP y UDP |
-p- |
nmap -p- 192.168.0.1 |
Escanea todos los puertos |
-p |
nmap -p http,https 192.168.0.1 |
Escanea desde el nombre del servicio |
-F |
nmap -F 192.168.0.1 |
Escanea rápidamente 100 puertos |
–top-ports |
nmap –top-ports 1000 192.168.0.1 |
Escanea los top X puertos |
Detección de versión
Flag |
Ejemplo |
Descripción |
-sV |
nmap -sV 192.168.0.1 |
Interroga al conjunto de puertos abiertos detectados para tratar de descubrir servicios y versiones |
-sV –version-intensity 5 |
nmap -sV –version-intensity 192.168.0.1 |
Intensidad con que se realizan pruebas para comprobar servicios y versiones disponibles. Valores de 0 a 9. |
-sV –version-light |
nmap -sV –version-light 192.168.0.1 |
–version-intensity 2 |
-sV –version-all |
nmap -sV –version-all 192.168.0.1 |
–version-intensity 9 |
Detección del sistema operativo
Flag |
Ejemplo |
Descripción |
-A |
nmap -sA 192.168.0.1 |
Habilita detección de OS, detección de versión detection, script scanning y traceroute: -O -sV -sC –traceroute |
-O |
nmap - 192.168.0.1 |
Envía paquetes TCP y UDP al objetivo. Analiza las respuestas para conocer qué tipo de implementación de la pila TCP/IP tiene el objetivo. |
Flag |
Ejemplo |
Descripción |
–max-retries tries |
nmap –max-retries 3 192.168.0.1 |
Especifica el número de retransmisiones para cada sonda, en caso de no recibir respuesta.Por defecto 10 reintentos. |
–min-rate number |
nmap –min-rate 100 192.168.0.1 |
Controla la tasa máxima de envío de sondas. |
–max-rate number |
nmap –max-rate 100 192.168.0.1 |
Controla la tasa mínima de envío de sondas. |
-T0 |
nmap -T0 192.168.0.1 |
Paranoid (0) evasión IDS |
-T1 |
nmap -T1 192.168.0.1 |
Sneaky (1) evasión IDS |
-T2 |
nmap -T2 192.168.0.1 |
Polite (2) ralentiza el escaneo para usar menos ancho de banda y usar menos recursos de la máquina de destino |
-T3 |
nmap -T3 192.168.0.1 |
Normal (3) que es la velocidad por defecto |
-T4 |
nmap -T4 192.168.0.1 |
Aggressive (4) escaneos de velocidad; suponga que está en una red razonablemente rápida y confiable |
-T5 |
nmap -T5 192.168.0.1 |
Insane (5) escaneo de velocidad; asume que estás en una red extraordinariamente rápida |
Timings
Flag |
Ejemplo |
Descripción |
–host-timeout time |
nmap –host-timeout 2h 192.168.0.1 |
Especifica el tiempo máximo que ocupa Nmap en el análisis de un equipo completo |
NSE Scripts
Flag |
Ejemplo |
Descripción |
-sC |
nmap -sC 192.168.0.1 |
Scripts NSE por defecto |
–script default |
nmap –script default 192.168.0.1 |
Scripts NSE por defecto |
–script |
nmap –script=banner 192.168.0.1 |
Escanea con un único script |
–script |
nmap –script=http,banner 192.168.0.1 |
Escanea con varios scritps |
–script |
nmap –script “not intrusive” 192.168.0.1 |
Elimina scrpts intrusivos |
Output
Flag |
Ejemplo |
Descripción |
-oN |
nmap -oN normal.file 192.168.0.1 |
Registra en un fichero una salida muy similar a la mostrada por pantalla en modo interactivo |
-oX |
nmap -oX xml.file 192.168.0.1 |
Crea un fichero XML con los detalles del análisis |
-oG |
nmap -oG grep.file 192.168.0.1 |
Salida con formato especial que es fácilmente tratable con herramientas de consola como grep |
-oA |
nmap -oA resultados 192.168.0.1 |
Crea un fichero para los tipos de salida normal, XML y “grepable”, definidos anteriormente |
-v |
nmap -v 192.168.0.1 |
Aumenta la cantidad de información sobre el progreso del análisis que muestra Nmap por pantalla |
-d |
nmap -d 192.168.0.1 |
Añade información de depuración a la salida que Nmap muestra por pantalla |
–reason |
nmap –reason 192.168.0.1 |
Indica la razón por la que se ha concluido el estado de un puerto o equipo |
–open |
nmap –open 192.168.0.1 |
Muestra en la salida los puertos identificados como (posiblemente) abiertos, obviando aquellos con otros estados (filtrados o cerrados) |
–packet-trace |
nmap -T4 –packet-trace 192.168.0.1 |
Hace que Nmap imprima información sobre cada paquete que envía o recibe |
–iflist |
nmap –iflist 192.168.0.1 |
Muestra únicamente el listado de interfaces y de rutas detectado por Nmap |
–resume |
nmap –resume resultados.file 192.168.0.1 |
Resumen de escaneo |
Otro
Flag |
Ejemplo |
Descripción |
-6 |
nmap -6 192.168.0.1 |
Habilita el análisis en redes IPv6 |
-h |
nmap -h 192.168.0.1 |
Imprime la página de ayuda resumida |