nmap: ejemplos de comandos Ăștiles

nmap logo

Si no has trabajado en temas de seguridad seguramente necesite presentar a nmap, en caso contrario no necesita presentaciones. Para los que no lo conozcan aĂșn, decir que nmap es una herramienta de cĂłdigo abierto muy prĂĄctica. Sirve para rastrear puertos, servicios y otro tipo de informaciĂłn de una mĂĄquina remota. Fue escrita originalmente por Gordon Lyon, aunque hoy dĂ­a participe una gran comunidad en su desarrollo.

Gracias a ella se puede testar la seguridad de diversos sistemas informáticos, descubriendo servicios u ordenadores conectados a una red para intentar conseguir información sobre ellos y ver algunas posibles vulnerabilidades o puntos de entrada. Para que eso sea posible, esta herramienta escrita en varios lenguajes de programación enviará una serie de paquetes de red definidos a otros equipos de la red y analizará sus respuestas


La cantidad de opciones que posee es muy grande. Por tanto, también puede ofrecer gran cantidad de funciones. Incluso se pueden usar los diversos paråmetros que le puedes pasar al comando para adaptarse a diferentes tipos de latencia y congestión, evadir ciertas barreras y realizar varios tipos de escaneos que ahora analizaremos.

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):


nmap -sP

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:


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:


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:


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:


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:


nmap -sP -PR 192.168.*.*
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:

nmap -sF -T4 192.168.1.4-8 
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:

nmap -v -sN -p 8080 server1.ejemplo.com
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:

nmap -sN -T2 -sV -p 80,21,23 192.168.4.1

EscĂĄner Xmas

El sondeo «Navidad»

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:

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:

nmap --script-updatedb 

Para usar estos scripts, puedes hacer lo siguiente:


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:


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:


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.


man nmap

No obstante, espero que estos ejemplos te sirvan de algo, ya sabes que puedes dejar tus comentarios