Aprende los Fundamentos de Nmap para el Escaneo de Redes

NmapBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderá los fundamentos del escaneo de redes utilizando Nmap, una herramienta de seguridad de red muy popular y versátil. Nmap, abreviatura de Network Mapper, es una utilidad de código abierto para la detección de redes y auditoría de seguridad. Ayuda a identificar hosts y servicios en una red de computadoras, lo cual es esencial para los profesionales de ciberseguridad detectar posibles vulnerabilidades y proteger la seguridad del sistema.

A lo largo de este laboratorio, aprenderá a realizar la detección básica de hosts, identificar puertos abiertos y detectar servicios en ejecución. Estas habilidades son vitales para los administradores de red y profesionales de seguridad para monitorear la infraestructura de red, encontrar posibles problemas de seguridad y garantizar la protección adecuada del sistema. Al final, tendrá una base sólida en el uso de Nmap para el escaneo de redes y la detección de hosts.

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 90%. Ha recibido una tasa de reseñas positivas del 100% por parte de los estudiantes.

Comprender Nmap y configurar el entorno

¿Qué es Nmap?

Nmap, abreviatura de Network Mapper, es una herramienta gratuita y de código abierto. Se utiliza principalmente para la detección de redes y auditoría de seguridad. Para muchos administradores de sistemas y redes, Nmap es una utilidad muy útil. Aquí hay algunas tareas comunes en las que Nmap resulta útil:

  • Inventario de la red y gestión de la programación de actualización de servicios: Nmap puede ayudarte a averiguar qué dispositivos hay en tu red y qué servicios están ejecutando. Esta información es crucial para planificar cuándo actualizar estos servicios.
  • Monitoreo de la disponibilidad de hosts o servicios: Puedes usar Nmap para verificar si un host o servicio en particular está activo y funcionando. Esto es importante para garantizar la confiabilidad de tu red.
  • Descubrimiento de puertos abiertos en sistemas objetivos: Los puertos abiertos pueden ser posibles puntos de entrada para los atacantes. Al usar Nmap, puedes averiguar qué puertos están abiertos en un sistema objetivo, lo que te permite protegerlos si es necesario.
  • Auditoría de seguridad e identificación de vulnerabilidades: Nmap también puede ayudarte a identificar vulnerabilidades de seguridad en tu red. Puede detectar si hay puntos débiles que los atacantes podrían explotar.

Configurar tu entorno de prueba

Antes de comenzar a usar Nmap para realizar escaneos, necesitamos tener un objetivo para escanear. En este caso, configuraremos un servidor HTTP simple utilizando las características integradas de Python.

Primero, necesitamos navegar a nuestro directorio de proyecto. Aquí es donde se almacenarán todos nuestros archivos relacionados con este experimento. Para hacer esto, usamos el comando cd en la terminal. El comando cd significa "cambiar de directorio". Aquí está el comando:

cd /home/labex/project

Ahora que estamos en el directorio correcto, crearemos un archivo HTML simple. Este archivo será servido por nuestro servidor web. Usamos el comando echo para crear el contenido HTML y el operador > para redirigir ese contenido a un archivo llamado index.html. El archivo index.html es un nombre común para la página principal de un sitio web. Aquí está el comando:

echo "<html><body><h1>Test Web Server for Nmap Scanning</h1></body></html>" > index.html

Para asegurarnos de que el archivo se creó correctamente, podemos mostrar su contenido usando el comando cat. El comando cat es la abreviatura de "concatenar" y se usa a menudo para ver el contenido de un archivo. Aquí está el comando:

cat index.html

Si todo salió bien, deberías ver el siguiente contenido HTML:

<html><body><h1>Test Web Server for Nmap Scanning</h1></body></html>

Ahora, estamos listos para iniciar nuestro servidor HTTP simple. Usaremos el módulo http.server integrado de Python para iniciar un servidor en el puerto 8000. El & al final del comando es importante. Hace que el servidor se ejecute en segundo plano, lo que significa que podemos seguir usando la terminal para otros comandos mientras el servidor está en funcionamiento. Aquí está el comando:

