
Guía completa de Nmap
Guía de uso de Nmap – Parte 1: Descripción, Instalación y Conceptos Básicos
1. ¿Qué es Nmap?
Nmap (Network Mapper) es una herramienta de código abierto utilizada para descubrir redes y auditar la seguridad de sistemas. Permite escanear puertos, identificar dispositivos en la red, detectar sistemas operativos y servicios activos, y encontrar posibles vulnerabilidades. Es ampliamente utilizada por administradores de redes, auditores de seguridad y profesionales de ciberseguridad.
Principales funcionalidades de Nmap:
Escaneo de puertos.
Detección de sistemas operativos.
Detección de servicios y versiones.
Identificación de vulnerabilidades. Auditorías de seguridad.
2. Instalación de Nmap
Nmap está disponible para múltiples sistemas operativos, incluidos Linux, Windows y macOS. A continuación, te muestro cómo instalarlo en los sistemas más comunes.
Instalación en Linux
En la mayoría de las distribuciones de Linux, Nmap está disponible en los repositorios oficiales. Para instalarlo, abre una terminal y ejecuta uno de los siguientes comandos según tu distribución:
Debian/Ubuntu:

CentOS/RHEL:

Arch Linux:

Instalación en Windows
- Ve al sitio oficial de Nmap: https://nmap.org/download.html.
- Descarga el instalador para Windows.
- Ejecuta el instalador y sigue las instrucciones para completar la instalación.
Instalación en macOS
En macOS, puedes usar Homebrew para instalar Nmap fácilmente:

Una vez instalado, puedes verificar la versión de Nmap ejecutando el siguiente comando en la terminal o consola de tu sistema:

3. Conceptos Básicos y Sintaxis de Nmap
La estructura básica de un comando Nmap es:

Opciones: Estas modifican el comportamiento de Nmap, como el tipo de escaneo o la velocidad. Objetivo: Es el host o red a escanear (puede ser una dirección IP, un nombre de dominio o un rango de IPs).
Ejemplo básico de escaneo:

Este comando realiza un escaneo básico a la IP `192.168.1.1` para detectar puertos abiertos.
4. Tipos de Escaneo
Nmap ofrece diferentes tipos de escaneos que son útiles para distintas situaciones. A continuación, te presento los más comunes:
a. Escaneo de puertos TCP (SYN scan)
Este es el tipo de escaneo más utilizado. Es rápido y efectivo para detectar puertos abiertos en un objetivo. Para realizarlo, puedes usar el siguiente comando:

Este comando envía paquetes SYN a los puertos del objetivo y verifica cuáles responden. Los resultados típicos indicarán si un puerto está «abierto», «cerrado» o «filtrado».
b. Escaneo completo de puertos TCP (Connect scan)
Este escaneo realiza una conexión completa a cada puerto del objetivo:

Es más fácil de detectar por los sistemas de seguridad, pero útil cuando no tienes privilegios suficientes para ejecutar el escaneo SYN.
c. Escaneo de puertos UDP
Para escanear puertos UDP, utiliza el parámetro `-sU`:

El escaneo UDP es más lento debido a la naturaleza del protocolo, pero es necesario para identificar servicios que no usan TCP.
5. Resultados Esperados de un Escaneo Básico
Después de ejecutar un escaneo básico, Nmap proporciona información sobre el estado de los puertos en el objetivo. Un ejemplo de salida sería:

En este caso:
El host `192.168.1.1` está activo.
Se ha detectado el puerto 22 abierto, que está ejecutando el servicio SSH.
Guía de uso de Nmap – Parte 2: Configuración Avanzada, Evasión de Detección y Técnicas Específicas
1. Configuración Avanzada de Nmap
Nmap ofrece una amplia gama de opciones que permiten realizar escaneos más avanzados y personalizados. A continuación, veremos cómo ajustar algunos parámetros importantes y realizar escaneos más complejos.
a. Especificar Rango de Puertos
Por defecto, Nmap escanea los 1000 puertos más comunes, pero puedes ajustar el rango con la opción `-p`.
Para escanear puertos específicos:

Esto escanea solo los puertos 80 y 443 en el objetivo.
Para escanear todos los puertos (1-65535):

b. Escaneo de Versiones de Servicios
El parámetro `-sV` permite identificar las versiones de los servicios que se ejecutan en los puertos abiertos:

El resultado incluye la versión del servicio que se está ejecutando, lo que ayuda a identificar posibles vulnerabilidades específicas de esa versión.
c. Detección de Sistemas Operativos (OS Detection) Nmap puede intentar identificar el sistema operativo del objetivo mediante el escaneo de paquetes y análisis de respuestas con el parámetro `-O`:

