Realización de escaneos Nmap SYN para la seguridad de la red

NmapBeginner
Practicar Ahora

Introducción

En este laboratorio, aprenderás sobre el escaneo SYN de Nmap, una técnica clave en seguridad de redes para la exploración sigilosa de puertos. El escaneo SYN identifica de manera eficiente los puertos abiertos en un sistema objetivo sin establecer completamente una conexión TCP, lo que lo hace menos detectable que los métodos tradicionales. Esto es crucial para los profesionales de seguridad para evaluar las vulnerabilidades de la red y mejorar las defensas.

Al final de este laboratorio, entenderás cómo realizar escaneos SYN, interpretar sus resultados y reconocer su importancia en las evaluaciones de seguridad de redes.

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

Crear un servicio de destino para el escaneo

En este paso, vamos a crear un entorno controlado donde puedas practicar el escaneo SYN de Nmap. Antes de comenzar a escanear cualquier red o sistema, es crucial entender que el escaneo ético requiere una autorización adecuada. Para evitar cualquier problema legal, configuraremos nuestro propio servicio que podamos escanear de forma segura.

  1. Primero, necesitas abrir una terminal. Una terminal es una interfaz basada en texto que te permite interactuar con el sistema operativo de tu computadora escribiendo comandos. Una vez que hayas abierto la terminal, navegarás hasta el directorio de tu proyecto. El directorio de proyecto es donde se almacenarán todos los archivos relacionados con este experimento. Utiliza el siguiente comando para cambiar el directorio actual al directorio de proyecto:

    cd /home/labex/project
  2. Ahora, utilizaremos Python, un lenguaje de programación popular, para crear un servidor HTTP simple. Un servidor HTTP es un software que puede servir páginas web a clientes, como navegadores web. Python tiene capacidades integradas que facilitan la configuración de dicho servidor. Utilizaremos este servidor como objetivo para nuestro escaneo SYN de Nmap. Ejecuta el siguiente comando en la terminal:

    python -m http.server --bind localhost 8080 &

    Este comando inicia un servidor web simple en el puerto 8080. Un puerto es un punto final de comunicación en la red de una computadora. Diferentes servicios utilizan diferentes puertos para comunicarse. El & al final del comando ejecuta el servidor en segundo plano. Esto significa que el servidor seguirá funcionando y podrás continuar utilizando la misma ventana de terminal para ejecutar otros comandos.

  3. Después de iniciar el servidor, necesitamos verificar que realmente esté en funcionamiento. Podemos hacer esto comprobando las conexiones de red abiertas en nuestro sistema. El comando ss es una herramienta que puede mostrar estadísticas de sockets, lo que incluye información sobre las conexiones de red abiertas. Lo utilizaremos para comprobar si nuestro servidor está escuchando en el puerto 8080. Ejecuta el siguiente comando:

    ss -tulwn | grep 8080

    El | es un operador de tubería que toma la salida del comando ss y la utiliza como entrada para el comando grep. El comando grep busca la cadena 8080 en la salida del comando ss. Si el servidor está en funcionamiento, deberías ver una salida similar a esta:

    tcp   LISTEN 0      1            0.0.0.0:8080       0.0.0.0:*

    Esta salida indica que el servidor está escuchando en el puerto 8080, lo que significa que está funcionando correctamente y listo para ser escaneado.

Comprender y realizar un escaneo SYN de Nmap

Ahora que tenemos un servicio objetivo funcionando, es hora de profundizar en los escaneos SYN. Los escaneos SYN son una parte crucial de las pruebas de seguridad de red, ya que nos permiten descubrir los puertos abiertos en un sistema objetivo. En esta sección, aprenderemos cómo funcionan los escaneos SYN y luego utilizaremos Nmap, una poderosa herramienta de escaneo de red, para realizar un escaneo SYN contra nuestro servidor HTTP.

¿Qué es un escaneo SYN?

Antes de comenzar el escaneo real, es esencial entender el mecanismo subyacente de un escaneo SYN. Para ello, primero veamos cómo se establece una conexión TCP normal.

Conexión TCP normal

En una conexión TCP normal, se lleva a cabo un handshake de tres vías. Este es un proceso fundamental para establecer una conexión confiable entre un cliente y un servidor:

  • Paso 1: Paquete SYN desde el cliente
    El cliente inicia la conexión enviando un paquete SYN (sincronizar) al servidor. Este paquete es como una solicitud para iniciar una conversación, preguntando al servidor si está listo para comunicarse.
  • Paso 2: Paquete SYN - ACK desde el servidor
    Al recibir el paquete SYN, si el servidor está disponible y dispuesto a comunicarse, responde con un paquete SYN - ACK (sincronizar - reconocer). Este paquete reconoce la solicitud del cliente y también indica que el servidor está listo para iniciar la conexión.
  • Paso 3: Paquete ACK desde el cliente
    Finalmente, el cliente envía un paquete ACK (reconocer) para completar el handshake de tres vías. Después de este paso, la conexión TCP está completamente establecida y se puede intercambiar datos entre el cliente y el servidor.