python3 -m http.server 8000 &

Después de ejecutar este comando, deberías ver una salida similar a esta:

[1] 1234
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...

Ahora, tenemos un servidor web en funcionamiento en el puerto 8000. Este servidor se está ejecutando en tu máquina local, con la dirección IP 127.0.0.1. Este servidor local será nuestro objetivo para los escaneos de Nmap.

Detección básica de hosts con Nmap

Técnicas de detección de hosts

La detección de hosts, también conocida como escaneo de ping, es un proceso fundamental en la seguridad de redes. Nos ayuda a averiguar qué hosts están actualmente activos y funcionando en una red. Piénsalo como una forma de comprobar si hay dispositivos conectados activamente a la red. Nmap, una poderosa herramienta de exploración de redes y auditoría de seguridad, ofrece varios métodos para la detección de hosts:

  • Solicitudes de eco ICMP (ping): Esto es como enviar un simple mensaje de "hola" a un host y esperar una respuesta. Si el host está activo, responderá, lo que nos indica que está activo.
  • Escaneo TCP SYN a puertos específicos: Este método envía un paquete SYN a puertos específicos de un host. Si el host responde, indica que el puerto está abierto y es probable que el host esté activo.
  • Escaneo TCP ACK: Similar al escaneo TCP SYN, pero utiliza paquetes ACK en lugar de SYN. Puede ser útil en ciertos entornos de red.
  • Escaneo UDP: UDP es un tipo diferente de protocolo de red. El escaneo UDP comprueba si los puertos UDP de un host están abiertos, lo que también puede ayudarnos a determinar si el host está activo.

En este paso, comenzaremos con un escaneo de ping básico para ver si nuestro host local está activo. El host local es el dispositivo en el que estamos trabajando actualmente, y su dirección IP es 127.0.0.1.

Realizar un escaneo de ping

Realicemos un escaneo de ping básico utilizando Nmap. Usaremos la bandera -sn, que es una opción importante en Nmap. Esta bandera le dice a Nmap que realice solo la detección de hosts y omita el proceso de escaneo de puertos. El escaneo de puertos puede ser muy lento, especialmente en redes grandes, por lo que esta bandera nos ayuda a comprobar rápidamente si un host está activo.

nmap -sn 127.0.0.1

Cuando ejecutes este comando, deberías ver una salida similar a esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-15 12:00 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
Nmap done: 1 IP address (1 host up) scanned in 0.03 seconds

La salida muestra que nuestro host local (127.0.0.1) está activo y funcionando. El valor de latencia (0.000097s) nos dice cuánto tiempo tardó el host en responder a nuestra solicitud de ping. Una latencia más baja significa que el host respondió rápidamente.

Ahora, es una buena práctica guardar los resultados de nuestro escaneo para futuras referencias. Podemos hacer esto redirigiendo la salida del comando Nmap a un archivo.

nmap -sn 127.0.0.1 > /home/labex/project/host_scan.txt

El símbolo > se utiliza para redirigir la salida del comando de la izquierda al archivo de la derecha. En este caso, los resultados de nuestro escaneo de ping se guardarán en el archivo host_scan.txt.

Veamos el contenido del archivo para confirmar que los resultados del escaneo se guardaron correctamente.

cat /home/labex/project/host_scan.txt

El comando cat se utiliza para mostrar el contenido de un archivo. Cuando ejecutes este comando, deberías ver una salida similar a la que se mostró en la terminal anteriormente.

Este tipo de escaneo es muy útil. Nos permite identificar rápidamente los hosts activos en una red sin perder tiempo en escaneos detallados de puertos. Esto puede ser especialmente útil cuando se trata de redes grandes donde escanear los puertos de cada host llevaría mucho tiempo.

Escaneo de puertos y detección de servicios

Comprender el escaneo de puertos

