Utilizar Técnicas de Evasão no Nikto

Kali LinuxBeginner
Pratique Agora

Introdução

Nikto é um popular scanner de servidores web de código aberto que realiza testes abrangentes contra servidores web para vários itens, incluindo mais de 6700 arquivos/programas potencialmente perigosos, verifica versões desatualizadas de mais de 1250 servidores e problemas específicos de versão em mais de 270 servidores.

Ao realizar varreduras de segurança, é frequentemente desejável evitar a detecção por sistemas de segurança como Sistemas de Detecção de Intrusão (IDS - Intrusion Detection Systems), Sistemas de Prevenção de Intrusão (IPS - Intrusion Prevention Systems) ou Firewalls de Aplicação Web (WAF - Web Application Firewalls). Esses sistemas monitoram o tráfego de rede em busca de padrões maliciosos. O Nikto inclui técnicas de evasão integradas para ajudar a disfarçar suas varreduras e torná-las menos óbvias para esses sistemas.

Neste laboratório, você aprenderá a usar a opção -evasion do Nikto para realizar varreduras mais discretas.

Compreender as técnicas de evasão disponíveis com -evasion

Nesta etapa, você aprenderá a listar e compreender as diferentes técnicas de evasão disponíveis no Nikto. A opção -evasion (ou -e) é usada para especificar uma técnica de evasão. Para ver todas as técnicas disponíveis, você pode executar o Nikto apenas com a opção -evasion e nenhum número de técnica específico.

Vamos listar as técnicas disponíveis. Abra seu terminal e execute o seguinte comando:

nikto -evasion

Você verá uma lista das técnicas disponíveis com um número e uma breve descrição para cada uma.

- Evasion options:
      1   Random URI encoding (non-UTF8)
      2   Directory self-reference (/./)
      3   Premature URL ending
      4   Prepend long random string to request
      5   Fake parameter
      6   GET instead of HEAD
      7   Use a random User-Agent
      8   Random case sensitivity
      A   Use a random IP for the Source-IP
      B   Obfuscate with TABs
      C   Use a carriage return (CR) as a line-ending
      D   Use a binary value as a line-ending
      E   Use a long false request to mis-direct an IDS
      F   Use Windows-style directory separators (\)

Esta saída mostra os vários métodos que o Nikto pode usar para alterar suas requisições para evitar a detecção. Nas etapas seguintes, praticaremos o uso de algumas dessas técnicas.

Executar uma varredura usando -evasion 1 para codificação de URI aleatória

Nesta etapa, você usará a primeira técnica de evasão, "codificação de URI aleatória" (Random URI encoding). Esta técnica codifica partes do URI da requisição de forma não padrão. Embora os servidores web geralmente entendam essas codificações, sistemas IDS baseados em assinatura simples podem falhar em corresponder aos padrões, permitindo que a requisição passe sem ser detectada.

Executaremos uma varredura contra o servidor web simples que foi iniciado para você na configuração do laboratório. Ele está rodando em http://127.0.0.1:8000.

Para usar a técnica 1, você anexa o número à opção -evasion. Execute o seguinte comando em seu terminal:

nikto -h http://127.0.0.1:8000 -evasion 1

O Nikto agora começará a escanear o alvo. A varredura prosseguirá normalmente, mas as requisições enviadas ao servidor terão seus URIs codificados aleatoriamente.

