Contenido

🔹¿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.

 

🔹Cómo instalar Nmap

A continuación podéis encontrar cómo instalar Nmap según el sistema operativo que estéis utilizando.

🔹Instalación de Nmap en Ubuntu/Debian

Usa el administrador de paquetes apt:

				
					sudo apt update
sudo apt install nmap

				
			

Para verificar que se instaló correctamente:

				
					nmap --version

				
			

Lectura recomendada

Link de Compra en Amazon: 
🛒 https://amzn.to/3Zw5syg

Contenido del libro:

Este libro contiene una variedad de temas relacionados con las conexiones de redes, tratados desde una perspectiva fácilmente comprensible para personas que quieren iniciarse en esta materia.

Link de Compra en Amazon: 
🛒 https://amzn.to/4fiqMNH

Contenido del libro:

Libro introductorio para aprender, desde cero, la mecánica del pentesting y del hacking ético sin meterte en líos; y para aprender paso a paso a utilizar Kali en pentesting.

🔹Instalación en Fedora

Usa el administrador de paquetes dnf:

				
					sudo dnf install nmap

				
			

🔹Instalación en CentOS/RHEL

Si usas RHEL o CentOS, utiliza yum o dnf:

				
					sudo yum install nmap

				
			

O con «dnf» en las versiones más recientes:

				
					sudo dnf install nmap

				
			

🔹Instalación en Arch Linux y derivados (como Manjaro)

Usa el administrador de paquetes pacman:

				
					sudo pacman -S nmap

				
			

🔹Instalación desde código fuente (opcional)

Si necesitas la última versión y no está en tu repositorio, puedes compilar Nmap desde su código fuente.

Descarga la última versión desde la página oficial:

📚https://nmap.org/download.html

O directamente desde la terminal:

				
					wget https://nmap.org/dist/nmap-<version>.tar.bz2

				
			

Extrae el archivo descargado:

				
					tar -xvf nmap-<version>.tar.bz2
cd nmap-<version>

				
			

Compila e instala:

				
					./configure
make
sudo make install

				
			

Finalmente puedes verifica la instalación con el comando nmap –version.

🔹Escaneo básico de puertos abiertos con Nmap

				
					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.

 

🔹Cómo guardar los resultados de un escaneo con Nmap

				
					nmap -p- --open -T5 -v -n 10.10.10.10 -oG puertosAbiertos
				
			
				
					nmap -p- --open -T5 -v -n [Ip Víctima] -oG [Nombre del archivo de guardado.]
				
			

🔸-oG  Exportar los resultados en formato grepeable.

🔸purtosAbiertos  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 [nombreArchivo]
				
			
				
					nmap -p- --open -sS --min-rate 5000 -vvv -n -Pn 10.10.10.10 -oG puertosAbiertos
				
			

🔸-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 [Archivo de guardado]  
				
			
				
					nmap -sC -sV -n -v -p 20,22,80 10.10.10.10 -oN puertosInfo 
				
			

🔸-sC  Lanza scripts básicos de reconocimiento.

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

🔸-p  Puertos a escanear. Ej: -p 20,22,80

🔸-oN  Reporta los resultados en formato nmap al archivo `puertosInfo`.

 

🔹Cómo escanear un rango de puertos definidos con Nmap

				
					nmap -n -v -p [Primer Puerto]-[Puerto Final] [Ip Víctima] -oN [Archivo de Guardado]
				
			
				
					nmap -n -v -p 0-100 10.10.10.10 -oN puertosInfo
				
			

🔸-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 100, deberás escribir «-p 1-100».

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

🔸-n  Anula la resolución DNS.

 

🔹Determinar sistema operativo con Nmap

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:

🔸auth: Scripts relacionados con autenticación (por ejemplo, fuerza bruta o autenticación de servicios específicos).
🔸broadcast: Scripts que utilizan difusión para recopilar información.
🔸brute: Scripts para ataques de fuerza bruta.
🔸default: Scripts ejecutados cuando se utiliza la opción -sC.
🔸discovery: Scripts para descubrir servicios o información de red.
🔸dos: Scripts relacionados con ataques de denegación de servicio.
🔸exploit: Scripts que explotan vulnerabilidades conocidas.
🔸external: Scripts que interactúan con servicios o APIs externas.
🔸fuzzer: Scripts para pruebas de fuzzing.
🔸intrusive: Scripts que pueden ser detectados o considerados agresivos.
🔸malware: Scripts relacionados con malware o detección de backdoors.
🔸safe: Scripts considerados no intrusivos y seguros.
🔸version: Scripts que detectan versiones específicas de servicios.
🔸vuln: Scripts que verifican vulnerabilidades conocidas.

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]
				
			
				
					nmap --script http-enum -p [Puerto/s] [Ip Víctima] -oG puertosEnum
				
			

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

🔸–script: Especifica que vamos a utilizar un Script.

🔸-p: Especifica los puertos que vamos a escanear.

🔸-oG: Exportar los resultados en formato grepeable.

🔸puertosEnum: 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]
				
			

🔹Escanemo mediante las categorías Vuln and Safe de Namp

				
					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 algunas 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.

🔹Lista de 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.