El escaneo de puertos es una técnica fundamental en la seguridad de redes. En una red, los puertos son como puertas a través de las cuales se comunican diferentes servicios. Cada servicio, como un servidor web, un servidor de correo electrónico o un servicio de transferencia de archivos, utiliza un puerto específico para enviar y recibir datos. El escaneo de puertos es un método para determinar qué puertos en una red están abiertos y posiblemente ejecutando servicios. Esta información es crucial por varias razones:

  • Identificar los servicios que se ejecutan en un sistema: Al saber qué puertos están abiertos, puedes averiguar qué servicios están disponibles en un sistema en particular. Por ejemplo, si el puerto 80 está abierto, generalmente significa que hay un servidor web en funcionamiento.
  • Encontrar posibles vulnerabilidades de seguridad: Los puertos abiertos pueden ser un riesgo de seguridad si no están configurados correctamente. Algunos servicios pueden tener vulnerabilidades conocidas, y al escanear puertos, puedes identificar estos posibles puntos débiles.
  • Verificar la configuración del firewall: Los firewalls se utilizan para controlar el tráfico de red. El escaneo de puertos puede ayudarte a comprobar si tu firewall está configurado correctamente para bloquear o permitir puertos específicos.
  • Solución de problemas de red: Si estás experimentando problemas de red, el escaneo de puertos puede ayudarte a identificar si un servicio en particular no es accesible porque su puerto correspondiente está cerrado.

Escaneo básico de puertos

Realicemos un escaneo básico de puertos en nuestro host local. El host local es tu propio ordenador, y está representado por la dirección IP 127.0.0.1. Vamos a enfocarnos específicamente en el puerto 8000 donde se está ejecutando nuestro servidor HTTP. Para hacer esto, utilizaremos el comando nmap, que es una poderosa herramienta para la exploración de redes y la auditoría de seguridad.

nmap -p 8000 127.0.0.1

En este comando, la opción -p se utiliza para especificar el puerto que queremos escanear. Así, le estamos diciendo a nmap que escanee el puerto 8000 en el host local.

Deberías ver una salida similar a:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-15 12:05 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE SERVICE
8000/tcp open  http-alt

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

La salida muestra que el puerto 8000 está abierto y ejecutando un servicio que Nmap identifica como "http-alt" (puerto HTTP alternativo). Esto significa que hay un servicio en funcionamiento en el puerto 8000 que es similar a un servicio HTTP.

Guardemos los resultados en un archivo. Guardar los resultados es útil porque puedes consultarlos más tarde o compartirlos con otros. Para guardar los resultados, utilizaremos el operador >, que redirige la salida de un comando a un archivo.

nmap -p 8000 127.0.0.1 > /home/labex/project/service_scan.txt

Ahora, veamos el contenido del archivo. Podemos utilizar el comando cat, que se utiliza para mostrar el contenido de un archivo.

cat /home/labex/project/service_scan.txt

Detección de la versión del servicio

Ahora, utilicemos la función de detección de la versión del servicio de Nmap para obtener más información sobre el servicio que se ejecuta en el puerto 8000. Saber la versión de un servicio es importante porque diferentes versiones pueden tener diferentes vulnerabilidades de seguridad.

nmap -p 8000 -sV 127.0.0.1

La bandera -sV le dice a Nmap que explore los puertos abiertos para determinar la información del servicio y su versión. Cuando ejecutes este comando, Nmap enviará paquetes especiales al puerto abierto para tratar de averiguar qué servicio se está ejecutando y qué versión es.

Puedes ver una salida como:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-15 12:10 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).

PORT     STATE SERVICE VERSION
8000/tcp open  http    Python http.server 3.10.6 (Python 3.10.6)

Service detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 6.08 seconds

Esta salida proporciona información más detallada, mostrando que el servicio en el puerto 8000 es un servidor HTTP de Python que se ejecuta en Python 3.10.6. Este tipo de información es valiosa para las evaluaciones de seguridad, ya que diferentes versiones pueden tener vulnerabilidades conocidas. Por ejemplo, si hay una vulnerabilidad de seguridad en Python 3.10.6, puedes tomar medidas para parchearla o actualizar a una versión más segura.

Técnicas avanzadas de escaneo con Nmap

Comprender las opciones de escaneo avanzadas

