Realizar Descubrimiento Avanzado de Hosts con Nmap

NmapBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a realizar un descubrimiento avanzado de hosts utilizando Nmap. El descubrimiento de hosts es el proceso de identificar dispositivos activos en una red. Este es un paso crucial inicial en el reconocimiento de redes, que te ayuda a comprender la estructura de la red e identificar posibles objetivos para un análisis posterior.

Explorarás diversas técnicas de Nmap, incluyendo:

  • Escaneo de Ping TCP (-PS): Enviar paquetes TCP SYN a puertos específicos para determinar si un host está en línea y si esos puertos están abiertos.
  • Escaneo de Ping UDP (-PU): Enviar paquetes UDP a puertos específicos, utilizado a menudo cuando los pings TCP están bloqueados, para inferir el estado del host en función de las respuestas o la falta de ellas.
  • Omitir el escaneo de Ping (-Pn): Omitir la fase de descubrimiento de host predeterminada de Nmap, obligándolo a asumir que todos los hosts de destino están en línea y proceder directamente al escaneo de puertos.
  • Combinación de técnicas: Aprovechar múltiples métodos de descubrimiento para aumentar la fiabilidad de la detección de hosts, especialmente en entornos de red complejos con cortafuegos.
  • Guardar y analizar resultados: Almacenar la salida de Nmap en un archivo para su revisión posterior y utilizar comandos básicos de Linux para extraer información valiosa de los resultados del escaneo.

A lo largo del laboratorio, ejecutarás comandos como nmap -PS2222,8080 127.0.0.1 para escaneos de ping TCP, nmap -PU5353 127.0.0.1 para ping UDP, y nmap -Pn -oN hosts.txt 127.0.0.1 para guardar los resultados. Estos ejercicios prácticos mejorarán tu comprensión de las capacidades de descubrimiento de hosts de Nmap y te prepararán para tareas de reconocimiento de redes en el mundo real.

Este es un Guided Lab, que proporciona instrucciones paso a paso para ayudarte a aprender y practicar. Sigue las instrucciones cuidadosamente para completar cada paso y obtener experiencia práctica. Los datos históricos muestran que este es un laboratorio de nivel principiante con una tasa de finalización del 100%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Utilizar Ping TCP en Puertos Específicos con nmap -PS

En este paso, aprenderás a usar Nmap para realizar un escaneo de ping TCP en puertos específicos de un host de destino. Esta técnica es útil para determinar si un host está en línea y si servicios específicos se están ejecutando en esos puertos, especialmente cuando los pings ICMP tradicionales están bloqueados por cortafuegos.

Entendiendo el Ping TCP:
A diferencia de un ping ICMP tradicional, un ping TCP envía un paquete TCP SYN a un puerto específico del host de destino.

  • Si el puerto está abierto, el host de destino generalmente responderá con un paquete SYN/ACK.
  • Si el puerto está cerrado, el host de destino normalmente responderá con un paquete RST.
  • Si el puerto está filtrado (por ejemplo, por un cortafuegos), es posible que no haya respuesta alguna.

Nmap utiliza estas respuestas (o la falta de ellas) para determinar si un host está en línea y el estado de los puertos especificados. La opción -PS en Nmap se utiliza para realizar un escaneo de ping TCP SYN. Puedes especificar uno o más puertos para escanear usando una lista separada por comas.

Para este laboratorio, el script de configuración ha configurado varios servicios en tu máquina local (127.0.0.1). Nos enfocaremos en el servicio SSH que se ejecuta en el puerto 2222 y el servidor web Nginx en el puerto 8080.

Abre tu terminal en la máquina virtual LabEx. Tu directorio predeterminado es ~/project. Ejecuta el siguiente comando:

nmap -PS2222,8080 127.0.0.1

Este comando indica a Nmap que envíe paquetes TCP SYN a los puertos 2222 y 8080 del host 127.0.0.1.

Debes ver una salida similar a la siguiente, indicando que el host está activo y los puertos especificados están abiertos:

