Realizar Escaneos de Red Sigilosos con Nmap

NmapBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás a realizar escaneos de red sigilosos utilizando Nmap, una poderosa herramienta de código abierto para el descubrimiento de redes y la auditoría de seguridad. Los escaneos sigilosos son cruciales en la ciberseguridad, permitiendo a los profesionales de la seguridad identificar vulnerabilidades de red mientras reducen el riesgo de detección.

Explorarás diferentes técnicas de escaneo de Nmap, comenzando con escaneos sigilosos básicos y avanzando hacia métodos encubiertos más sofisticados. Estas habilidades son esenciales para los profesionales de la seguridad que realizan auditorías de red sin activar los sistemas de seguridad existentes ni alertar a posibles amenazas en la red. Al final del laboratorio, obtendrás experiencia práctica con los escaneos sigilosos de Nmap y sabrás cómo aplicar estas técnicas en evaluaciones de seguridad del 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 93%. Ha recibido una tasa de reseñas positivas del 98% por parte de los estudiantes.

Configuración de tu Entorno de Pruebas

En este paso, prepararemos tu entorno para la auditoría de red sigilosa. Configuraremos un servidor web simple que actuará como objetivo para nuestros escaneos. Tener un objetivo controlado como este es crucial porque te permite practicar técnicas de escaneo sigiloso sin afectar sistemas del mundo real.

Primero, necesitamos abrir una terminal. La terminal es como una interfaz de línea de comandos donde puedes escribir comandos para interactuar con tu computadora. Una vez que hayas abierto la terminal, navegarás a tu espacio de trabajo. Tu espacio de trabajo es un directorio específico donde guardarás todos tus archivos relacionados con el proyecto. Para hacerlo, usa el siguiente comando:

cd /home/labex/project

El comando cd significa "cambiar de directorio". Le indica al sistema que se mueva de tu ubicación actual al directorio especificado, que en este caso es /home/labex/project.

Ahora que estás en tu espacio de trabajo, crearemos un nuevo directorio llamado stealth. Los directorios son como carpetas en tu computadora, y crear un directorio dedicado te ayuda a organizar tu trabajo. Usa el siguiente comando para crear el directorio:

mkdir -p /home/labex/project/stealth

El comando mkdir se utiliza para crear un nuevo directorio. La opción -p asegura que si algún directorio intermedio en la ruta no existe, también se creará.

Después de crear el directorio, necesitas navegar dentro de él. De esta manera, cualquier archivo que crees se almacenará dentro del directorio stealth. Usa el comando cd nuevamente:

cd /home/labex/project/stealth

A continuación, crearemos un archivo HTML simple. HTML (Lenguaje de Marcado de Hipertexto) es el lenguaje estándar para crear páginas web. Este archivo será servido por nuestro servidor web, simulando un servicio web del mundo real. Usa el siguiente comando para crear el archivo:

echo "Servidor de robótica en funcionamiento..." > index.html

El comando echo imprime el texto "Servidor de robótica en funcionamiento..." en la terminal. El símbolo > redirige esa salida y la escribe en un nuevo archivo llamado index.html.

Ahora, necesitamos configurar un resolutor DNS. DNS (Sistema de Nombres de Dominio) es como una guía telefónica para internet. Traduce nombres de dominio (como google.com) a direcciones IP. Al configurar un resolutor DNS, aseguramos que nuestro sistema pueda conectarse correctamente a otras redes. Usa el siguiente comando:

sudo sh -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'

El comando sudo te otorga privilegios administrativos para realizar acciones que requieren permisos especiales. El sh -c se utiliza para ejecutar un comando de shell. Estamos escribiendo la línea "nameserver 8.8.8.8" en el archivo /etc/resolv.conf, que es donde el sistema almacena la configuración DNS.

Finalmente, iniciaremos un servidor web simple usando el comando nc (netcat). Netcat es una utilidad de red versátil que se puede usar para diversas tareas, incluida la configuración de un servidor simple. Este servidor escuchará en el puerto 8080 y servirá el archivo HTML que creamos anteriormente. Usa el siguiente comando:

nc -lvp 8080 < index.html &

