Hoy vamos a ver ejemplos prácticos de NMAP, una potente herramienta utilizada en el ámbito de las redes y sobre todo para auditorias de seguridad, esta es una compilación de técnicas para todos los niveles que seguramente te servirán, y si querés dejar alguna será bienvenida a la lista.
La idea es hacer un manual con ejemplos típicos y prácticos a la hora de usar esta potente navaja Suiza en materia de seguridad informática, te recomiendo que te suscribas al blog porque voy a seguir publicando de este tema.
1- Versión de nmap
nmap --version o nmap -v
2- Escanear objetivo, con una salida detallada de cada puerto que encuentre, con parámetro -vv
nmap -vv IP
3- Puertos
Especificar un número determinado de puertos, usando -p puerto_inicio-puerto_fin
nmap -vv -p 1-120 IP
Mostrar solo puertos abiertos
nmap --open IP
Escanear los 20 puertos más comunes del objetivo, podemos variar el 20.
nmap --top-ports 20 IP
Detectar las versiones de los servicios remotos
nmap -sV IP
4- Detectando sistema operativo
Vamos a usar el parámetro -O, pero ya es momento de no usar PING en el escaneo porque hace más ruido en el escaneo. Por lo que agregamos -Pn y sumamos un -v para el detalle
nmap -v -Pn -O IP
5- Mostrat paquetes enviados y recibidos
nmap --packet-trace IP
6- Saber el gateway o puerta de enlace desde tu Linux, útil para saber como hacer muchas cosas.
route /sbin/route route -n
7- Escanear un rango específico de IP’salida
nmap -vv 192.168.23.100-250
8- Escanear multiples IP’s
nmap 192.168.23.5 192.168.23.6 192.168.23.7 o nmap 192.168.23.5,6,7
9- Escanear una red completa
Vamos a usar el argumento -sn para ahorrar tiempo, lo que hace es solo analizar un puerto por host.
nmap -sn 192.168.23.0/24
O para ver solo las IP’s encontradas podemos filtrar con grep.
nmap -sn 192.168.23.1/24 | grep "Nmap scan report for"
10- Resolver nombres
-sL le dice a nmap que haga una consulta DNS simple para la ip especificada. Esto le permite encontrar nombres de host para todas las direcciones IP en una subred sin tener que enviar un paquete a los hosts individuales. Esto es muy útil para detectar la presencia de Active Directory.
nmap -sL IP
Para no resolver los nombres usamos el parámetro -n
nmap -p 80 -n IP
11- Escaneo TCP Sync y UDP
La exploración TCP SYN y UDP tardará un tiempo en generarse, pero es bastante discreta y sigilosa. Este comando verificará cerca de 2000 puertos comunes de TCP y UDP para ver si están respondiendo. Cuando usamos la opción -Pn, esto le dice a nmap que omita el escaneo de ping y asuma que el host está activo. Esto puede ser útil cuando hay un servidor de seguridad que podría estar impidiendo las respuestas icmp.
nmap -sS -sU -PN IP
12- Escaneo TCP SYN y UDP a determinados puertos
Esto es lo mismo que el comando anterior pero escaneando un rango determinado de puertos.
nmap -sS -sU -PN -p 1-65535 IP
13- Escaneando puertos TCP y UDP
Escaneando solo puertos TCP
Este comando es similar a la exploración TCP SYN, sin embargo, en lugar de enviar un paquete SYN y revisar los encabezados, le pedirá al sistema operativo que establezca una conexión TCP a los 1000 puertos comunes.
nmap -sT IP
Escanear solo puertos UDP
nmap -sU IP
14- Exploración agresiva de hosts
A diferencia de algunos de los comandos anteriores, este comando es muy agresivo y molesto. El -A simplemente le dice a Nmap para realizar la comprobación del sistema operativo y la comprobación de versión. El -T4 es para la velocidad, estas opciones son lo que le dice a la rapidez con nmap para llevar a cabo la exploración. La velocidad varía de 0 para lento y sigiloso a 5 para rápido y obvio.
nmap -T4 -A IP/24
Veamos en detalle que es el -T que viene a ser el nivel de agresión
-T0: Muy lento – No recomendable
-T1: Útil para evasión de IDS – Lento
-T2: No interfiere con el objetivo- Lento pero recomendable
-T3: Escaneo por defecto
-T4: Escaneo rápido y agresivo – No recomendable
-T5: Escaneo muy rápido y muy agresivo – No recomendable
15- Escanear equipos desde un archivo
Suponiendo que ya tenemos un archivo de texto por ejemplo, con una IP debajo de la otra, o nombre de equipos, podemos indicar a nmap que trabaje con dicho archivo.
nmap -iL /tmp/test.txt
16- Excluyendo host de un escaneo completo de una red
En el caso de no querer escanear determinados equipos podemos excluir equipos por ejemplo ahora voy a mostrar como quitar la ip que termina con .1 y .254
nmap 192.168.23.0/24 --exclude 192.168.23.1,192.168.23.254
17- Guardar el resultado en un archivo de texto
nmap -oN scan.txt IP o también podemos hacer nmap IP > scan.txt
Guardar en un archivo .xml
nmap -oX scan.xml IP
18- Saber cuantos equipos Windows y Linux hay en una red
nmap -F -O 192.168.23.1-255 | grep "Running: " > /tmp/os; echo "$(cat /tmp/os | grep Linux | wc -l) Linux device(s)"; echo "$(cat /tmp/os | grep Windows | wc -l) Window(s) devices"
19- NMAP y los Firewalls
Una forma de no hacer tanto ruido, es usar el parámetro -f que permite fragmentar los paquetes enviados, lo que no llamará tanto la atención y tal vez nos permita pasar.
nmap -f IP
Saber si un equipo esta protegido por un Firewall
nmap -sA 192.168.1.254
Usar otro número de MTU
nmap nos permite especificar el MTU (Maximum Transmission Unit), esto puede confundir al firewall y revelarnos datos importantes, los números usados deben ser múltiplos de 8 (8,16,24,32,etc)
nmap --mtu 24 IP
Enviar sumas de comprobación incorrectas
Las sumas de comprobación las usa el protocolo TCP/IP para garantizar integridad, mandando comprobaciones incorrectas puede ayudarnos a descubrir información del objetivo.
nmap --badsum 192.168.23.131
Utilizar señuelos
Esta opción es para evitar que un IDS nos detecte, así que creamos varios señuelos para que no sepan cual es la ip atacante y tal vez hasta podemos confundir un firewall mal configurado.
nmap -n -D 192.168.23.5,10.5.23.2,172.1.23.4,3.4.23.1 IP_Objetivo
Intentar Bypasear el firewall con un script
nmap -sS -T5 192.168.23.131 --script firewall-bypass
20- Lanzar un ataque de DOS
Primero verificamos si el objetivo es vulnerable
nmap --script dos -Pn IP_Objetivo
Y ahora en mi ejemplo el objetivo era vulnerable a slowloris. El ataque sería:
nmap IP_Objetivo -max-parallelism 800 -Pn --script http-slowloris --script-args http-slowloris.runforever=true