NMAP es una herramienta para escanear puertos, servicios, versiones, sistemas operativos, …, esta herramienta Open Source permite a los auditores de Seguridad realizar un completo escaneo de puertos, detectar si un host se encuentra activo, además permite detectar servicios con sus respectivas versiones. Por otro lado esta herramienta no es solo un simple escáner de puertos, ya que permite detectar vulnerabilidades a través de sus scripts personalizados en lenguaje LUA.
Lo primero de todo hay que tener en cuenta que NMAP es un herramienta para escanear la red, por lo tanto, hay herramientas que si estás escaneando red, es posible que te metan en listas negras (porque si estás escaneando la red, es posible que no sea para nada bueno), si meten tu IP en listas negras podrías tener problemas para conectarte a diversas web’s, no poder enviar correos electrónicos en sistemas de correo como Gmail, hotmail, …
Lo ideal es lanzar escaneos sobre un laboratorio echo por nosotros, en nuestra LAN, probar sobre nuestros propios servidores, o bien probar en la url siguiente de NMAP que está indicada para ello, http://scanme.nmap.org/
Tiene 2 modos de ejecución, bien en modo gráfico (ZENMAP) o bien en modo comandos, explicaremos el modo comandos, y gracias a este entenderemos mucho mejor el modo gráfico.
NMAP tiene muchísimas funcionalidades y para poder aprender a usarlo necesitarías varias horas de estudio, nos centraremos solamente en algunos ejemplos para ver su potencia.
Nmap utiliza varios enfoques de escaneo de puertos. La siguiente tabla resume los tipos de análisis «enlatados» y los indicadores de línea de comando correspondientes:
- -sT: Escaneo de Conexión TCP ()
- -sS: Escaneo SYN
- -sA: ACK Scan
- -sW: Ventana
- -sN: escaneo nulo
- -sF: escaneo FIN
- -sX: Escaneo de Navidad
- -sU: Escaneo UDP
- -sM: Escaneo de Maimón
- -sO: Escaneo de protocolo IP
- -sI: host: escaneo inactivo del puerto
- -b: Escaneo de rebote de FTP
Ejercicios:
Ejercicio 1. Escaneo básico sobre equipo o red.
Equipo: # nmap 172.16.0.132
Red: # nmap 172.16.0.0/24
Ejercicio 2. Filtrado de puertos.
Por defecto, Nmap escanea los 1000 puertos más usados: 21 (ftp), 22 (ssh), 80 (http), 53 (DNS), …
Se puede seleccionar puertos y rangos de los mismos.
➢ Puertos concretos # nmap -p 21,22,80 172.16.0.132
➢ Rango de puertos # nmap -p 20-100 172.16.0.132
➢ Escaneos UDP # nmap -p 53,123 -sU 172.16.0.132
Ejercicio 3. Deshabilitar la resolución inversa de nombres. Con esto conseguimos una respuesta más rápida del escaneo.
# nmap -n 172.16.0.132
Ejercicio 4. Modo Debug (-v/-vv…), vemos lo que está haciendo internamente el programa.
#nmap -vv 172.16.0.132
Ejercicio 5. Descubrimiento de servicios.
Conocer qué servicio escucha detrás de un puerto.
➢ Versión del servicio usando los banners de respuesta
#nmap -sV 172.16.0.132
➢ Intensidad del escaneo
#nmap -version-intensity 9 172.16.0.132
Mayor intensidad → más pruebas → pero más visibles
➢ Sistemas Operativos
#nmap -O 172.16.0.132
Ejercicio 6. Escaneo TCP SYN (-sS) al puerto 443.
El método más común de escaneo TCP, es el escaneo SYN. Esto implica crear una conexión parcial al host en el puerto de destino por medio de un paquete SYN y luego evaluando la respuesta del host. Si el paquete de solicitud no es filtrado o bloqueado por un firewall, entonces el host responderá enviando un paquete SYN/ACK si el puerto está abierto, de lo contrario enviará un paquete RST.
#nmap -sS -p 443 172.16.0.1
Con la línea de comando anterior, solo se escaneará el puerto 443. Para escanear todos los puertos de la máquina, use el indicador -p :
#nmap -sS 192.168.1.100 -p1-65535
Ejercicio 7. Para escanear una gran cantidad de máquinas, puedes usar rangos y comodines.
#nmap -sA 192.168. *. 1-10,250-254
Lo anterior escaneará todo lo que comience con 192.168 y termine con 1–10 o 250–254. También se puede utilizar la notación CIDR menos flexible. A continuación, se muestra un ejemplo sobre cómo realizar un escaneo UDP en una subred de clase C:
#nmap -sU 192.168.0.0/24
Consejos para realizar Pentesting
Para realizar un Pentesting a una entidad en particular, es importante dejar la menor cantidad de rastros, por esta razón a continuación se explicará, como realizar un Pentesting adecuado con la herramienta nmap.
Lo primero que es importante mencionar es que nmap posee un rango de escaneo, el cual está definido dentro de los números del 0 al 5. ¿Para qué sirve esto?, principalmente cuando se requiere hacer un Pentesting, la forma más óptima de realizarlo es siendo sigiloso, de tal manera que cada uno de estos números representan la agresividad con la que se envían los paquetes hacía el(los) host(s). Un ejemplo de esto es lo siguiente.
Estructura:
nmap -T[0-5] target