Analicemos este comando:

  • nc es la utilidad netcat para conexiones de red. Te permite crear conexiones entre diferentes puntos finales de red.
  • -l le indica a netcat que escuche conexiones entrantes. En lugar de intentar conectarse a otro servidor, esperará a que otros se conecten a él.
  • -v habilita la salida detallada. Esto significa que netcat proporcionará información más detallada sobre lo que está haciendo.
  • -p 8080 especifica el puerto en el que escuchar. Los puertos son como puertas en una computadora, y en este caso, estamos abriendo el puerto 8080 para conexiones entrantes.
  • < index.html alimenta el contenido de index.html a cualquier conexión. Cuando un cliente se conecta a nuestro servidor, recibirá el contenido del archivo index.html.
  • & ejecuta el proceso en segundo plano. De esta manera, puedes seguir usando la terminal para ejecutar otros comandos mientras el servidor está en funcionamiento.

Después de ejecutar el comando, deberías ver una salida que indica que el servidor está escuchando en el puerto 8080:

Escuchando en 0.0.0.0 8080

Ahora tienes un servidor web en funcionamiento en el puerto 8080 que actuará como tu objetivo para los ejercicios de escaneo sigiloso.

Realizando Escaneos Sigilosos Básicos con Nmap

En este paso, aprenderemos a realizar un escaneo sigiloso básico con Nmap. Pero primero, entendamos qué es un escaneo sigiloso. El escaneo sigiloso, también conocido como escaneo SYN, es una técnica muy útil en el mundo de la seguridad de redes. Cuando intentas averiguar qué puertos están abiertos en un sistema objetivo, un escaneo sigiloso puede ayudarte a hacerlo mientras reduces las posibilidades de ser detectado por el objetivo. Esto es importante porque si el sistema objetivo detecta tu escaneo, podría tomar acciones defensivas o registrar tu actividad.

Ahora, antes de comenzar el escaneo, necesitamos asegurarnos de estar en el lugar correcto. Navegaremos de regreso a nuestro espacio de trabajo principal. Esto es como volver a tu base donde se almacenan todos tus archivos relacionados con el proyecto. Para hacerlo, usaremos el siguiente comando:

cd /home/labex/project

Entendiendo el Escaneo Sigiloso

Para comprender completamente cómo funciona un escaneo sigiloso, primero debemos conocer las conexiones TCP tradicionales. Una conexión TCP tradicional sigue un proceso de saludo de tres vías. Este es un conjunto de pasos que el cliente y el servidor realizan para establecer una conexión.

  1. El cliente envía un paquete SYN (sincronizar) al servidor. Esto es como si el cliente dijera "Oye, quiero iniciar una conversación".
  2. Si el servidor está listo para hablar, responde con un paquete SYN-ACK (sincronizar-confirmar). Es como si el servidor dijera "Claro, estoy listo para hablar".
  3. Finalmente, el cliente envía un paquete ACK (confirmar) para completar la conexión. Esto es el cliente diciendo "Genial, empecemos la conversación".

Sin embargo, un escaneo sigiloso no sigue este proceso completo. En su lugar:

  1. El cliente envía un paquete SYN al servidor, al igual que en una conexión normal.
  2. Si el puerto del servidor está abierto, el servidor responde con un paquete SYN-ACK.
  3. Pero aquí está la diferencia. En lugar de enviar un paquete ACK para completar la conexión, el cliente envía un paquete RST (reiniciar). Esto detiene que la conexión se establezca completamente.

La razón por la que esto es útil es que es menos probable que el sistema objetivo registre este tipo de interacción porque la conexión nunca se establece completamente. Por lo tanto, es una forma sigilosa de descubrir qué puertos están abiertos sin dejar una gran huella.

Ejecutando un Escaneo Sigiloso

Ahora que entendemos cómo funciona un escaneo sigiloso, ejecutemos uno contra nuestro servidor web local. Usaremos el siguiente comando Nmap:

sudo nmap -sS -p 8080 localhost > /home/labex/project/stealth_scan.txt

Analicemos este comando para que sepas exactamente qué hace cada parte:

  • sudo se usa porque los escaneos sigilosos requieren acceso a sockets sin formato. El acceso a sockets sin formato es una forma de bajo nivel de interactuar con la red, y necesita permisos especiales. Por lo tanto, usamos sudo para ejecutar el comando con privilegios administrativos.
  • nmap es la herramienta de escaneo que estamos usando. Es una herramienta muy popular y potente para la exploración de redes y la auditoría de seguridad.
  • -sS especifica que queremos realizar un escaneo sigiloso SYN. Esto le indica a Nmap que utilice la técnica de escaneo sigiloso que acabamos de aprender.
  • -p 8080 le indica a Nmap que solo escanee el puerto 8080. A veces, es posible que desees escanear varios puertos, pero en este caso, solo nos interesa el puerto 8080.
  • localhost es el objetivo de nuestro escaneo. Dado que estamos ejecutando esto en nuestra máquina local, localhost se refiere a nuestra propia computadora.
  • > /home/labex/project/stealth_scan.txt redirige la salida del escaneo a un archivo de texto. De esta manera, podemos guardar los resultados y revisarlos más tarde.

