Realizar escaneo de red sigiloso con Nmap

NmapNmapBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo realizar un escaneo de red furtivo utilizando Nmap, una poderosa herramienta de código abierto (open - source) para la detección de redes y auditoría de seguridad. El escaneo furtivo es crucial en ciberseguridad, ya que permite a los profesionales de la seguridad identificar vulnerabilidades de red mientras se reduce el riesgo de ser detectados.

Explorará diferentes técnicas de escaneo de Nmap, comenzando por los escaneos furtivos 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 o alertar a posibles amenazas en la red. Al final del laboratorio, adquirirá experiencia práctica en el escaneo furtivo de Nmap y sabrá cómo aplicar estas técnicas en evaluaciones de seguridad del mundo real.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/port_scanning("Port Scanning Methods") nmap/NmapGroup -.-> nmap/scan_types("Scan Types and Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/syn_scan("SYN Scan") nmap/NmapGroup -.-> nmap/stealth_scanning("Stealth and Covert Scanning") subgraph Lab Skills nmap/installation -.-> lab-415933{{"Realizar escaneo de red sigiloso con Nmap"}} nmap/port_scanning -.-> lab-415933{{"Realizar escaneo de red sigiloso con Nmap"}} nmap/scan_types -.-> lab-415933{{"Realizar escaneo de red sigiloso con Nmap"}} nmap/target_specification -.-> lab-415933{{"Realizar escaneo de red sigiloso con Nmap"}} nmap/syn_scan -.-> lab-415933{{"Realizar escaneo de red sigiloso con Nmap"}} nmap/stealth_scanning -.-> lab-415933{{"Realizar escaneo de red sigiloso con Nmap"}} end

Configuración de tu entorno de prueba

En este paso, prepararemos tu entorno para la auditoría de red furtiva. Configuraremos un servidor web simple que actuará como el objetivo de nuestro escaneo. Tener un objetivo controlado de este tipo es crucial, ya que te permite practicar técnicas de escaneo furtivo sin afectar a 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 hasta tu espacio de trabajo. Tu espacio de trabajo es un directorio específico donde guardarás todos los archivos relacionados con tu proyecto. Para hacer esto, utiliza el siguiente comando:

cd /home/labex/project

El comando cd significa "cambiar directorio". Le dice al sistema que te mueva desde 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. Utiliza 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 hacia dentro de él. De esta manera, cualquier archivo que crees se almacenará dentro del directorio stealth. Utiliza el comando cd nuevamente:

cd /home/labex/project/stealth

A continuación, crearemos un archivo HTML simple. HTML (Hypertext Markup Language) 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. Utiliza el siguiente comando para crear el archivo:

echo "Robotics server running..." > index.html

El comando echo imprime el texto "Robotics server running..." 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 (Domain Name System) es como una guía telefónica para Internet. Traduce nombres de dominio (como google.com) a direcciones IP. Al configurar un resolutor DNS, nos aseguramos de que nuestro sistema pueda conectarse correctamente a otras redes. Utiliza el siguiente comando:

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

El comando sudo te da privilegios de administrador para realizar acciones que requieren permisos especiales. 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 utilizando el comando nc (netcat). Netcat es una utilidad de red versátil que se puede utilizar para diversas tareas, incluyendo la configuración de un servidor simple. Este servidor escuchará en el puerto 8080 y servirá el archivo HTML que creamos anteriormente. Utiliza el siguiente comando:

nc -lvp 8080 < index.html &

Desglosemos este comando:

  • nc es la utilidad netcat para conexiones de red. Te permite crear conexiones entre diferentes puntos finales de red.
  • -l le dice 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 conecte a nuestro servidor, recibirá el contenido del archivo index.html.
  • & ejecuta el proceso en segundo plano. De esta manera, puedes continuar utilizando la terminal para ejecutar otros comandos mientras el servidor está en funcionamiento.

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

Listening on 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 furtivo.

Realización de escaneos furtivos básicos con Nmap

En este paso, aprenderemos cómo realizar un escaneo furtivo básico utilizando Nmap. Pero primero, entendamos qué es un escaneo furtivo. El escaneo furtivo, también conocido como escaneo SYN, es una técnica realmente útil en el mundo de la seguridad de redes. Cuando intentas averiguar qué puertos están abiertos en un sistema objetivo, un escaneo furtivo puede ayudarte a hacerlo mientras se reduce la posibilidad de ser detectado por el objetivo. Esto es importante porque si el sistema objetivo detecta tu escaneo, podría tomar medidas defensivas o registrar tu actividad.

Ahora, antes de comenzar el escaneo, debemos asegurarnos de estar en el lugar correcto. Navegaremos de nuevo a nuestro espacio de trabajo principal. Esto es como volver a tu base donde se almacenan todos los archivos relacionados con tu proyecto. Para hacer esto, utilizaremos el siguiente comando:

cd /home/labex/project

Comprensión del escaneo furtivo

Para comprender completamente cómo funciona un escaneo furtivo, primero debemos conocer las conexiones TCP tradicionales. Una conexión TCP tradicional sigue un proceso de handshake 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 "Hola, 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 furtivo no sigue todo este proceso. En cambio:

  1. El cliente envía un paquete SYN al servidor, igual que en una conexión normal.
  2. Si el puerto en el 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 (restablecer). Esto evita que la conexión se establezca por completo.

La razón por la que esto es útil es que el sistema objetivo es menos probable que registre este tipo de interacción porque la conexión nunca se establece por completo. Entonces, es una forma astuta de averiguar qué puertos están abiertos sin dejar una gran pista.

Ejecución de un escaneo furtivo

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

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

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

  • sudo se utiliza porque los escaneos furtivos requieren acceso a sockets sin procesar (raw socket access). El acceso a sockets sin procesar es una forma de bajo nivel de interactuar con la red y necesita permisos especiales. Entonces, usamos sudo para ejecutar el comando con privilegios de administrador.
  • nmap es la herramienta de escaneo que estamos utilizando. Es una herramienta muy popular y poderosa para la exploración de redes y la auditoría de seguridad.
  • -sS especifica que queremos realizar un escaneo furtivo SYN. Esto le dice a Nmap que utilice la técnica de escaneo furtivo que acabamos de aprender.
  • -p 8080 le dice a Nmap que solo escanee el puerto 8080. A veces, es posible que desees escanear múltiples puertos, pero en este caso, solo estamos interesados en 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, utilizaremos el siguiente comando:

cat /home/labex/project/stealth_scan.txt

Cuando ejecutes 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 furtivo fue exitoso en detectar el servidor web que configuramos en el Paso 1.

La ventaja de utilizar esta técnica de escaneo es que nos da resultados precisos. Al mismo tiempo, es menos intrusiva que un escaneo de conexión TCP completo. Un escaneo de conexión TCP completo pasa por todo el handshake de tres vías, lo cual es más probable que sea detectado por el sistema objetivo y active alertas en los sistemas monitoreados. Entonces, el escaneo furtivo es una gran opción cuando quieres ser más discreto.

Técnicas avanzadas de escaneo furtivo

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

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

cd /home/labex/project

Comprensión del Idle Scan

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

Desglosemos el proceso de un Idle Scan 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 IP del zombie. La secuencia de ID 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 en el 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 estaba esperando este paquete SYN - ACK, enviará un paquete RST de vuelta al objetivo. Un paquete RST se utiliza para restablecer una conexión TCP.
  5. Luego, el escáner sonda al zombie nuevamente. Comprueba si la secuencia de ID IP del zombie ha aumentado.
  6. Si la secuencia de ID IP ha incrementado, indica que el puerto en el 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 que proviene del zombie, no del escáner real. Por lo tanto, es muy difícil para el objetivo detectar que está siendo escaneado.

Ejecución de un Idle Scan

Ahora, ejecutemos un Idle Scan utilizando Nmap. En una situación real, utilizarías un host zombie externo. Pero para este laboratorio, simularemos el proceso utilizando 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 procesar (raw socket access) para realizar el Idle Scan. El acceso a sockets sin procesar 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 Idle Scan y utilizando 127.0.0.1 (que es el localhost) como el host zombie.
  • localhost es el objetivo que queremos escanear.
  • -p 8080 le dice 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. Utiliza el siguiente comando para ver el contenido del archivo de salida:

cat /home/labex/project/idle_scan.txt

Puedes ver 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á omitindo el Idle Scan. Esto se debe a que estás tratando de utilizar tu propia máquina como tanto el zombie como el objetivo. En un escenario real donde tengas hosts separados, esta técnica sería muy efectiva para el escaneo furtivo.

Aunque tenemos esta limitación en nuestro entorno de laboratorio, este ejercicio aún te muestra cómo usar el comando de Idle Scan. 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 un máximo de sigilo. Hace que sea extremadamente difícil para el objetivo rastrear el escaneo de vuelta al escáner real.

Comprensión de la salida del escaneo y aplicaciones prácticas

En este último paso, nos centraremos en aprender cómo interpretar los resultados del escaneo que has obtenido y entender cómo se aplican estos resultados en escenarios reales de ciberseguridad. Este conocimiento es crucial porque te permite utilizar eficazmente las técnicas de escaneo furtivo cuando te enfrentas a desafíos de seguridad reales.

Primero, debemos navegar a tu espacio de trabajo. Tu espacio de trabajo es como un área dedicada donde se almacenan todos los archivos relacionados con tu proyecto. Para llegar allí, utilizaremos el comando cd. El comando cd significa "change directory" (cambiar de directorio) y se utiliza para moverse de un directorio a otro en el sistema de archivos. Ejecuta el siguiente comando en tu terminal:

cd /home/labex/project

Comparación de diferentes tipos de escaneo

Ahora, comparemos las salidas de los diferentes tipos de escaneo que has realizado. Al comparar estas salidas, puedes ver las diferencias en cómo cada tipo de escaneo revela información sobre la red objetivo.

El siguiente comando mostrará los resultados del escaneo furtivo. El comando echo se utiliza para imprimir texto en la terminal, y el comando cat se utiliza para mostrar el contenido de un archivo. Aquí, primero imprimimos un encabezado para indicar que estos son los resultados del escaneo furtivo y luego mostramos el contenido real del archivo stealth_scan.txt:

echo "=== Stealth Scan Results ===" && cat /home/labex/project/stealth_scan.txt

De manera similar, este comando mostrará los resultados del escaneo Idle:

echo "=== Idle Scan Results ===" && cat /home/labex/project/idle_scan.txt

Interpretación de los estados de los puertos

Cuando analices los resultados del escaneo, notarás que Nmap informa los puertos en diferentes estados. Comprender estos estados es fundamental para entender los datos del escaneo.

  1. open (abierto) - Esto significa que un servicio está aceptando conexiones activamente en este puerto. Por ejemplo, si un servidor web está funcionando en un puerto en particular, ese puerto se reportará como open.
  2. closed (cerrado) - El puerto es accesible, pero no hay ningún servicio escuchando en él. Es como una puerta que está desbloqueada pero no hay nadie dentro.
  3. filtered (filtrado) - Un firewall u otro obstáculo de red está bloqueando el puerto. Es como si hubiera un guardia de seguridad impidiendo el acceso a ese puerto.
  4. unfiltered (no filtrado) - El puerto es accesible, pero Nmap no puede determinar si está abierto o cerrado. Es como mirar una puerta y no poder saber si hay alguien dentro.
  5. open|filtered (abierto o filtrado) - Nmap no puede determinar si el puerto está abierto o filtrado. Hay alguna incertidumbre sobre el estado del puerto.
  6. closed|filtered (cerrado o filtrado) - Nmap no puede determinar si el puerto está cerrado o filtrado.

En tu escaneo furtivo, el puerto 8080 se reportó como open. Esto indica que tu servidor web está aceptando conexiones activamente en ese puerto, lo que significa que está listo para servir páginas web u otros servicios a los clientes.

Aplicaciones prácticas

Comprender cómo interpretar estos resultados tiene varias aplicaciones prácticas en ciberseguridad:

  1. Identificar brechas de seguridad: Los puertos abiertos pueden representar posibles puntos de entrada para los atacantes. Si hay puertos abiertos innecesarios, los atacantes podrían usarlos para obtener acceso no autorizado a tu sistema.
  2. Verificar la configuración del firewall: Los puertos filtrados indican que las reglas del firewall están bloqueando adecuadamente el acceso. Esto te ayuda a asegurarte de que tu red está protegida del tráfico no deseado.
  3. Realizar auditorías de seguridad: El escaneo regular ayuda a garantizar que solo estén abiertos los puertos necesarios. Al escanear periódicamente tu red, puedes detectar cualquier nuevo puerto abierto que pueda representar un riesgo de seguridad.
  4. Preparar planes de remediación: Basándote en los resultados del escaneo, puedes desarrollar planes para abordar los problemas de seguridad. Por ejemplo, si encuentras un puerto abierto innecesario, puedes cerrarlo.

Ahora, creemos un informe sencillo que resuma tus hallazgos y recomendaciones. Un informe es una forma útil de documentar lo que has descubierto y qué acciones se deben tomar.

cat << EOF > /home/labex/project/scan_report.txt
## Network Scan Report

### Findings:
- Port 8080 is open and running an HTTP proxy service
- This port was successfully detected using stealth scanning techniques

### Recommendations:
- Ensure this port is intended to be open
- Implement proper access controls if this service is necessary
- Close the port if the service is not required
- Regularly scan the network to detect changes in the network footprint
EOF

Para ver tu informe, utiliza nuevamente el comando cat:

cat /home/labex/project/scan_report.txt

Este formato de informe es útil para documentar tus hallazgos y proporcionar recomendaciones prácticas basadas en los resultados del escaneo. Te ayuda a comunicar el estado de seguridad de tu red a otros y a tomar las acciones adecuadas.

Limpieza

Antes de terminar, debemos limpiar nuestro entorno. En el Paso 1, iniciamos un servidor web, y ahora debemos detenerlo. Utilizaremos el comando pkill, que se utiliza para terminar procesos según su nombre u otros criterios. La opción -f le dice a pkill que busque en la línea de comandos completa de los procesos.

pkill -f "nc -lvp 8080"

Este comando termina el proceso de netcat que estaba ejecutando nuestro servidor web en el puerto 8080.

Ahora has completado una exploración integral de las técnicas de escaneo furtivo con Nmap, desde la configuración básica hasta los métodos avanzados y la aplicación práctica de los resultados.

Resumen

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

A continuación, profundizaste en métodos de escaneo furtivo más avanzados, como el Idle Scan, que puede ocultar el origen del escaneo. Aunque su aplicación fue limitada en el laboratorio, comprendiste cómo funciona en escenarios del mundo real. Finalmente, aprendiste a interpretar los resultados del escaneo y crear informes prácticos, lo que te permite identificar brechas de seguridad y desarrollar planes de remediación. Dominar estas técnicas de escaneo furtivo te capacita para realizar evaluaciones exhaustivas de la red y abordar proactivamente las amenazas potenciales.