Nmap - para escanear redes completas

Nmap es una herramienta para la exploración de redes y la realización de auditorías de seguridad. Se trata de un software desarrollado para escanear redes completas, y aunque funciona sin problemas contra un servidor concreto. Nmap rastrea los puertos de la máquina o máquinas en cuestión y establece si un puerto está abierto, cerrado o protegido por un cortafuegos. Así, es capaz de identificar máquinas dentro de una red, determinar qué servicios utiliza dicha máquina, definir cuál es su sistema operativo e incluso devolver cierta información sobre el hardware de la máquina.

Esta herramienta es fundamental para los profesionales de la seguridad en sus procedimientos de data gathering . Puede servirnos para ver quien está conectado a nuestra red wifi, detectar su servidor, detectar los nodos de una red y mil y una cosas más. Su función más extendida, no obstante, suele ser la de comprobar qué puertos de una máquina están abiertos con la finalidad de regular su tráfico y detectar posibles vulnerabilidades asociadas a las aplicaciones trabajando a través de ellos.
 
¿Cómo funciona?
 
A grandes rasgos, de dos formas: enviando paquetes o realizando una llamada de conexión (connect system call). Una vez hecho esto, Nmap es capaz de distinguir entre seis estados diferentes para cada puerto:
  • Abierto (open): quiere decir que hay una aplicación aceptando conexiones TCP, datagramas UDP o asociaciones SCTP en el puerto.
  • Cerrado (closed): el puerto es accesible pero no existe ninguna aplicación escuchando en él.
  • Filtrado (filtered): el paquete que se ha enviado ha sido filtrado por un firewall, reglas del router, etc y nmap no puede determinar si está abierto o no.
  • Sin filtrar (unfiltered): quiere decir que el puerto es accesible pero nmap no es capaz de determinar si está abierto o cerrado. Este estado sólo lo devuelve el tipo de escaneo ACK (lo veremos más adelante).
  • open|filtered – closed|filtered: nmap no es capaz de definir si el puerto está abierto/cerrado o filtrado. Ocurre cuando los puertos abiertos no generan una respuesta.
Una sintaxis general simplificada de la orden sería:
 
user@machine:~$ nmap (opciones_escaneo) (máquina_a_escanear)
 
Aunque en función del tipo de escaneo, es posible que se requieran privilegios de superusuario.
 
Tipos de escaneo
 
Existen 13 tipos de escaneo, veamos algunos de ellos:
 
 
 
Escaneo TCP SYN: es el predeterminado y probablemente el más utilizado. También el más rápido y discreto, ya que no llega a completar una conexión TCP. Su funcionamiento consiste en enviar un paquete SYN y esperar una respuesta por parte del servidor: si se recibe un SYN/ACK el puerto está abierto (si lo recibe sin el flag ACK también lo considera así), si se recibe un RST (reset) está cerrado y si no se recibe respuesta tras varios intentos se considera filtrado.
 
Comando:
root@machine:~# nmap -sS (máquina)
Escaneo TCP connect: el predeterminado cuando no tenemos acceso root y por tanto no podemos enviar paquetes en crudo. Nmap solicita al sistema que establezca una conexión con la máquina objetivo a través del puerto elegido mediante una llamada de tipo connect. Se trata de una opción menos eficiente que TCP SYN, ya que requiere más tiempo y paquetes para obtener la misma información.
 
Comando:
user@machine:~$ nmap -sT (máquina)
 
Escaneo UDP: dado que el escaneo de puertos UDP es más lento y dificultoso que el de TCP, muchas veces se deja de lado su auditoría. Es un error, ya que tanto DNS (puerto 53), como SNMP (puertos 161/162) y DHCP (puertos 67/68) -servidor/cliente- corren sobre éste. El escaneo UDP funciona mediante el envío de un paquete UDP a los puertos seleccionados, de tal forma que si se devuelve un error “ICMP unreachable” el puerto se considera cerrado o filtrado (en función del código de error) mientras que si hay respuesta mediante un paquete UDP se considera abierto.
 
Comando:
root@machine:~# nmap -sU (máquina)
 
Escaneo SCTP INIT: este tipo de escaneo se establece como alternativa a los TCP y UDP y sería el equivalente a un escaneo TCP SYN en el ámbito SCTP. Se trata de un tipo de escaneo rápido y que distingue bien entre los estados abierto, cerrado y filtrado. Además, es muy poco intrusivo, ya que no completa la asociación STCP sino que envía un paquete INIT como si se pretendiera abrir una conexión y espera la respuesta: si recibe un INIT-ACK, el puerto está abierto, mientras que si recibe un ABORT el puerto está cerrado. En caso de no recibir respuesta tras varios intentos, el puerto se marca como filtrado.
 
Comando:
root@machine:~# nmap -sY (máquina)
 
Escaneo TCP personalizado:esta modalidad tiene como finalidad permitir que el usuario defina su análisis a la carta, especificando las TCP flags a utilizar (URG, ACK, PSH, RST, SYN, FIN) y el tipo de escaneo TCP (-sF, -sA).
 
*
Nmap, DevianHackers, 2011, http://www.debianhackers.net/nmap-escaner-de-puertos [Consulta: 26 de junio de 2013]