El resultado muestra el sistema operativo (o los sistemas más probables) junto con el porcentaje de confianza.
d. Escaneo de Red Completa
Puedes escanear un rango completo de direcciones IP para descubrir dispositivos activos:

Este comando escanea todos los dispositivos dentro de la subred `192.168.1.0`, identificando los hosts activos y sus puertos abiertos.
2. Técnicas de Evasión de Detección
A veces, es necesario realizar escaneos sin ser detectado por firewalls o sistemas de detección de intrusos (IDS/IPS). Nmap ofrece varias opciones para «evadir» estas defensas.
a. Uso de Fragmentación de Paquetes
Dividir los paquetes en fragmentos más pequeños puede ayudar a eludir algunos sistemas de detección:

b. Modificación del Tiempo entre Paquetes
Algunos sistemas de seguridad pueden detectar múltiples conexiones rápidas. Puedes ajustar la velocidad del escaneo con las opciones `-T0` a `-T5`, donde `-T0` es el más lento y sigiloso, y `-T5` es el más rápido:

c. Spoofing de IP (Suplantación de IP)
Nmap permite suplantar direcciones IP de origen para ocultar la IP real del escáner. Esto requiere el uso de IPs falsificadas:

Nota: El spoofing de IP suele ser detectable si no se hace correctamente, y puede requerir privilegios especiales en la red.
d. Uso de un Proxy o VPN
Para ocultar tu ubicación real o evitar restricciones geográficas, puedes combinar Nmap con un proxy o VPN, aunque esto no está implementado directamente en Nmap.
3. Técnicas de Escaneo Específicas
Existen varias técnicas adicionales que pueden ser útiles dependiendo del entorno que estás escaneando y lo que deseas lograr.
a. Escaneo Stealth o Half-Open (SYN scan)
El escaneo SYN (`-sS`) es conocido como «stealth scan» porque no completa el proceso de conexión, lo que hace que sea más difícil de detectar. En lugar de completar la conexión con el objetivo, simplemente envía un paquete SYN y espera la respuesta:

b. Escaneo de Puertos Cerrados (Fin Scan)
El escaneo FIN (`-sF`) envía paquetes FIN para tratar de obtener una respuesta de los puertos cerrados. Los puertos abiertos no responderán, lo que ayuda a determinar cuáles están cerrados:

c. Escaneo ACK para Bypassear Firewalls
Este tipo de escaneo (`-sA`) permite determinar si un firewall está filtrando los puertos. Los puertos filtrados no responderán, mientras que los no filtrados responderán con un paquete RST:

d. Detección de Firewalls y Filtros de Paquetes
La opción `-sA` también puede ser utilizada para detectar la presencia de un firewall. Si la mayoría de los puertos están «filtrados», es probable que haya un firewall configurado en el objetivo.
4. Resultados Esperados en un Escaneo Avanzado
Al realizar escaneos más específicos, los resultados de Nmap suelen ser más detallados. A continuación, se muestra un ejemplo de escaneo con detección de versión de servicios (`-sV`) y sistema operativo (`-O`):

En este ejemplo:
Los puertos 22 (SSH) y 80 (HTTP) están abiertos.
El puerto 22 está ejecutando OpenSSH versión 7.9.
El puerto 80 está ejecutando Apache HTTPD versión 2.4.41.
Nmap ha identificado que el sistema operativo es una versión del kernel de Linux 4.x, con un 90% de confianza.
Guía de uso de Nmap – Parte 3: Análisis de Resultados, Creación de Informes y Uso de Scripts NSE
1. Análisis de Resultados
La interpretación adecuada de los resultados de Nmap es clave para entender el estado de la red o el sistema que estás auditando. Vamos a explorar algunos aspectos importantes a considerar al analizar los resultados.
a. Estados de Puertos
Nmap clasifica los puertos escaneados en tres posibles estados:
Open (Abierto): El puerto está accesible y un servicio está escuchando activamente.
Closed (Cerrado): El puerto está accesible pero no hay ningún servicio escuchando.
Filtered (Filtrado): Nmap no puede determinar si el puerto está abierto o cerrado, lo que indica que un firewall o dispositivo de filtrado bloquea los paquetes.
b. Identificación de Servicios y Sistemas Operativos
Al utilizar opciones como `-sV` y `-O`, puedes obtener detalles sobre los servicios que se ejecutan en los puertos abiertos y el sistema operativo del objetivo. Por ejemplo:

Aquí, puedes identificar la versión del servidor SSH (OpenSSH 7.9) y del servidor HTTP (Apache 2.4.41). Estos detalles son útiles para investigar posibles vulnerabilidades específicas de cada servicio. c. Detectando Dispositivos y Redes
Cuando escaneas redes completas o múltiples dispositivos, Nmap genera informes de todos los hosts detectados, incluyendo sus direcciones IP, servicios y sistemas operativos, si es posible. Esto es útil para mapear la red y entender qué dispositivos están expuestos o corren servicios críticos.
2. Creación de Informes
Para documentar los resultados de los escaneos y compartirlos con otros, puedes exportar los resultados de Nmap en varios formatos.
a. Guardar Resultados en Formato Simple
Puedes guardar los resultados en un archivo de texto simple usando la opción `-oN`:

Esto generará un archivo con un formato legible que contiene el mismo resultado que verías en la terminal.
b. Guardar Resultados en Formato XML
Para exportar los resultados en un formato estructurado como XML, útil para su integración con otras herramientas, usa `-oX`:

El formato XML es ideal si deseas procesar automáticamente los datos mediante scripts o sistemas de análisis.
c. Guardar Resultados en Varios Formatos
Puedes generar múltiples formatos a la vez con la opción `-oA`:

Este comando generará tres archivos: `resultados.nmap` (formato legible), `resultados.xml` (formato XML) y `resultados.gnmap` (formato específico de Nmap).
3. Uso de Scripts NSE (Nmap Scripting Engine)
Una de las características más potentes de Nmap es su motor de scripting (Nmap Scripting Engine o NSE), que permite ejecutar scripts personalizados para realizar pruebas más avanzadas. Estos scripts se utilizan para detectar vulnerabilidades, explotar servicios, realizar auditorías de seguridad más completas y mucho más.
a. Escanear Vulnerabilidades con Scripts
Nmap incluye una amplia biblioteca de scripts NSE, que puedes utilizar con la opción `–script`. Por ejemplo, para escanear vulnerabilidades comunes:

Este comando ejecutará una serie de scripts relacionados con la detección de vulnerabilidades en el objetivo.
b. Detectar Servicios y Puertas Traseras
Hay scripts específicos para detectar servicios mal configurados o puertas traseras. Por ejemplo, para detectar versiones de SSH vulnerables:

Este script detecta si el servicio SSH es vulnerable a la CVE-2018-15473.
c. Enumeración de Servicios y Usuarios
Algunos scripts permiten obtener información detallada de los servicios. Por ejemplo, para enumerar los usuarios de un servidor FTP:

Este script intenta identificar si el servidor FTP permite accesos anónimos.
d. Escaneo de Vulnerabilidades Web
Si deseas escanear aplicaciones web para identificar vulnerabilidades como SQL injection o XSS, puedes utilizar scripts web específicos:

Esto intentará detectar si alguna aplicación web en el servidor es vulnerable a inyecciones SQL. e. Personalización de Scripts
Los scripts NSE están escritos en el lenguaje de programación Lua, lo que te permite crear tus propios scripts personalizados o modificar los existentes para adaptarlos a tus necesidades. Puedes encontrar los scripts predefinidos en el directorio de instalación de Nmap (usualmente en `/usr/share/nmap/scripts/`).
4. Automatización y Uso en Auditorías
Nmap puede ser una herramienta poderosa en auditorías de seguridad. A continuación, algunos ejemplos de cómo integrarlo en flujos de trabajo de seguridad:
a. Escaneos Programados
Puedes automatizar Nmap con scripts de shell o cron para ejecutar escaneos periódicos de una red:

Esto permite realizar auditorías regulares de redes grandes, detectando cambios en la infraestructura de forma automática.
b. Integración con Herramientas de Seguridad
Nmap se puede integrar con otras herramientas de seguridad como Metasploit o Nessus para complementar las auditorías de vulnerabilidades y la explotación de servicios.
c. Escaneos Personalizados por Segmento de Red
En redes complejas, puedes realizar escaneos en segmentos específicos (subredes, VLANs, etc.) para asegurarte de que no hay dispositivos no autorizados o servicios vulnerables:

Esto realiza un «ping scan» en la subred para detectar qué hosts están activos.
NMAP: Listado de comandos












Los objetivos, ya sean nombres de máquina, direcciones IP, o cualquier otro formato aceptado por Nmap, deben aparecer cada uno en una línea distinta.
Los tiempos se miden por defecto en segundos. Se pueden utilizar otras unidades de medida añadiendo los sufijos ‘ms’ (milisegundos), ‘s’ (segundos), ‘m’ (minutos), o ‘h’ (horas). Por ejemplo 30m, 500ms o 2h.


Ejercicio Práctico de Nmap
Objetivo:
Realizar un escaneo completo de una red interna, identificar dispositivos activos, los puertos abiertos y servicios que están corriendo, y finalmente analizar los resultados para determinar posibles vulnerabilidades.
Paso 1: Escaneo de la red para detectar hosts activos
Comienza escaneando una subred completa para identificar qué dispositivos están conectados y activos. Supongamos que la red tiene el rango IP `192.168.1.0/24`.
Ejecuta el siguiente comando para realizar un escaneo de ping (ping sweep):

