Índice

¿Qué es Nmap?

Nmap (Network Mapper) es una herramienta de escaneo de redes y evaluación de seguridad de código abierto. Fue desarrollada originalmente por Gordon Lyon, también conocido como Fyodor, y se ha convertido en una de las herramientas más populares y ampliamente utilizadas en el campo de la seguridad informática.

La principal función de Nmap es escanear y mapear redes para descubrir hosts, servicios y puertos abiertos. Proporciona una amplia gama de capacidades para realizar exploraciones exhaustivas de red y recopilar información sobre los sistemas en esa red. Algunas de las características clave de Nmap incluyen:

  • Escaneo de puertos: Nmap puede identificar qué puertos están abiertos, cerrados o filtrados en un host objetivo. Esto es esencial para comprender la superficie de ataque y las vulnerabilidades potenciales.

  • Detección de servicios: Nmap puede determinar qué servicios están en ejecución en los puertos escaneados. Esto proporciona información sobre los protocolos utilizados y las aplicaciones o servicios específicos que están disponibles en esos puertos.

  • Detección de sistemas operativos: Nmap utiliza técnicas de detección de huellas digitales para intentar identificar el sistema operativo del host objetivo. Esto puede ser útil para evaluar la configuración de seguridad y la compatibilidad con ciertas vulnerabilidades.

  • Escaneo de redes: Nmap permite realizar escaneos de redes completas o rangos de direcciones IP para descubrir hosts activos y obtener información detallada sobre ellos.

  • Escaneo en modo sigiloso: Nmap tiene la capacidad de realizar escaneos de manera sigilosa, lo que significa que puede minimizar la generación de tráfico y evitar alertar a los sistemas de detección de intrusiones.

  • Escaneo avanzado y personalizado: Nmap ofrece una amplia gama de opciones y técnicas de escaneo avanzadas, lo que permite a los usuarios personalizar los escaneos de acuerdo a sus necesidades específicas.

Nmap se utiliza ampliamente por profesionales de seguridad, administradores de redes y auditores de sistemas para evaluar la seguridad de una red y descubrir posibles vulnerabilidades. Además, Nmap es una herramienta versátil que se puede integrar en flujos de trabajo automatizados y utilizarse en combinación con otras herramientas de seguridad.

Escaneo Básico

				
					nmap -p- --open -T5 -v -n [Ip]
				
			

-p- : Escanea todo el rango de puertos, desde el 1 hasta el 65535.

–open : Solo nos mostrará puertos con el estatus abierto.

-T5 : Controla el tiempo y el rendimiento del escaneo, donde 1 es el más lento y 5 el más rápido.

-v : Esta opción activa el modo «verbose» o detallado de Nmap. Muestra más información durante el escaneo, lo que puede ser útil para realizar un seguimiento del progreso y obtener detalles adicionales sobre los puertos y servicios encontrados.

-n : Esta opción le indica a Nmap que realice el escaneo sin realizar resolución de nombres DNS. En otras palabras, Nmap no intentará traducir las direcciones IP a nombres de host durante el escaneo. Esto puede acelerar el proceso de escaneo y evitar retrasos si la resolución de nombres es lenta o no está disponible.

Escaneo Básico Guardando los resultados:

				
					nmap -p- --open -T5 -v -n [Ip] -oG allPorts
				
			

-oG : Exportar los resultados en formato grepeable.

allPorts : Nombre del archivo donde se guardan los resultados del escaneo. Si no existe el archivo lo creará.

De esta manera podremos revisar los puertos que estaban abiertos en cualquier momento.

Cómo especificar el formato de salida de nuestro escaneo:

La opción «-o» en Nmap se utiliza para especificar el formato de salida de los resultados del escaneo. Nmap admite varios formatos de archivo para guardar los resultados escaneados. A continuación se presentan algunos de los formatos más comunes que se pueden utilizar con la opción «-o»:

  • «-oN»: Este formato guarda los resultados en un archivo de texto normal. Los resultados se guardan en un formato legible por humanos y se pueden ver fácilmente con un editor de texto.

  • «-oX»: Este formato guarda los resultados en un archivo XML. Los archivos XML son útiles si deseas procesar los resultados de escaneo con herramientas externas o realizar análisis personalizados.

  • «-oS»: Este formato guarda los resultados en un archivo de script de Nmap. El archivo de script contiene los datos del escaneo en un formato fácilmente interpretable por scripts y programas escritos en lenguaje Lua, que es el lenguaje de scripting utilizado por Nmap.

  • «-oG»: Este formato guarda los resultados en un archivo de formato greppable. Los archivos greppable son similares a los archivos de texto normales, pero están diseñados específicamente para facilitar el procesamiento mediante herramientas de línea de comandos como grep.

Estos son solo algunos ejemplos de los formatos de salida compatibles con la opción «-o» de Nmap. Puedes obtener una lista completa de los formatos de salida disponibles utilizando el comando «nmap -h» en la línea de comandos.