Proceso de escaneo SYN

Un escaneo SYN, por otro lado, tiene un enfoque diferente:

  • Paso 1: Paquete SYN desde Nmap
    Nmap, nuestra herramienta de escaneo, envía el paquete SYN inicial al puerto objetivo. Esto es similar al primer paso en una conexión TCP normal.
  • Paso 2: Respuesta SYN - ACK desde el objetivo
    Si el puerto objetivo está abierto, responderá con un paquete SYN - ACK, igual que en una conexión TCP normal.
  • Paso 3: Terminación de la conexión por Nmap
    En lugar de enviar el último paquete ACK para completar el handshake, Nmap termina la conexión. Esto hace que el escaneo sea menos detectable porque nunca se establece la conexión completa. Además, es más rápido que un escaneo de conexión completo, que completa todo el handshake de tres vías para cada puerto que se está escaneando.

Realización del escaneo SYN

Primero, debemos asegurarnos de que estamos en el directorio correcto del proyecto. Esto es importante porque guardaremos los resultados del escaneo en un archivo dentro de este directorio. Para navegar al directorio del proyecto, ejecuta el siguiente comando en tu terminal:

cd /home/labex/project

Paso 2: Ejecutar el escaneo SYN

Ahora, estamos listos para realizar el escaneo SYN utilizando Nmap. Ejecuta el siguiente comando en tu terminal:

sudo nmap -sS localhost -p 8080 > /home/labex/project/nmap-syn-scan-results.txt

Desglosemos este comando para entender lo que hace cada parte:

  • sudo: Este comando se utiliza para ejecutar el comando siguiente con privilegios elevados. Los escaneos SYN requieren privilegios de root porque implican enviar paquetes de red sin procesar, por lo que necesitamos usar sudo para ejecutar el comando nmap.
  • nmap: Esta es la herramienta de escaneo de red que estamos utilizando. Nmap se utiliza ampliamente para la exploración de redes y la auditoría de seguridad.
  • -sS: Esta opción especifica que queremos realizar un escaneo SYN.
  • localhost: Este es el objetivo de nuestro escaneo. En este caso, estamos escaneando nuestra propia máquina.
  • -p 8080: Esta opción le dice a Nmap que solo escanee el puerto 8080. Estamos interesados en comprobar si este puerto específico está abierto en nuestra máquina local.
  • > /home/labex/project/nmap-syn-scan-results.txt: Esta parte del comando redirige la salida del escaneo de nmap a un archivo llamado nmap - syn - scan - results.txt en el directorio del proyecto. De esta manera, podemos revisar los resultados más tarde.

Paso 3: Ver los resultados del escaneo

Después de que el escaneo se complete, podemos ver los resultados. Ejecuta el siguiente comando en tu terminal:

cat /home/labex/project/nmap-syn-scan-results.txt

Deberías ver una salida similar a la siguiente:

Starting Nmap 7.80 ( https://nmap.org ) at 2023-10-18 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.03 seconds

Esta salida proporciona información valiosa. Confirma que el puerto 8080 está abierto en tu máquina local y que está ejecutando un servicio HTTP. Esta información se puede utilizar para un análisis de seguridad adicional o para solucionar problemas de red.

Analizar los resultados del escaneo y las implicaciones de seguridad

Después de realizar un escaneo SYN, es crucial entender cómo interpretar los resultados y sus implicaciones de seguridad. Este paso es esencial porque te ayuda a identificar los riesgos potenciales en tu red. Profundicemos en los detalles.

Interpretar los resultados del escaneo

  1. Primero, echemos un vistazo más detallado a los resultados del escaneo. Utilizaremos el comando cat para ver el contenido del archivo que almacena los resultados del escaneo SYN de Nmap. El comando cat es una forma sencilla de mostrar el contenido de un archivo en la terminal.

    cat /home/labex/project/nmap-syn-scan-results.txt

    Cuando ejecutes este comando, verás una salida. Esto es lo que significan diferentes partes de la salida:

    • Host is up: Este mensaje indica que el host objetivo es alcanzable a través de la red. Si el host está activo, significa que tu escaneo pudo comunicarse con el objetivo.
    • El valor de latencia: Esto muestra qué tan rápido el objetivo respondió a tu escaneo. Una latencia más baja significa que el objetivo respondió más rápido.
    • 8080/tcp open: Esto indica que el puerto 8080 en el host objetivo está abierto y listo para aceptar conexiones entrantes. Un puerto abierto puede ser un punto de entrada potencial para los atacantes.
    • http-proxy: Esta es la suposición de Nmap sobre qué servicio se está ejecutando en el puerto 8080. Nmap intenta identificar el servicio en función de las respuestas que recibe durante el escaneo.
  2. En una evaluación de seguridad del mundo real, cada puerto abierto en un host objetivo representa varias cosas:

    • Un punto de entrada potencial para los atacantes: Los atacantes pueden usar puertos abiertos para acceder al sistema objetivo. Por ejemplo, si un servidor web se está ejecutando en un puerto abierto, los atacantes podrían intentar explotar vulnerabilidades en la aplicación web.
    • Un servicio que puede tener vulnerabilidades: Cada servicio que se ejecuta en un puerto abierto tiene el potencial de tener fallas de seguridad. Estas vulnerabilidades pueden ser explotadas por los atacantes para comprometer el sistema.
    • Parte de la superficie de ataque que debe ser protegida: La superficie de ataque es la suma de todos los puntos donde un atacante puede intentar entrar en un sistema. Los puertos abiertos son parte de esta superficie de ataque y deben ser adecuadamente protegidos.

Mejores prácticas de seguridad

Al proteger una red, debes seguir estas mejores prácticas:

  1. Solo deben estar abiertos los puertos necesarios: Abrir puertos innecesarios aumenta la superficie de ataque de tu red. Al cerrar los puertos no utilizados, reduces el número de puntos de entrada potenciales para los atacantes.
  2. Cada puerto abierto debe servir un propósito comercial legítimo: Si un puerto está abierto, debe ser por una razón válida, como ejecutar un servidor web o un servicio de base de datos. Esto ayuda a garantizar que tu red se utilice de manera eficiente y segura.
  3. Todos los servicios deben estar actualizados para prevenir la explotación: Los proveedores de software lanzan regularmente actualizaciones para corregir vulnerabilidades de seguridad. Al mantener tus servicios actualizados, puedes proteger tu red de amenazas conocidas.
  4. Las reglas del firewall deben restringir el acceso a puertos sensibles: Los firewalls se pueden utilizar para controlar quién puede acceder a puertos específicos en tu red. Al configurar reglas de firewall adecuadas, puedes limitar el acceso a puertos sensibles solo a usuarios o sistemas autorizados.

Limpiar nuestro entorno

  1. Ahora, necesitamos limpiar nuestro entorno deteniendo el servidor HTTP que iniciamos anteriormente. Primero, necesitamos identificar el ID de proceso (PID) del servidor HTTP. El PID es un número único asignado a cada proceso en ejecución en el sistema. Utilizaremos el comando ps aux para listar todos los procesos en ejecución y luego filtrar los resultados para encontrar el proceso del servidor HTTP.

    ps aux | grep "http.server" | grep -v grep

    Cuando ejecutes este comando, verás una salida similar a la siguiente:

    labex      1234  0.0  0.1  31116  3164 pts/0    S    12:00   0:00 python -m http.server 8080

    La segunda columna en la salida muestra el PID del proceso del servidor HTTP.

  2. A continuación, utilizaremos el PID para detener el servidor. Utilizaremos el comando kill, que envía una señal de terminación al proceso. El siguiente comando encuentra automáticamente y detiene el proceso del servidor HTTP:

    kill $(ps aux | grep "http.server" | grep -v grep | awk '{print $2}')

    Este comando primero encuentra el PID del proceso del servidor HTTP utilizando el mismo método de filtrado que antes y luego pasa el PID al comando kill.

  3. Finalmente, necesitamos verificar que el servidor se haya detenido. Utilizaremos el comando ss, que se utiliza para mostrar estadísticas de sockets. Al filtrar la salida para mostrar solo información sobre el puerto 8080, podemos comprobar si el servidor sigue en ejecución.

    ss -tulwn | grep 8080

    Si el servidor se ha detenido correctamente, no debería haber salida de este comando, lo que indica que el servidor ya no está escuchando en el puerto 8080.

Resumen

En este laboratorio, has aprendido cómo realizar y comprender el escaneo SYN de Nmap, una técnica clave en el reconocimiento de seguridad de red. Has configurado un entorno controlado utilizando un servidor HTTP de Python, realizado un escaneo SYN para encontrar puertos abiertos, analizado los resultados y limpiado el entorno de prueba. Estas habilidades son esenciales para el escaneo ético de redes y la evaluación de vulnerabilidades.

Comprender los escaneos SYN permite a los profesionales de la seguridad detectar eficientemente las posibles vulnerabilidades de red mientras se reduce el riesgo de ser detectados. A medida que avances en tu viaje de ciberseguridad, siempre asegúrate de tener permiso para escanear redes antes de aplicar estas técnicas.