Nmap es una herramienta poderosa que ofrece muchas opciones de escaneo avanzadas. Estas opciones te permiten obtener una comprensión más profunda de los sistemas objetivos. En este paso, exploraremos tres aspectos importantes del escaneo avanzado:

  1. Detección del sistema operativo (OS Detection): Este es el proceso de identificar el sistema operativo que se ejecuta en el objetivo. Saber el sistema operativo puede ayudarte a entender las posibles vulnerabilidades y características de seguridad de la máquina objetivo.
  2. Escaneo integral (Comprehensive Scanning): Esto implica combinar múltiples técnicas de escaneo para obtener una vista más detallada y completa del objetivo. Al utilizar diferentes métodos de escaneo juntos, puedes descubrir más información sobre los puertos abiertos, los servicios y el sistema operativo del objetivo.
  3. Formateo de la salida (Output Formatting): Guardar los resultados del escaneo en diferentes formatos es crucial para el análisis. Diferentes formatos son adecuados para diferentes herramientas de análisis y propósitos. Por ejemplo, el formato XML es excelente para un procesamiento posterior con lenguajes de programación, mientras que un formato legible por grep es útil para un análisis rápido basado en texto.

Detección del sistema operativo

Nmap tiene la capacidad de intentar determinar el sistema operativo que se ejecuta en una máquina objetivo. Para hacer esto, utilizamos la bandera -O. Sin embargo, esta operación requiere privilegios de administrador porque implica una exploración más profunda del sistema objetivo.

sudo nmap -O 127.0.0.1

Cuando ejecutes este comando, es posible que veas una salida similar a la siguiente:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-15 12:15 UTC
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000097s latency).
Not shown: 997 closed ports
PORT     STATE SERVICE
22/tcp   open  ssh
80/tcp   open  http
8000/tcp open  http-alt
Device type: general purpose
Running: Linux 4.X|5.X
OS CPE: cpe:/o:linux:linux_kernel:4 cpe:/o:linux:linux_kernel:5
OS details: Linux 4.15 - 5.6
Network Distance: 0 hops

OS detection performed. Please report any incorrect results at https://nmap.org/submit/ .
Nmap done: 1 IP address (1 host up) scanned in 3.81 seconds

Esta salida proporciona información valiosa sobre el sistema operativo. En este caso, nos dice que la versión probable de Linux que se ejecuta en el sistema está entre 4.15 y 5.6.

Escaneo integral

Ahora, realicemos un escaneo más completo que combine varias características de Nmap. Esto nos dará una imagen más detallada del sistema objetivo.

sudo nmap -sS -sV -O -p 1-1000 127.0.0.1

Este comando incluye varias opciones importantes:

  • -sS: Este es un escaneo TCP SYN, también conocido como escaneo sigiloso (stealthy scan). Se llama sigiloso porque no completa la conexión TCP completa, lo que lo hace menos probable que sea detectado por los sistemas de detección de intrusiones.
  • -sV: Esta opción habilita la detección de la versión del servicio. Intenta determinar la versión de los servicios que se ejecutan en los puertos abiertos, lo que puede ser útil para identificar posibles vulnerabilidades.
  • -O: Como vimos antes, esto es para la detección del sistema operativo.
  • -p 1-1000: Esto especifica que queremos escanear los puertos del 1 al 1000.

Después de ejecutar este escaneo integral, es una buena idea guardar los resultados para un análisis posterior.

sudo nmap -sS -sV -O -p 1-1000 127.0.0.1 > /home/labex/project/comprehensive_scan.txt

Para ver el contenido del archivo guardado, puedes utilizar el siguiente comando:

cat /home/labex/project/comprehensive_scan.txt

Formateo de la salida

Nmap te permite mostrar los resultados del escaneo en diferentes formatos, lo que facilita el análisis de los datos. Comencemos guardando los resultados de nuestro escaneo en formato XML.

sudo nmap -sS -sV -p 8000 127.0.0.1 -oX /home/labex/project/scan_results.xml

La bandera -oX se utiliza para decirle a Nmap que guarde los resultados en formato XML. XML es un formato estructurado que puede ser fácilmente analizado por lenguajes de programación y otras herramientas para un análisis posterior.