Este comando enviará solicitudes ICMP (ping) a cada dirección IP en el rango y te devolverá una lista de hosts que responden.
Resultados esperados:
Verás una lista de direcciones IP que están activas en la red, algo similar a esto:

Interpretación: Estas son las direcciones IP que están activas en la red. Supongamos que los hosts activos son `192.168.1.1`, `192.168.1.10` y `192.168.1.15`.
![]()
Paso 2: Escaneo de puertos abiertos en cada host activo
Ahora que tienes identificados los hosts activos, realiza un escaneo de puertos en uno de ellos, por ejemplo, en la IP `192.168.1.10`.
Ejecuta el siguiente comando para escanear los puertos TCP más comunes:

Este comando utiliza el escaneo SYN para detectar los puertos abiertos sin establecer una conexión completa, lo que lo hace rápido y sigiloso.
Resultados esperados:
Nmap te devolverá una lista de los puertos abiertos en el host objetivo:

Interpretación: El host `192.168.1.10` tiene tres puertos abiertos:
El puerto 22 está ejecutando un servicio SSH.
El puerto 80 está ejecutando un servidor HTTP.
El puerto 443 está ejecutando un servidor HTTPS.
Paso 3: Detección de servicios y versiones
Para obtener más detalles sobre los servicios que se ejecutan en esos puertos, realiza un escaneo de detección de versiones:

Este escaneo intentará identificar las versiones exactas de los servicios que están corriendo en los puertos abiertos.
Resultados esperados:
Nmap te devolverá información detallada sobre los servicios y sus versiones:

Interpretación: Ahora sabes que:
El puerto 22 está ejecutando OpenSSH versión 7.6p1.
El puerto 80 está ejecutando Apache HTTPD versión 2.4.29.
El puerto 443 está ejecutando Apache HTTPD versión 2.4.29 con soporte para HTTPS.
Paso 4: Detección del sistema operativo
Para identificar el sistema operativo que está ejecutando el host, usa el siguiente comando:

Este comando intenta detectar el sistema operativo a través del análisis de paquetes.
Resultados esperados:
Nmap intentará adivinar el sistema operativo del objetivo con un nivel de confianza:

Interpretación: Nmap ha detectado que el host `192.168.1.10` está ejecutando una versión del kernel de Linux 4.x, probablemente entre la versión 4.4 y 4.15.
![]()
Paso 5: Escaneo de vulnerabilidades
Finalmente, realiza un escaneo de vulnerabilidades en los servicios detectados. Usa los scripts NSE para buscar vulnerabilidades conocidas:

Resultados esperados:
El escaneo puede devolver información sobre vulnerabilidades presentes en los servicios expuestos:

Interpretación: En este caso, se detectaron varias vulnerabilidades:
El servicio SSH es vulnerable a la CVE-2018-15473, que permite enumerar usuarios.
El servicio HTTP es vulnerable a la CVE-2017-5638, una vulnerabilidad de ejecución remota de código en Apache Struts2.
El servicio HTTPS es vulnerable al ataque DROWN debido al soporte para SSLv2.
Solución Explicada:
1. Escaneo de red para detectar hosts activos:
Usaste el comando `nmap -sP` para identificar qué dispositivos están activos en la red
`192.168.1.0/24`. Esto te permite saber qué máquinas están conectadas y respondiendo a solicitudes.
2. Escaneo de puertos abiertos: Ejecutaste un escaneo SYN (`nmap -sS`) para descubrir qué puertos están abiertos en el host activo `192.168.1.10`. Esto te mostró los puertos donde hay servicios activos (SSH, HTTP, HTTPS).
3. Detección de versiones de servicios:
Usaste el escaneo `nmap -sV` para identificar las versiones específicas de los servicios en esos puertos. Esto es útil para conocer qué versiones pueden ser vulnerables a ataques.
4. Detección del sistema operativo:
Con `nmap -O`, descubriste que el objetivo está ejecutando Linux con una versión del kernel 4.x, lo que ayuda a entender mejor el entorno del objetivo.
5. Escaneo de vulnerabilidades:
Ejecutaste scripts NSE para buscar vulnerabilidades en los servicios. Esto reveló vulnerabilidades conocidas como enumeración de usuarios en SSH, ejecución remota de código en Apache y soporte de SSLv2 vulnerable al ataque DROWN.
Este ejercicio cubre los aspectos básicos y avanzados del uso de Nmap en un entorno real. Cada paso te permitió descubrir información clave sobre la red y los sistemas que escaneaste, proporcionando una visión detallada de los posibles riesgos de seguridad