Aqui está um exemplo da saída que você pode ver:

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
+ No CGI directories found (use '-C all' to force check all possible dirs)
+ Server leaks a possible file system path: /home/labex/project/test-site/. This may suggest the server is running on a Unix-like system.
+ Allowed HTTP Methods: GET, HEAD, OPTIONS
+ Public HTTP Methods: GET, HEAD, OPTIONS
+ OSVDB-3233: /: HTTP TRACE method is active, suggesting the host is vulnerable to XST
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ... (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested

Observe que a varredura é concluída e fornece descobertas, mas as requisições subjacentes foram modificadas para serem mais evasivas.

Tentar uma varredura usando -evasion 2 para auto-referência de diretório

Agora, vamos tentar outra técnica. A técnica de evasão 2 usa "auto-referência de diretório" (Directory self-reference). Este método insere /./ nos URLs das requisições (por exemplo, /cgi-bin/ se torna /./cgi-bin/). A maioria dos servidores web normalizará este caminho e o tratará como uma requisição regular, mas isso pode confundir alguns filtros de segurança que procuram por correspondências exatas de caminho.

Execute uma varredura Nikto usando a técnica de evasão 2 contra o mesmo alvo:

nikto -h http://127.0.0.1:8000 -evasion 2

A varredura será executada novamente, mas desta vez usando o truque de auto-referência de diretório. A saída será muito semelhante à varredura anterior, pois o servidor responde corretamente às requisições modificadas.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-Content-Type-Options header is not set. This could allow the user agent to render the content of the site in a different fashion to the MIME type.
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

O ponto principal é que você ainda está obtendo resultados de varredura válidos enquanto usa técnicas que podem ajudar a contornar o monitoramento de segurança.

Usar -evasion 4 para adicionar strings aleatórias longas no início

Nesta etapa, exploraremos a técnica de evasão 4, que adiciona uma string aleatória longa no início da requisição. A ideia por trás desta técnica é empurrar a parte maliciosa ou interessante real da requisição para além do limite do buffer de alguns dispositivos IDS/IPS simples. Se o IDS inspecionar apenas a primeira parte de uma requisição, ele pode perder o payload real.

Vamos executar uma varredura usando esta técnica.

nikto -h http://127.0.0.1:8000 -evasion 4

Mais uma vez, o Nikto realizará sua varredura, mas cada requisição será precedida por uma string longa e aleatória. O servidor web ignorará esses dados inúteis, mas pode ser uma maneira eficaz de enganar sistemas de segurança baseados em correspondência de padrões.

A saída será semelhante às varreduras anteriores, demonstrando que a técnica não interfere na eficácia da varredura contra o servidor alvo.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

Combinar múltiplas técnicas de evasão em uma única varredura

Uma das funcionalidades mais poderosas das capacidades de evasão do Nikto é a habilidade de combinar múltiplas técnicas em uma única varredura. Isso cria requisições mais complexas e variadas, tornando ainda mais difícil para um IDS detectar a varredura.

Para combinar técnicas, você simplesmente lista os números das técnicas que deseja usar uma após a outra. Por exemplo, para combinar codificação de URI aleatória (1), auto-referência de diretório (2) e adição de strings aleatórias longas no início (4), você usaria -evasion 124.

Vamos executar uma varredura combinando estas três técnicas:

nikto -h http://127.0.0.1:8000 -evasion 124

O Nikto agora aplicará todas as três técnicas às suas requisições, criando uma varredura altamente ofuscada. Esta abordagem em camadas aumenta significativamente as chances de contornar a detecção.

A saída mostrará novamente os mesmos achados, confirmando que a combinação de técnicas de evasão não quebrou a funcionalidade da varredura.

- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP:          127.0.0.1
+ Target Hostname:    127.0.0.1
+ Target Port:        8000
+ Start Time:         ...
---------------------------------------------------------------------------
+ Server: SimpleHTTP/0.6 Python/3.10.12
+ The anti-clickjacking X-Frame-Options header is not present.
...
+ 15 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time:           ...
---------------------------------------------------------------------------
+ 1 host(s) tested

Ao combinar técnicas, você pode criar uma estratégia de varredura muito mais robusta e discreta, adaptada às defesas específicas que você antecipa.

Resumo

Neste laboratório, você aprendeu a usar os poderosos recursos de evasão do Nikto para realizar varreduras de vulnerabilidades web mais discretas. Você começou listando as técnicas disponíveis com a opção -evasion. Em seguida, praticou a aplicação de técnicas individuais, incluindo codificação de URI aleatória (1), auto-referência de diretório (2) e adição de strings aleatórias longas no início (4).

Finalmente, você aprendeu a combinar essas técnicas para criar uma estratégia de evasão em múltiplas camadas, aumentando significativamente a dificuldade para os Sistemas de Detecção de Intrusão identificarem sua atividade de varredura. Essas habilidades são essenciais para realizar avaliações de segurança eficazes e discretas em ambientes com monitoramento ativo.