Después de ejecutar el escaneo, queremos ver los resultados. Para hacer esto, usaremos el siguiente comando:

cat /home/labex/project/stealth_scan.txt

Al ejecutar este comando, deberías ver una salida similar a esta:

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

PORT     STATE SERVICE
8080/tcp open  http-proxy

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

Observa que Nmap identificó correctamente que el puerto 8080 está abierto. Esto significa que nuestro escaneo sigiloso tuvo éxito en la detección del servidor web que configuramos en el Paso 1.

Entendiendo los Estados de los Puertos

Al analizar los resultados del escaneo, notarás que Nmap reporta los puertos en diferentes estados:

  1. open - Un servicio está aceptando activamente conexiones en este puerto.
  2. closed - El puerto es accesible, pero ningún servicio está escuchando.
  3. filtered - Un firewall u obstáculo de red está bloqueando el puerto.
  4. unfiltered - El puerto es accesible, pero Nmap no puede determinar si está abierto o cerrado.
  5. open|filtered - Nmap no puede determinar si el puerto está abierto o filtrado.

En nuestro escaneo, el puerto 8080 se reporta como open, lo que indica que nuestro servidor web está aceptando activamente conexiones.

La ventaja de usar el escaneo sigiloso es que nos proporciona resultados precisos mientras es menos intrusivo que un escaneo de conexión TCP completo. Un escaneo de conexión TCP completo pasa por todo el saludo de tres vías, lo que es más probable que sea notado por el sistema objetivo y active alertas en sistemas monitoreados.

Técnicas Avanzadas de Escaneo Covert

En este paso, exploraremos técnicas de escaneo más avanzadas que ofrecen un nivel aún mayor de sigilo. Estas técnicas son cruciales en la ciberseguridad porque te permiten recopilar información sobre una red objetivo sin ser detectado fácilmente. Una técnica poderosa es el Escaneo Ocioso, también conocido como Escaneo Zombie. Este método te permite escanear un objetivo enmascarando tu identidad detrás de otro host.

Antes de comenzar, es importante asegurarte de estar en tu espacio de trabajo. Aquí es donde se ejecutarán todos tus archivos y comandos relacionados con el proyecto. Para navegar a tu espacio de trabajo, ejecuta el siguiente comando en tu terminal:

cd /home/labex/project

Entendiendo el Escaneo Ocioso

El Escaneo Ocioso es una de las técnicas de escaneo más sigilosas disponibles en Nmap. ¿Pero cómo funciona? Bueno, utiliza un host de terceros, que llamamos "zombie", para llevar a cabo el escaneo. Esto hace que parezca que el escaneo proviene del host zombie en lugar de ti.

Desglosemos el proceso de un Escaneo Ocioso paso a paso:

  1. Primero, el escáner envía una sonda al host zombie. Esta sonda ayuda al escáner a determinar la secuencia actual de ID de IP del zombie. La secuencia de ID de IP es un número único que el host asigna a cada paquete IP que envía.
  2. A continuación, el escáner envía un paquete SYN al objetivo. Sin embargo, establece la dirección IP de origen de este paquete como la dirección IP del zombie. Un paquete SYN se utiliza para iniciar una conexión TCP.
  3. Si el puerto del objetivo está abierto, el objetivo responderá con un paquete SYN-ACK. Este paquete se envía al zombie porque esa es la dirección IP de origen que vio en el paquete SYN.
  4. El zombie, que no esperaba este paquete SYN-ACK, enviará un paquete RST de regreso al objetivo. Un paquete RST se utiliza para restablecer una conexión TCP.
  5. Luego, el escáner vuelve a sondear al zombie. Verifica si la secuencia de ID de IP del zombie ha aumentado.
  6. Si la secuencia de ID de IP ha aumentado, indica que el puerto del objetivo está abierto. Esto se debe a que el zombie envió un paquete RST en respuesta al SYN-ACK del objetivo.

La belleza de esta técnica es su sigilo. El objetivo solo ve la comunicación proveniente del zombie, no del escáner real. Por lo tanto, es muy difícil para el objetivo detectar que está siendo escaneado.