Starting Nmap 7.80 ( https://nmap.org ) at YYYY-MM-DD HH:MM CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000085s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

En este ejemplo, Nmap informa que el host 127.0.0.1 está activo y que los puertos 2222 (SSH) y 8080 (proxy HTTP) están abiertos. Si un puerto estuviera cerrado, la salida mostraría "cerrado" en lugar de "abierto". Si el host estuviera inactivo o fuera inalcanzable, Nmap reportaría "Host is down".

Realizar Ping UDP con nmap -PU

En este paso, aprenderás a usar Nmap para realizar un escaneo de ping UDP en un puerto específico de un host de destino. Esta técnica es especialmente útil para el descubrimiento de hosts cuando el ping TCP está bloqueado por cortafuegos, o cuando sospechas que un host solo tiene servicios UDP en funcionamiento.

Entendiendo el Ping UDP:
A diferencia del ping TCP, que espera una respuesta SYN/ACK o RST, un ping UDP envía un paquete UDP a un puerto especificado.

  • Si el puerto está abierto, el host de destino puede no responder en absoluto (ya que muchos servicios UDP no envían respuestas a menos que se realice una solicitud específica).
  • Si el puerto está cerrado, el host de destino generalmente responderá con un error ICMP "puerto inalcanzable".
  • Si el puerto está filtrado, no habrá respuesta.

Nmap utiliza la presencia o ausencia de una respuesta (o el tipo de respuesta) para determinar si un host está en línea. La opción -PU en Nmap se utiliza para realizar un escaneo de ping UDP. Debes especificar el puerto a escanear. En este laboratorio, nos enfocaremos en el servicio DNS que se ejecuta en el puerto 5353 en tu máquina local (127.0.0.1).

Nota importante: Los escaneos de ping UDP requieren privilegios de root para leer las respuestas de red en bruto. Necesitarás usar sudo con el comando nmap.

Abre tu terminal en la máquina virtual LabEx. Tu directorio predeterminado es ~/project. Ejecuta el siguiente comando:

sudo nmap -PU5353 127.0.0.1

Este comando indica a Nmap que envíe un paquete UDP al puerto 5353 del host 127.0.0.1.

Debes ver una salida similar a la siguiente:

Starting Nmap 7.80 ( https://nmap.org ) at YYYY-MM-DD HH:MM CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000040s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 0.09 seconds

En este ejemplo, Nmap informa que el host 127.0.0.1 está activo. Ten en cuenta que al usar ping UDP para el descubrimiento de hosts, Nmap aún realiza su escaneo de puertos predeterminado después de determinar que el host está activo, por lo que ves los puertos TCP en la salida. El ping UDP tuvo éxito en detectar que el host está en línea.

Omitir Ping con nmap -Pn

En este paso, aprenderás a usar la opción -Pn en Nmap para omitir el ping de descubrimiento de host. Esto es particularmente útil cuando deseas escanear un host sin verificar primero si está en línea. Esto puede ser útil en situaciones donde los métodos tradicionales de ping (como ICMP o incluso pings TCP/UDP) están bloqueados por un cortafuegos, o simplemente para ahorrar tiempo asumiendo que el host está activo.

Entendiendo -Pn:
Normalmente, Nmap realiza una fase de descubrimiento de host antes de escanear puertos. Esto implica enviar varios tipos de sondas (solicitudes de eco ICMP, paquetes TCP SYN, paquetes UDP, etc.) para determinar si el host de destino está en línea. Si Nmap determina que el host está inactivo, omitirá la fase de escaneo de puertos para ese host.

La opción -Pn indica a Nmap que omita completamente esta fase de descubrimiento de host y trate a todos los hosts de destino como si estuvieran en línea. Esto significa que Nmap procederá directamente a la fase de escaneo de puertos, independientemente de si el host responde a las sondas de ping.

Probemos un ejemplo. Usaremos Nmap con la opción -Pn para escanear la dirección de localhost 127.0.0.1.

Abre tu terminal en la máquina virtual LabEx. Tu directorio predeterminado es ~/project. Ejecuta el siguiente comando:

nmap -Pn 127.0.0.1

Este comando indica a Nmap que omita el ping de descubrimiento de host y escanee los puertos de 127.0.0.1.

Debes ver una salida similar a la siguiente, mostrando varios puertos abiertos en tu máquina local, incluyendo los configurados por el entorno de laboratorio:

Starting Nmap 7.80 ( https://nmap.org ) at YYYY-MM-DD HH:MM CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000098s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 0.05 seconds

En este ejemplo, Nmap informa que el host 127.0.0.1 está activo y muestra los puertos abiertos. Incluso si el ping ICMP u otros métodos de descubrimiento de host estuvieran bloqueados en el sistema, Nmap aún intentaría escanear los puertos debido a la opción -Pn.

Es importante tener en cuenta que usar la opción -Pn puede llevar a tiempos de escaneo más largos si se dirigen muchos hosts, ya que Nmap intentará escanear los puertos en cada dirección IP especificada, incluso si muchas de ellas están realmente fuera de línea.

Combinar Técnicas para Descubrimiento de Host

En este paso, aprenderás a combinar las técnicas de ping TCP y UDP en Nmap para descubrir hosts activos. Combinar técnicas puede aumentar significativamente la fiabilidad del descubrimiento de hosts, especialmente cuando se trabaja con cortafuegos u otras medidas de seguridad de red que puedan bloquear un tipo de sonda pero no otra.

Como aprendiste en pasos anteriores:

  • -PS se utiliza para el ping TCP SYN.
  • -PU se utiliza para el ping UDP (requiere privilegios de root).

Al combinar estas opciones, Nmap enviará tanto paquetes TCP SYN a un puerto TCP especificado como paquetes UDP a un puerto UDP especificado. Si cualquiera de estas sondas recibe una respuesta, Nmap considerará que el host está activo. Esto proporciona una forma más robusta de detectar hosts activos.

En este ejemplo, usaremos Nmap para enviar un paquete TCP SYN al puerto 2222 (SSH) y un paquete UDP al puerto 5353 (DNS) en tu máquina local (127.0.0.1).

Abre tu terminal en la máquina virtual LabEx. Tu directorio predeterminado es ~/project. Ejecuta el siguiente comando:

sudo nmap -PS2222 -PU5353 127.0.0.1

Este comando indica a Nmap realizar las siguientes acciones:

  • -PS2222: Enviar un paquete TCP SYN al puerto 2222 del host de destino.
  • -PU5353: Enviar un paquete UDP al puerto 5353 del host de destino.
  • 127.0.0.1: Escanear el host local.

Debes ver una salida similar a la siguiente:

Starting Nmap 7.80 ( https://nmap.org ) at YYYY-MM-DD HH:MM CST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.0000040s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

Nmap done: 1 IP address (1 host up) scanned in 0.10 seconds

En este ejemplo, Nmap informa que el host 127.0.0.1 está activo. Nmap determinó esto al recibir una respuesta a cualquiera del paquete TCP SYN enviado al puerto 2222 o el paquete UDP enviado al puerto 5353. Después de confirmar que el host está activo a través de las sondas de ping, Nmap continúa con su escaneo de puertos predeterminado, mostrando los puertos TCP abiertos.

Combinar técnicas como esta suele ser más efectivo que usar un solo método, ya que aumenta las posibilidades de sortear cortafuegos u otras medidas de seguridad que puedan bloquear un tipo de sonda pero no otra, lo que lleva a resultados más precisos en el descubrimiento de hosts.

Guardar los Resultados de Descubrimiento en un Archivo

En este paso, aprenderás a guardar los resultados de un escaneo Nmap en un archivo utilizando la opción -oN. Guardar los resultados de los escaneos es crucial para documentar tus hallazgos, realizar análisis posteriores o compartir información con otros.

La opción -oN indica a Nmap que guarde los resultados del escaneo en un formato "normal" en el archivo especificado. El formato normal es un archivo de texto legible por humanos, fácil de visualizar y analizar.

En este ejemplo, usaremos Nmap para escanear el host 127.0.0.1, omitiendo el ping de descubrimiento de host (-Pn), y guardando los resultados en un archivo llamado hosts.txt en tu directorio ~/project.

Abre tu terminal en la máquina virtual LabEx. Tu directorio predeterminado es ~/project. Ejecuta el siguiente comando:

nmap -Pn -oN hosts.txt 127.0.0.1

Este comando indica a Nmap realizar las siguientes acciones:

  • -Pn: Omitir el ping de descubrimiento de host (asumir que el host está activo).
  • -oN hosts.txt: Guardar los resultados del escaneo en formato normal en el archivo hosts.txt.
  • 127.0.0.1: Escanear el host 127.0.0.1.

Una vez completado el escaneo, puedes ver el contenido del archivo hosts.txt usando el comando cat:

cat hosts.txt

Debes ver una salida similar a la siguiente, que incluye la versión de Nmap, la hora del escaneo, el estado del host y los puertos abiertos:

## Nmap 7.80 scan initiated Tue Jun  3 10:50:49 2025 as: nmap -Pn -oN hosts.txt 127.0.0.1
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000089s latency).
Not shown: 995 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
2121/tcp open  ccproxy-ftp
2222/tcp open  EtherNetIP-1
3001/tcp open  nessus
8080/tcp open  http-proxy

## Nmap done at Tue Jun  3 10:50:49 2025 -- 1 IP address (1 host up) scanned in 0.05 seconds

El archivo hosts.txt ahora contiene los resultados del escaneo Nmap en un formato legible por humanos. Puedes utilizar este archivo para documentación, informes o análisis adicionales con comandos básicos de Linux como grep para extraer información específica sobre los hosts y servicios descubiertos.

Resumen

En este laboratorio, has aprendido a realizar un descubrimiento de hosts avanzado utilizando Nmap. Empezaste comprendiendo y aplicando opciones específicas de Nmap para el descubrimiento de hosts:

  • Escaneo de Ping TCP (-PS): Utilizaste nmap -PS2222,8080 127.0.0.1 para identificar hosts activos y puertos TCP abiertos.
  • Escaneo de Ping UDP (-PU): Realizaste sudo nmap -PU5353 127.0.0.1 para descubrir hosts utilizando sondas UDP, lo cual es útil cuando el TCP está restringido.
  • Omitir Escaneo de Ping (-Pn): Aprendiste a forzar a Nmap a escanear hosts sin un descubrimiento previo de host utilizando nmap -Pn 127.0.0.1, esencial en entornos con cortafuegos.
  • Combinación de Técnicas: Combinaste los escaneos de ping TCP y UDP con sudo nmap -PS2222 -PU5353 127.0.0.1 para lograr una detección de hosts más fiable.

Además, adquiriste habilidades prácticas en la gestión de la salida de Nmap:

  • Guardar Resultados: Guardaste los resultados de tu escaneo en un archivo legible por humanos utilizando nmap -Pn -oN hosts.txt 127.0.0.1.

Al dominar estas técnicas de Nmap, ahora estás mejor equipado para realizar un reconocimiento de red efectivo, identificar dispositivos activos y recopilar información crucial para evaluaciones de seguridad o tareas de administración de redes. Los archivos de salida guardados pueden analizarse aún más utilizando herramientas estándar de procesamiento de texto de Linux para informes y documentación detallados.