Evasión avanzada de firewall con fragmentación de paquetes
En este paso, exploraremos una técnica de evasión de firewall más avanzada llamada fragmentación de paquetes. Antes de profundizar, entendamos qué es la fragmentación de paquetes. Cuando se envían datos a través de una red, se dividen en unidades más pequeñas llamadas paquetes. Algunos firewalls y Sistemas de Detección de Intrusiones (IDS, por sus siglas en inglés) están diseñados para inspeccionar estos paquetes en busca de signos de actividad maliciosa. Sin embargo, estos sistemas de seguridad pueden tener dificultades para procesar paquetes fragmentados, que son paquetes que se han dividido en piezas aún más pequeñas. Esta dificultad puede brindarnos una oportunidad para eludir ciertas medidas de seguridad durante nuestros escaneos.
Seguiremos utilizando nuestro servidor HTTP local como objetivo para nuestro escaneo. Primero, necesitamos navegar al directorio adecuado en la terminal donde realizamos nuestro escaneo anterior. Este directorio es donde se encuentran nuestros archivos de proyecto, y es importante estar en este directorio para que nuestros comandos funcionen correctamente. Para hacer esto, ejecutaremos el siguiente comando:
cd /home/labex/project
Ahora que estamos en el directorio correcto, estamos listos para ejecutar un escaneo utilizando la opción de fragmentación de Nmap. Esta opción dividirá los paquetes IP en fragmentos más pequeños, lo que dificultará que los filtros de paquetes detecten nuestro escaneo. Aquí está el comando que usaremos:
sudo nmap -f -Pn --reason -p 8000 localhost
Desglosemos la opción adicional -f
en este comando. La opción -f
le dice a Nmap que fragmente los paquetes IP. Al hacer esto, estamos dificultando que los filtros de paquetes analicen los paquetes y detecten que estamos realizando un escaneo.
Después de ejecutar el comando, deberías ver una salida similar a la siguiente:
Starting Nmap 7.80 ( https://nmap.org ) at 2025-03-18 16:46 CST
Nmap scan report for localhost (127.0.0.1)
Host is up, received user-set (0.000062s latency).
Other addresses for localhost (not scanned): ::1
PORT STATE SERVICE REASON
8000/tcp open http-alt syn-ack ttl 64
Nmap done: 1 IP address (1 host up) scanned in 0.08 seconds
Esta salida nos muestra los resultados de nuestro escaneo. Nos dice que el host (localhost) está activo y que el puerto 8000 está abierto.
A continuación, queremos guardar estos resultados en un archivo separado. De esta manera, podemos consultarlos más tarde y compararlos con otros resultados de escaneo. Para guardar los resultados, ejecutaremos el siguiente comando:
sudo nmap -f -Pn --reason -p 8000 localhost > /home/labex/project/nmap_frag_scan.txt
El símbolo >
en este comando redirige la salida del escaneo de Nmap al archivo especificado.
Ahora, veamos el contenido de este archivo para asegurarnos de que los resultados se hayan guardado correctamente. Usaremos el comando cat
, que se utiliza para mostrar el contenido de un archivo:
cat /home/labex/project/nmap_frag_scan.txt
Los resultados del escaneo pueden parecer similares a nuestro escaneo anterior, pero la técnica subyacente es diferente. En este caso, Nmap fragmentó los paquetes IP en piezas más pequeñas, lo que dificulta que los filtros de paquetes sin estado detecten el escaneo.
Comparemos los dos métodos de escaneo que hemos utilizado hasta ahora: el escaneo regular y el escaneo fragmentado. Crearemos un nuevo archivo para almacenar esta comparación. Aquí están los comandos para hacerlo:
echo "Comparing regular scan vs. fragmented scan:" > /home/labex/project/scan_comparison.txt
echo "---------------------------------------------" >> /home/labex/project/scan_comparison.txt
echo "" >> /home/labex/project/scan_comparison.txt
echo "1. Regular scan with -Pn:" >> /home/labex/project/scan_comparison.txt
cat /home/labex/project/nmap_scan.txt >> /home/labex/project/scan_comparison.txt
echo "" >> /home/labex/project/scan_comparison.txt
echo "2. Fragmented scan with -f -Pn:" >> /home/labex/project/scan_comparison.txt
cat /home/labex/project/nmap_frag_scan.txt >> /home/labex/project/scan_comparison.txt
Estos comandos primero escriben un encabezado en el archivo de comparación, luego agregan los resultados del escaneo regular y del escaneo fragmentado al archivo.
Ahora, examinemos nuestra comparación mostrando el contenido del archivo de comparación:
cat /home/labex/project/scan_comparison.txt
En nuestro entorno controlado, los resultados de los dos escaneos pueden parecer similares. Sin embargo, en escenarios del mundo real, estas diferentes técnicas pueden tener niveles variables de éxito frente a diferentes configuraciones de firewall. La fragmentación de paquetes (-f
) es particularmente efectiva contra los filtros de paquetes sin estado. Los filtros de paquetes sin estado examinan cada paquete de forma independiente y, a menudo, no pueden reensamblar los fragmentos para inspeccionar el paquete completo, lo que da a nuestro escaneo fragmentado más posibilidades de eludir estos filtros.
Para una fragmentación aún mayor, Nmap te permite aumentar el nivel utilizando múltiples marcas -f
(por ejemplo, -ff
) o especificando un tamaño personalizado de Unidad Máxima de Transmisión (MTU, por sus siglas en inglés) con la opción --mtu
. La MTU es el tamaño máximo de un paquete que se puede transmitir a través de una red. Al especificar una MTU personalizada, puedes controlar cómo se fragmentan los paquetes.
Esta técnica demuestra cómo se puede utilizar la fragmentación de paquetes como un método adicional para eludir la detección del firewall al realizar evaluaciones de seguridad.