Ejecutando un Escaneo Ocioso

Ahora, ejecutemos un escaneo ocioso con Nmap. En una situación del mundo real, usarías un host zombie externo. Pero para este laboratorio, simularemos el proceso usando tu máquina local.

Ejecuta el siguiente comando en tu terminal:

sudo nmap -sI 127.0.0.1 localhost -p 8080 > /home/labex/project/idle_scan.txt

Entendamos cada parte de este comando:

  • sudo se utiliza porque Nmap necesita acceso a sockets sin formato para realizar el escaneo ocioso. El acceso a sockets sin formato permite a Nmap crear y enviar paquetes IP personalizados, lo cual es necesario para este tipo de escaneo.
  • nmap es la conocida herramienta de escaneo que estamos utilizando para esta tarea.
  • -sI 127.0.0.1 especifica que estamos realizando un escaneo ocioso y utilizando 127.0.0.1 (que es el localhost) como host zombie.
  • localhost es el objetivo que queremos escanear.
  • -p 8080 le indica a Nmap que solo escanee el puerto 8080 en el objetivo.
  • > /home/labex/project/idle_scan.txt redirige la salida del escaneo a un archivo de texto. De esta manera, podemos revisar fácilmente los resultados más tarde.

Después de ejecutar el escaneo, examinemos los resultados. Usa el siguiente comando para ver el contenido del archivo de salida:

cat /home/labex/project/idle_scan.txt

Es posible que veas una salida similar a esta:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-25 12:10 UTC
Idle scan using zombie 127.0.0.1 (127.0.0.1:80); Class: Incremental
Skipping Idle Scan against localhost (127.0.0.1) -- you can't idle scan your own machine (localhost).
Nmap scan report for localhost (127.0.0.1)
Host is up.

PORT     STATE   SERVICE
8080/tcp unknown http-proxy

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

Observa que Nmap informa que está omitiendo el escaneo ocioso. Esto se debe a que estás intentando usar tu propia máquina como zombie y objetivo. En un escenario del mundo real con hosts separados, esta técnica sería muy efectiva para el escaneo encubierto.

Aunque tenemos esta limitación en nuestro entorno de laboratorio, este ejercicio aún te muestra cómo usar el comando de escaneo ocioso. En la práctica, elegirías un host diferente como zombie, y el escaneo se ejecutaría sin este mensaje de advertencia.

Esta técnica avanzada es muy valiosa cuando necesitas el máximo sigilo. Hace que sea extremadamente difícil para el objetivo rastrear el escaneo de regreso al escáner real.

Comparando Resultados de Escaneo

Comparemos las salidas de ambos tipos de escaneo para ver las diferencias:

echo "=== Resultados del Escaneo Sigiloso ===" && cat /home/labex/project/stealth_scan.txt
echo "=== Resultados del Escaneo Ocioso ===" && cat /home/labex/project/idle_scan.txt

Ambos escaneos detectaron correctamente el puerto 8080 abierto, pero el escaneo ocioso muestra información adicional sobre la técnica de escaneo utilizada.

Limpieza

Antes de finalizar, limpiemos nuestro entorno deteniendo el servidor web:

pkill -f "nc -lvp 8080"

Esto termina el proceso netcat que ejecuta nuestro servidor web en el puerto 8080.

Resumen

En este laboratorio, has aprendido a realizar escaneos de red sigilosos utilizando Nmap, una habilidad crucial para los profesionales de la ciberseguridad. Empezaste configurando un entorno de prueba con un servidor web simple para practicar los escaneos en un escenario controlado. Luego, exploraste el escaneo sigiloso básico con la técnica de escaneo SYN, que ofrece resultados precisos y reduce el riesgo de detección, lo que lo hace útil para auditorías de seguridad sin alertar a los sistemas monitoreados.

Finalmente, te adentraste en métodos de escaneo encubierto más avanzados, como el Escaneo Ocioso, que puede ocultar el origen del escaneo. Aunque su aplicación estuvo limitada en el entorno del laboratorio, aprendiste cómo funciona en escenarios del mundo real. También practicaste la interpretación de los resultados de los escaneos comprendiendo los diferentes estados de los puertos y comparando las salidas de diferentes técnicas de escaneo. Dominar estas técnicas de escaneo sigiloso te equipa para realizar evaluaciones exhaustivas de redes en el trabajo de ciberseguridad.