También podemos guardar los resultados en un formato que sea fácil de leer con grep y otras herramientas de procesamiento de texto.

sudo nmap -sS -sV -p 8000 127.0.0.1 -oG /home/labex/project/scan_results.grep

Para ver el contenido de la salida legible por grep, puedes utilizar el siguiente comando:

cat /home/labex/project/scan_results.grep

Este formato es muy útil para analizar los resultados con scripts y herramientas de línea de comandos, ya que te permite buscar rápidamente información específica.

Análisis e interpretación de los resultados del escaneo

Comprender la salida de Nmap

Cuando se utiliza Nmap para escanear una red, proporciona mucha información detallada en su salida. Pero para aprovechar al máximo la monitorización de la red y la evaluación de seguridad, es necesario entender lo que realmente significan estos resultados. Desglosemos las partes clave de la salida de Nmap.

Estados de los puertos

Los puertos son como puertas en una red. Permiten que diferentes tipos de tráfico de red entren y salgan de un dispositivo. Nmap informa varios posibles estados para los puertos:

  • open: Esto significa que una aplicación en el dispositivo objetivo está esperando activamente para aceptar conexiones en este puerto. Por ejemplo, un servidor web podría estar escuchando en el puerto 80 o 443.
  • closed: El puerto es alcanzable, pero actualmente no hay ninguna aplicación escuchando en él. Es como una puerta que está desbloqueada pero no hay nadie dentro para responder.
  • filtered: Un firewall o algún otro obstáculo de red está bloqueando el puerto. Es como si hubiera un guardia de seguridad impidiéndote acceder a la puerta.
  • unfiltered: El puerto es accesible, pero Nmap no puede determinar si está abierto o cerrado. Es como mirar a través de una ventana empañada y no poder ver si hay alguien dentro.
  • open|filtered: Nmap no puede determinar si el puerto está abierto o filtrado. Es una especie de zona de incertidumbre.
  • closed|filtered: Del mismo modo, Nmap no puede determinar si el puerto está cerrado o filtrado.

Información del servicio

Cuando se utiliza la opción de detección de servicios (-sV) con Nmap, intenta averiguar qué servicio se está ejecutando en cada puerto abierto. Esto incluye detalles como el nombre del software y su versión. Saber el servicio y su versión es importante porque puede ayudar a identificar posibles vulnerabilidades de seguridad.

Detección del sistema operativo

Si se utiliza la opción de detección del sistema operativo (-O), Nmap hará su mejor conjetura sobre el sistema operativo que se está ejecutando en el dispositivo objetivo. Esta información puede ser útil para entender la postura general de seguridad del objetivo, ya que diferentes sistemas operativos tienen diferentes características de seguridad y vulnerabilidades.

Crear un informe resumido

Ahora que entendemos la salida de Nmap, creemos un informe resumido de nuestros hallazgos. Primero, necesitamos escanear nuestra interfaz de red local para obtener resultados más interesantes.

ip addr show | grep "inet " | grep -v "127.0.0.1"

Este comando muestra todas tus interfaces de red junto con sus direcciones IP. Debes encontrar tu interfaz principal, que generalmente comienza con 192.168.x.x o 10.x.x.x. Esto es importante porque usaremos esta información para apuntar a la red correcta en nuestro escaneo.

Una vez que tenemos la información necesaria, podemos crear un informe resumido sencillo. Los siguientes comandos crearán un archivo Markdown con el resumen de nuestro escaneo.

echo "## Network Scan Summary Report" > /home/labex/project/scan_summary.md
echo "### Date: $(date)" >> /home/labex/project/scan_summary.md
echo "### Target: 127.0.0.1" >> /home/labex/project/scan_summary.md
echo -e "\n#### Open Ports and Services" >> /home/labex/project/scan_summary.md
echo "Port 8000: HTTP service (Python HTTP Server)" >> /home/labex/project/scan_summary.md
echo -e "\n#### Security Recommendations" >> /home/labex/project/scan_summary.md
echo "1. Ensure all services are necessary and up-to-date" >> /home/labex/project/scan_summary.md
echo "2. Consider implementing firewall rules to restrict access to sensitive services" >> /home/labex/project/scan_summary.md
echo "3. Regularly scan for new open ports that might indicate unauthorized services" >> /home/labex/project/scan_summary.md