Escaneo Rápido Completo:

				
					nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn [Ip Vícitma] -oG allPorts
				
			

-p- : Escanea todo el rango de puertos.

–open : Solo nos mostrará puertos con el estatus abierto.

-sS : El escaneo SYN realizar rápidamente, escaneando miles de puertos por segundo en una red rápida que no se ve obstaculizada por firewalls intrusivos.

-oG : Exportar los resultados en formato grepeable.

–min-rate : Controla directamente la tasa de escaneo. Nmap intentará mantener la velocidad de envío en 5000 paquetes por segundo o más.

-vvv : Triple verbose. Recopila los puertos abiertos por TCP y los reporta por consola. Cuanto más verbose más información reporta mientras se realiza el escaneo.

-n : Anula la resolución DNS.

-Pn : Omite el descubrimiento de Hosts.

Escaneo exhaustivo de Puertos definidos:

				
					nmap -sC -sV -n -v -p[Port1,Port2] [Ip Víctima] -oN targed  
				
			
				
					nmap -sC -sV -n -v -p 20,22,80 10.10.10.10 -oN targed  
				
			

-sC : Lanza scripts básicos de reconocimiento.

-sV : Localiza la versión y servicio de los puertos definidos.

-p : Puertos a escanear. Ej: -p22,80

-oN : Reporta los resultados en formato nmap al archivo `targed`.

Escanear un rango de puertos:

				
					nmap -n -v -p [Primer Puerto]-[Puerto Final] [Ip Víctima] -oN targed  
				
			

«-p [Primer Puerto]-[Puerto Final]»: Esta opción especifica el rango de puertos que se escanearán. Debes reemplazar «[Primer Puerto]» y «[Puerto Final]» por los números de puerto correspondientes. Por ejemplo, si deseas escanear del puerto 1 al puerto 1000, deberás escribir «-p 1-1000».

-v : Recopila los puertos abiertos por TCP y los reporta por consola.

-n : Anula la resolución DNS.

Determinar sistema operativo:

Nmap cuenta con una opción llamada «-O» que permite determinar el sistema operativo de un host mediante técnicas de detección de huellas digitales. Esta opción utiliza una serie de pruebas y análisis de respuestas para inferir el sistema operativo en base a patrones característicos.

				
					nmap -O [Ip Víctima]  
				
			

Una vez que Nmap haya finalizado el escaneo, mostrará los resultados obtenidos, incluyendo la información del sistema operativo identificado. Si no es posible determinar con certeza el sistema operativo, Nmap proporcionará una lista de posibles sistemas operativos que coinciden con los resultados de las pruebas realizadas.

Es importante tener en cuenta que la detección del sistema operativo de forma precisa puede depender de diversos factores, como la configuración del host y la red. En algunos casos, Nmap puede no ser capaz de determinar el sistema operativo con certeza o puede proporcionar resultados incorrectos. Por lo tanto, es recomendable analizar los resultados con precaución y utilizar otras fuentes de información para validar la información obtenida.

Scripts específicos de Nmap:

Nmap contiene un gran número de scripts de reconocimiento, para verlos podemos filtrar las categorías por la extensión .nse.

				
					locate .nse 
				
			

Para ver el tipo de categoría de cada script de Nmap, podemos concatenar un xargs:

				
					locate .nse | xargs grep "categories" 
				
			

La sintaxis es muy simple, solo debemos añadir la opción –script delante del script que queramos utilizar:

				
					nmap --script [Nombre del Script]
				
			

Filtrar scripts por categorías:

Existen diferentes categorías de scripts disponibles en Nmap, cada una diseñada para realizar una tarea específica. Algunas de las categorías más comunes incluyen:

  • default: Esta es la categoría predeterminada en Nmap, que incluye una gran cantidad de scripts de reconocimiento básicos y útiles para la mayoría de los escaneos.
  • discovery: Esta categoría se enfoca en descubrir información sobre la red, como la detección de hosts y dispositivos activos, y la resolución de nombres de dominio.
  • safe: Esta categoría incluye scripts que son considerados seguros y que no realizan actividades invasivas que puedan desencadenar una alerta de seguridad en la red.
  • intrusive: Esta categoría incluye scripts más invasivos que pueden ser detectados fácilmente por un sistema de detección de intrusos o un Firewall, pero que pueden proporcionar información valiosa sobre vulnerabilidades y debilidades en la red.
  • vuln: Esta categoría se enfoca específicamente en la detección de vulnerabilidades y debilidades en los sistemas y servicios que se están ejecutando en la red.

 

Una manera de filtrar por todas las categorías que existen en nmap (también se incluyen en el manual, comando «man nmap») en utilizando el comando locate y filtrar por «categories»:

				
					locate .nse | xargs grep "categories" | grep -oP '".*?"' | sort -u
				
			

Como vemos en la imagen, se nos reporta por consola todas las categorías existentes que podemos emplear.

Escaneo mediante el script http-enum:

El script http-enum de Nmap actual como un fuzzer, aplicando un pequeño diccionario interno tratando de buscar directorios o archivos de interés.

				
					nmap --script http-enum [Ip Víctima]
				
			

También podemos especificar puertos y guardar los resultados en un archivo (en este caso enumScan).

				
					nmap --script http-enum -p [Puerto/s] [Ip Víctima] -oG enumScan
				
			

–script: Especifica que vamos a utilizar un Script.

-p: Especifica los puertos que vamos a escanear.

-oG: Exportar los resultados en formato grepeable.

enumScan: Nombre del archivo donde se guardan los resultados.

Escaneo mediante scripts por categorías:

Con Nmap también podemos especificar por categorías qué tipo de scripts queremos lanzar, recordar que podemos ver los distintos scripts utilizando el comando locate .nse | xargs grep «categories». La sintaxis básica del comando es la siguiente:

				
					nmap --script "[Categorias]" [Ip Víctima]
				
			

Ejemplos:

				
					nmap --script "vuln and safe" 10.10.10.10
				
			
				
					nmap --script "vuln and safe" -p22,80,445 10.10.10.10
				
			

Escalada de privilegios con Nmap:

En múltiples ocasiones, una vez realizada la intrusión en el sistema, veremos como algunos de los equipos o sistemas tienen nmap instalado. En caso de que los privilegios sean los adecuados, se pueden usar para ganar acceso como root.

Para esto, en primer lugar, debe de tratarse de una versión de nmap que contenga el parámetro –interactive

Ahora, mediante el comando sudo -l podemos ver los permisos que tenemos como sudo:

				
					sudo -l
				
			

Debemos de fijarnos que tengamos permisos sudo sobre nmap. En tal caso, utilizaremos el siguiente comando para establecer una shell interna:

				
					!sh
				
			

Directamente, pasaremos a estar registrados como el usuario root del sistema.

Todas las Opciones de Nmap:

  • -sn : Deshabilita el análisis de puertos.
  • -Pn : Deshabilita las solicitudes de echo ICMP.
  • -n : Deshabilita la resolución DNS.
  • -PE : Realiza el análisis de ping mediante solicitudes de eco ICMP contra el destino.
  • –packet-trace : Muestra todos los paquetes enviados y recibidos.
  • –reason : Muestra el motivo de un resultado específico.
  • –disable-arp-ping : Deshabilita las solicitudes de ping ARP.
  • –top-ports=<num> : Analiza los puertos superiores especificados que se han definido como más frecuentes.
  • -p- : Escanea todos los puertos.
  • -p22-110 : Escanea todos los puertos entre 22 y 110.
  • -p22,25 : Analiza solo los puertos especificados 22 y 25.
  • -F : Escanea los 100 puertos principales.
  • -sS : Realiza un TCP SYN-Scan.
  • -sA : Realiza un TCP ACK-Scan.
  • -sU : Realiza un UDP Scan.
  • -sV : Analiza los servicios descubiertos en busca de sus versiones.
  • -sC : Realiza un análisis de secuencias de comandos con secuencias de comandos que se clasifican como «predeterminadas».
  • –script <script> : Realiza un análisis de secuencias de comandos mediante los scripts especificados.
  • -O : Realiza un análisis de detección del sistema operativo para determinar el sistema operativo del destino.
  • -A : Realiza análisis de detección del sistema operativo, detección de servicios y traceroute.
  • -D RND:5 : Establece el número de señuelos aleatorios que se utilizarán para escanear el objetivo.
  • -e : Especifica la interfaz de red que se utiliza para el análisis.
  • -S 10.10.10.200 : Especifica la dirección IP de origen para el análisis.
  • -g : Especifica el puerto de origen para el análisis.
  • –dns-server <ns> : La resolución dns se realiza mediante un servidor de nombres especificado.
  • -oA filename : Almacena los resultados en todos los formatos disponibles comenzando con el nombre de «filename».
  • -oN filename : Almacena los resultados en formato normal con el nombre «filename».
  • -oG filename : Almacena los resultados en formato «grepable» con el nombre de «filename».
  • -oX filename : Almacena los resultados en formato XML con el nombre de «filename».
  • –max-retries <num> : Establece el número de reintentos para los análisis de puertos específicos.
  • –stats-every=5s : Muestra el estado del escaneo cada 5 segundos.
  • -v/-vv : Muestra una salida detallada durante el análisis.
  • –initial-rtt-timeout 50ms : Establece el valor de tiempo especificado como tiempo de espera RTT inicial.
  • –max-rtt-timeout 100ms : Establece el valor de tiempo especificado como tiempo de espera RTT máximo.
  • –min-rate 300 : Establece el número de paquetes que se enviarán simultáneamente.
  • -T <0-5> : Especifica la plantilla de temporización específica. Siendo 0 el más lento y 5 el más rápido.
[ultimatemember form_id="17973"]

Formulario de Registro

[user_registration_form id=»20865″]