Ejemplos prácticos de nmap
Nmap es una herramienta muy compleja, y no se explica su uso desde el
principio, pero sí que voy a mostrar algunos ejemplos prácticos reales
muy interesantes. Para ello, voy a crear varias categorías y en cada una de
ellas explicar algunos casos de aplicación. Además, tampoco explico cómo
se instala esta herramienta, que no suele venir instalada por efecto en la
mayoría de distribuciones GNU/Linux, solo en las destinadas a seguridad
como Kali Linux, Parrot OS Security, etc.
Ten paciencia, en ocasiones puede arrojar datos muy rápidamente, en otros casos
podría tardar un rato en mostrarlos. Así que no te desesperes, aunque parezca que
la herramienta no está haciendo nada, estará analizando. Puedes tomar un café
mientras o hacer algo para distraerte… Pero al final, dará sus resultados.
Además, te recomiendo que uses máquinas virtuales o tus propios dispositivos de
casa para evitar problemas. Practica con eso y así no tendrás tentaciones de
meterte en problemas mayores… Desde LxA no nos hacemos responsables de
para qué lo uses.
Si no te simpatiza demasiado trabajar con la línea de comandos, tienes la opción
de usar Zenmap, una GUI oficial para este proyecto y así facilitar un poco las
cosas…
Barrido de ping
Algunos ejemplos para realizar un barrido de ping con nmap, es decir, un
método para establecer el rango de IPs que están asignadas a los hosts.
Dicho de otro modo, para descubrir dispositivos en línea dentro de una
red o rango. Para ello, tan solo tienes que ejecutar el siguiente comando
(ambos son equivalentes):
1 nmap -sP
2
3 nmap -sn
Pero si lo que quieres es descubrir todos los hosts de una red de clase C,
puedes modificar el anterior comando y ejeuctarlo de esta otra forma:
1 nmap -sP 192.168.0.*
El * es un carácter comodín, es decir, representa cualquier valor. Pero
también puedes filtrar o afinar un poco más al usar nombres de hosts
(p.e.: server1.ejemplo.com), direcciones IPs concretas, rangos (p.e.:
192.168.1.1-20), una subred (p.e.: 192.168.1.0/24).
Definir puertos en el escáner
Para definir puertos con nmap, puedes usar la bandera -p seguido del
número de puerto concreto que quieres analizar o también una lista de
puertos separados por comas para hacerlo sobre varios:
1 nmap -p 80, 21 192.168.0.*
También puedes especificar rangos, como sucedía con las IPs, para ello,
puedes usar el guión para definir el principio y final del escaneo:
1 nmap -p 21-80 linuxadictos.com
Y se pueden usar rangos de IPs y de puertos a la vez, incluso varios
tramos de rangos, la verdad es que las combinaciones son bastante
grandes. Usa tu imaginación, pero aquí tienes otro ejemplo de ello:
1 nmap -p 21-23,1000-2000 192.168.1.1-14
El anterior comando buscaría solo entre los puertos 21 y 23, 100 hasta
2000 y saltaría el resto de puertos. Con las IPs algo similar, desde la 1 a la
192.168.1.14.
Escáner ARP
Un escáner con el protocolo ARP se puede hacer de forma bastante
sencilla. Lo puedes hacer normal o sin ARP como muestro en estos dos
ejemplos respectivamente:
1 nmap -sP -PR 192.168.*.*
2 nmap -sn --disable-arp-ping 192.168.0.*
Nuevamente vuelvo a repetir, con este tipo de sondeo rápido y fiable por
ARP, también puedes jugar con rangos de puertos, rangos de IPs,
nombres de dominio, etc. Los puedes ir combinando como te plazca…
Escáner FIN
Es un sondeo más agresivo. Ya sabes que existen tres tipos fundamentales
de escaneo, el NULL (-sN), FIN (-sF) y Xmas (-sX). El primero no activa
ningún bit, el flag de la cabecera de TCP es 0. En el segundo caso, que es
el que nos importa para este ejemplo, se usa el bit FIN. En el último caso,
se usan los flags FIN, PSH y URG.
Unos ejemplos con FIN serían:
1 nmap -sF -T4 192.168.1.4-8
2 nmap -sF -T2 192.168.1.6
Por cierto, -T es para especificar templates de Timing. Los nombres son
paranoid o 0, sneaky o 1, polite o 2, normal o 3, agressive o 4 e insane o
5. Puedes especificar el que necesites en cada momento, por ejemplo -T4
es el recomendado para una red local. Eso puede ser en función de si
quieres evadir ciertos mecanismos de defensa, según el ancho de banda,
etc.
Escáner NULL
El siguiente tipo de escáner: NULL. Ejemplos de cómo se haría este tipo
de sondeo:
1 nmap -v -sN -p 8080 server1.ejemplo.com
2 nmap -sN -T5 192.168.1.4
Como vez en esos ejemplos, también se pueden usar los templates que
he comentado antes… No quiero ser repetido, pero ya sabes que puedes
ir combinando las opciones y parámetros como quieras, con bastante
flexibilidad.
Recuerda que tanto NULL, XMAS y FIN no pueden distinguir entre puertos
abiertos y filtrados en muchos escenarios. Para ayudar a nmap a que los
pueda distinguir, puedes usar la opción -sV:
1 nmap -sN -T2 -sV -p 80,21,23 192.168.4.1
Escáner Xmas
El sondeo «Navidad»
1 nmap -sX -T2 -v2 -p 80 192.168.1.4
En este caso he introducido otra nueva variable, y es -v, que especifica el
nivel de detalle que quieres. En este caso es 2, en vez del modo verbose
normal que sería con -v. Se puede aplicar a los anteriores comandos
también si lo necesitas.
Más ejemplos con nmap
A parte de los anteriores, también puedes usar otras de la enorme
cantidad de opciones de las que dispone nmap. Por ejemplo, si
quieres descubrir el tipo de sistema operativo en un sondeo, puedes usar la
opción -O:
1 nmap -sV -O -v 192.168.4.1
Por otro lado, tienes que conocer que nmap puede usar una serie de
scripts muy prácticos que pueden extender aún más sus capacidades y
encontrar, por ejemplo, vulnerabilidades. Para actualizar la base de scripts
de nmap usa:
1 nmap --script-updatedb
Para usar estos scripts, puedes hacer lo siguiente:
1 nmap -f -sS -sV --script auth 192.168.4.4
Observa que he usado auth, pero puedes usar más opciones:
auth: ejecuta todos sus scripts disponibles para autenticación
default: ejecuta los scripts básicos por defecto de la herramienta
discovery: recupera información del target o víctima
external: script para utilizar recursos externos
intrusive: utiliza scripts que son considerados intrusivos para la
víctima o target
malware: revisa si hay conexiones abiertas por códigos maliciosos
o backdoors (puertas traseras)
safe: ejecuta scripts que no son intrusivos
vuln: descubre las vulnerabilidades más conocidas
all: ejecuta absolutamente todos los scripts con extensión NSE
disponibles
También puedes usar script específicos para descubrir una vulnerabilidad
concreta. Por ejemplo la SMB ms08-067:
1 nmap -p 445 --script smb-vuln-ms08-067 192.168.4.*
La cantidad de herramientas disponibles como ves son muy numerosas.
Otra opción más, y con esto ya termino, sería realizar una comprobación
de si es vulnerable a un ataque de fuerza bruta contra el protocolo SSH:
1 nmap --script ssh-brute.nse 192.168.41.14
Más información
Para más información, puedes usar el comando man en tu distro y
también este otro manual online. Allí encontrarás todo lo que necesitas
saber sobre esta compleja herramienta.
1 man nmap