Al escanear un host con la opción -T0 se tiene lo siguiente

El escaneo no tiene sentido ya que tardaría demasiado tiempo en ejecutarse.
Ahora se realizó un escaneo con el nivel de agresividad más alto.

El escaneo finalizó en 2.31 segundos, el problema de este escaneo es que deja muchos logs en el servidor auditado, por esta razón no se recomienda utilizar esta opción, lo más óptimo es realizar un escaneo entre los rangos T2 y T3.
Otra medida de realizar un escaneo sigiloso, es realizar un escaneo sin ping. Por defecto nmap realiza un ping al host antes de realizar un escaneo, en algunos casos se presentan dos escenarios, el primero es que nmap al ejecutar un escaneo por ping puede ser detectado por un IPS y esto es un problema, ya que al momento de realizar un escaneo se requiere la mayor cautela posible, el segundo caso es que en algunos casos al detectar que el escaneo por ping no fue exitoso hacia el host, nmap automáticamente envía un mensaje diciendo que el host no se encuentra habilitado, y no siempre es así. Por esta razón lo ideal es siempre realizar un escaneo que no verifique ping.


Otra forma de realizar un escaneo sigiloso es agregar la opción –f, esta opción permite fragmentar los paquetes enviados, de tal manera que esto permitirá regularizar el tráfico enviado hacía el host.


Anexo a esto es importante conocer los servicios habilitados en dicho host y por supuesto sus respectivas versiones, para esto se encuentra disponible la opción –sV, la cual permite enumerar las versiones de los servicios que se encuentran corriendo en la máquina objetivo.


Estos son solo algunos de los métodos de escaneo sigiloso con nmap, además es posible obtener información sensible sobre los servicios que están corriendo en el host objetivo y de esta manera poder buscar si existen exploits asociados a cada uno de estos servicios.
Más alternativas NMAP
ZMAP (https://zmap.io)
Escáner Open-Source orientado a redes grandes. Teóricamente podría escanear internet en una hora aproximadamente pero solo está orientado a IPv4.
MASSCAN (http://tools.kali.org/information-gathering/masscan)
Teóricamente puede escanear internet en 6 minutos. Funciona parecido a otras herramientas como scanrand, unicornscan o zmap. Además de su velocidad es más flexible permitiendo rangos de direcciones IP y puertos.
SHODAN
Escáner pasivo online. Es un tercero quien escanea la red, y nosotros consultamos sobre su motor de búsqueda.
Registro y uso gratuito, pero si pagamos por este servicio nos va a devolver más resultados.
Subdividido por categorías, con buen conjunto de filtros. Escaneo de IP’s, puertos y servicios.
Infografía Nmap
Nmap Cheat Sheet – Infographic via SANS Institute
Si quieres aprender más acerca de NMAP lee el siguiente artículo
https://iphelix.medium.com/nmap-scanning-tips-and-tricks-5b4a3d2151b3
Una idea sobre “Ejercicios resueltos nmap”