Evasão Avançada de Firewall com Fragmentação de Pacotes
Nesta etapa, vamos explorar uma técnica de evasão de firewall mais avançada chamada fragmentação de pacotes. Antes de mergulharmos, vamos entender o que é fragmentação de pacotes. Quando os dados são enviados por uma rede, eles são divididos em unidades menores chamadas pacotes. Alguns firewalls e Sistemas de Detecção de Intrusão (IDS) são projetados para inspecionar esses pacotes em busca de quaisquer sinais de atividade maliciosa. No entanto, esses sistemas de segurança podem ter dificuldade em processar pacotes fragmentados, que são pacotes que foram divididos em pedaços ainda menores. Essa dificuldade pode criar uma oportunidade para contornarmos certas medidas de segurança durante nossas varreduras.
Continuaremos usando nosso servidor HTTP local como o alvo para nossa varredura. Primeiro, precisamos navegar para o diretório apropriado no terminal onde realizamos nossa varredura anterior. Este diretório é onde nossos arquivos de projeto estão localizados, e é importante estar neste diretório para que nossos comandos funcionem corretamente. Para fazer isso, executaremos o seguinte comando:
cd /home/labex/project
Agora que estamos no diretório certo, estamos prontos para executar uma varredura usando a opção de fragmentação do Nmap. Esta opção dividirá os pacotes IP em fragmentos menores, tornando mais difícil para os filtros de pacotes detectarem nossa varredura. Aqui está o comando que usaremos:
sudo nmap -f -Pn --reason -p 8000 localhost
Vamos detalhar a opção adicional -f neste comando. A opção -f diz ao Nmap para fragmentar os pacotes IP. Ao fazer isso, estamos tornando mais desafiador para os filtros de pacotes analisarem os pacotes e detectarem que estamos realizando uma varredura.
Após executar o comando, você deve ver uma saída semelhante à seguinte:
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 saída nos mostra os resultados de nossa varredura. Ela nos diz que o host (localhost) está ativo e que a porta 8000 está aberta.
Em seguida, queremos salvar esses resultados em um arquivo separado. Dessa forma, podemos consultá-los mais tarde e compará-los com outros resultados de varredura. Para salvar os resultados, executaremos o seguinte comando:
sudo nmap -f -Pn --reason -p 8000 localhost > /home/labex/project/nmap_frag_scan.txt
O símbolo > neste comando redireciona a saída da varredura Nmap para o arquivo especificado.
Agora, vamos verificar o conteúdo deste arquivo para garantir que os resultados foram salvos corretamente. Usaremos o comando cat, que é usado para exibir o conteúdo de um arquivo:
cat /home/labex/project/nmap_frag_scan.txt
Os resultados da varredura podem parecer semelhantes à nossa varredura anterior, mas a técnica subjacente é diferente. Neste caso, o Nmap fragmentou os pacotes IP em pedaços menores, o que dificulta para os filtros de pacotes sem estado detectarem a varredura.
Vamos comparar os dois métodos de varredura que usamos até agora: a varredura regular e a varredura fragmentada. Criaremos um novo arquivo para armazenar esta comparação. Aqui estão os comandos para fazer isso:
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
Esses comandos primeiro escrevem um cabeçalho para o arquivo de comparação, depois adicionam os resultados da varredura regular e da varredura fragmentada ao arquivo.
Agora, vamos examinar nossa comparação exibindo o conteúdo do arquivo de comparação:
cat /home/labex/project/scan_comparison.txt
Em nosso ambiente controlado, os resultados das duas varreduras podem parecer semelhantes. No entanto, em cenários do mundo real, essas diferentes técnicas podem ter níveis variados de sucesso contra diferentes configurações de firewall. A fragmentação de pacotes (-f) é particularmente eficaz contra filtros de pacotes sem estado. Os filtros de pacotes sem estado examinam cada pacote de forma independente e geralmente não conseguem remontar os fragmentos para inspecionar o pacote completo, o que dá à nossa varredura fragmentada uma chance melhor de contornar esses filtros.
Para uma fragmentação ainda maior, o Nmap permite que você aumente o nível usando várias flags -f (por exemplo, -ff) ou especificando um tamanho de Unidade Máxima de Transmissão (MTU - Maximum Transmission Unit) personalizado com a opção --mtu. A MTU é o maior tamanho de um pacote que pode ser transmitido por uma rede. Ao especificar uma MTU personalizada, você pode controlar como os pacotes são fragmentados.
Esta técnica demonstra como a fragmentação de pacotes pode ser usada como um método adicional para evadir a detecção de firewall ao conduzir avaliações de segurança.