Después de crear el informe, veámoslo para ver lo que hemos documentado.

cat /home/labex/project/scan_summary.md

Mejores prácticas para el escaneo de redes

Cuando se realizan escaneos de red, es importante seguir algunas mejores prácticas para asegurarse de hacerlo de manera segura y responsable.

Obtener permiso

Siempre obtén permiso antes de escanear redes que no pertenecen a ti. Escanear sin permiso puede ser ilegal y poco ético, ya que puede ser visto como una intrusión.

Limitar la frecuencia e intensidad del escaneo

Escanear demasiado frecuentemente o con alta intensidad puede interrumpir los servicios de red. No quieres causar problemas a la red que estás escaneando, así que ten en cuenta con qué frecuencia y con qué agresividad escaneas.

Mantener confidenciales los resultados del escaneo

Los resultados del escaneo pueden revelar información sensible sobre la infraestructura de una red, como puertos abiertos, servicios en ejecución y el sistema operativo. Mantén estos resultados en privado para evitar el acceso no autorizado a esta información.

Dar seguimiento a los hallazgos

Una vez que hayas identificado vulnerabilidades en el escaneo, toma medidas para solucionarlas. Esto podría implicar aplicar parches al software, cambiar configuraciones o implementar medidas de seguridad.

Documentar tus escaneos

Es importante mantener un registro de tus escaneos, incluyendo cuándo se realizó el escaneo, por qué se realizó y qué se escaneó. Esta documentación es útil para auditorías de seguridad y cumplimiento.

Documentemos nuestra actividad de escaneo en un archivo de registro.

echo "Scan Log - $(date)" > /home/labex/project/scan_log.txt
echo "Purpose: Learning Nmap host discovery techniques" >> /home/labex/project/scan_log.txt
echo "Target: 127.0.0.1" >> /home/labex/project/scan_log.txt
echo "Scans performed:" >> /home/labex/project/scan_log.txt
echo "1. Basic ping scan: nmap -sn 127.0.0.1" >> /home/labex/project/scan_log.txt
echo "2. Port scan on port 8000: nmap -p 8000 127.0.0.1" >> /home/labex/project/scan_log.txt
echo "3. Service version detection: nmap -p 8000 -sV 127.0.0.1" >> /home/labex/project/scan_log.txt
echo "4. Comprehensive scan: nmap -sS -sV -O -p 1-1000 127.0.0.1" >> /home/labex/project/scan_log.txt

Revisemos nuestro registro de escaneo para ver lo que hemos registrado.

cat /home/labex/project/scan_log.txt

Este registro te ayuda a mantener un registro de tus actividades de escaneo, lo cual es crucial para la documentación y auditoría de seguridad.

Resumen

En este laboratorio, has aprendido los fundamentos del escaneo de redes y la detección de hosts utilizando Nmap, una herramienta poderosa en el arsenal de un profesional de ciberseguridad. Comenzaste por entender Nmap y configurar un entorno de prueba con un simple servidor HTTP. Luego, exploraste diversas técnicas de escaneo, desde la detección básica de hosts hasta el escaneo avanzado de puertos y la detección de servicios.

Específicamente, has aprendido a configurar un entorno de prueba, realizar una detección básica de hosts, identificar puertos abiertos y servicios, utilizar técnicas de escaneo avanzadas, guardar los resultados del escaneo, crear informes resumidos y seguir las mejores prácticas para un escaneo responsable. Estas habilidades son una base sólida para la evaluación y el monitoreo de la seguridad de redes. A medida que avances en tu viaje de ciberseguridad, puedes construir sobre estos conceptos básicos para desarrollar estrategias más sofisticadas. Recuerda, el escaneo de redes siempre debe utilizarse de manera responsable y ética, con la autorización adecuada y en cumplimiento de las normativas.