Falsificar a String User-Agent no Nikto

Kali LinuxBeginner
Pratique Agora

Introdução

Nikto é um popular scanner de servidor 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.

Quando o Nikto envia requisições para um servidor alvo, ele se identifica usando uma string padrão de "User-Agent". Essa string pode ser facilmente detectada por firewalls ou sistemas de detecção de intrusão, que podem bloquear o escaneamento. Para realizar um escaneamento mais discreto, você pode "falsificar" ou alterar o User-Agent para imitar um navegador web comum.

Neste laboratório, você aprenderá como identificar o User-Agent padrão do Nikto e, em seguida, alterá-lo usando a opção -useragent para tornar seus escaneamentos menos conspícuos.

Identificar o User-Agent padrão do Nikto a partir de um scan de teste

Nesta etapa, você executará um scan básico do Nikto contra um servidor web local para ver sua string de User-Agent padrão. Um servidor web Python simples foi iniciado para você em segundo plano, que registra todas as requisições recebidas em um arquivo chamado access.log.

Primeiro, execute um scan Nikto padrão direcionado ao servidor local rodando na porta 8000. Abra seu terminal e execute o seguinte comando:

nikto -h http://localhost:8000

O Nikto realizará uma série de testes. Não estamos interessados nos resultados do scan em si, mas na entrada de log que ele cria.

Após a conclusão do scan, visualize o conteúdo do arquivo de log para ver como o servidor registrou a requisição do Nikto. Use o comando cat:

cat ~/project/access.log

Você deverá ver entradas de log que incluem o User-Agent padrão do Nikto. Ele se parecerá com algo assim, identificando claramente o scanner.

127.0.0.1 - "GET / HTTP/1.1" Mozilla/5.0 (X11; Linux x86_64) Nikto/2.5.0 (Evasions:None) (Test:Port Check)
127.0.0.1 - "GET /icons/blank.gif HTTP/1.1" Mozilla/5.0 (X11; Linux x86_64) Nikto/2.5.0 (Evasions:None) (Test:Port Check)
... (outras entradas de log) ...

Observe a parte Nikto/2.5.0 da string. Esta é a assinatura que queremos ocultar nas próximas etapas.

Escolher uma string de User-Agent de navegador comum para imitar

Nesta etapa, selecionaremos uma string de User-Agent de um navegador web comum. O objetivo é fazer com que nosso tráfego de escaneamento pareça vir de um usuário regular, não de uma ferramenta automatizada. Isso ajuda a evitar regras de detecção simples que bloqueiam o tráfego com base em User-Agents de scanners conhecidos.

Existem muitos recursos online para encontrar strings de User-Agent atuais. Para este laboratório, usaremos um User-Agent típico para o navegador Firefox em uma máquina Windows.

Aqui está a string que usaremos: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0

Esta etapa é puramente informativa. Você não precisa executar nenhum comando. Apenas familiarize-se com a string acima, pois você a usará nas etapas seguintes.

Usar a opção -useragent para definir a nova string

Nesta etapa, você aprenderá como construir o comando Nikto para usar o novo User-Agent falsificado. O Nikto fornece uma opção de linha de comando específica para este propósito: -useragent.

A sintaxe para esta opção é direta. Você anexa -useragent ao seu comando, seguido pela nova string que deseja usar. Como as strings de User-Agent contêm espaços e caracteres especiais, é crucial envolver toda a string entre aspas duplas (").

Veja como você construiria o comando para escanear nosso servidor local com o User-Agent do Firefox que escolhemos na etapa anterior:

nikto -h http://localhost:8000 -useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"

Nesta etapa, você só precisa entender como o comando é construído. Você o executará na próxima etapa.

Executar um escaneamento com o User-Agent falsificado

Nesta etapa, você executará o escaneamento Nikto usando o User-Agent personalizado. Para garantir que estamos vendo apenas os resultados do nosso novo escaneamento, é uma boa prática limpar o arquivo de log antigo primeiro.

Limpe o arquivo access.log com o seguinte comando:

> ~/project/access.log

Este comando sobrescreve o arquivo, deixando-o vazio. Agora, execute o escaneamento Nikto com a opção -useragent e a string do Firefox.

nikto -h http://localhost:8000 -useragent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0"

O Nikto agora executará o mesmo escaneamento de antes, mas cada solicitação que ele enviar carregará a string User-Agent do Firefox em vez da padrão do Nikto. Deixe o escaneamento ser concluído.

Verificar o novo User-Agent nos logs do servidor ou em um proxy

Nesta etapa final, você verificará se a falsificação do User-Agent foi bem-sucedida. Verificaremos novamente o arquivo de log do servidor para ver qual User-Agent foi registrado durante o último escaneamento.

Use o comando cat para exibir o conteúdo do access.log:

cat ~/project/access.log

Desta vez, a saída deve parecer diferente. Em vez de ver "Nikto" nos logs, você verá a string User-Agent do Firefox que você especificou.

127.0.0.1 - "GET / HTTP/1.1" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
127.0.0.1 - "GET /icons/blank.gif HTTP/1.1" Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:109.0) Gecko/20100101 Firefox/115.0
... (outras entradas de log) ...

Como você pode ver, o log agora mostra um User-Agent padrão do Firefox. A palavra "Nikto" desapareceu, escondendo com sucesso a identidade do nosso scanner dos logs básicos do servidor.

Resumo

Neste laboratório, você aprendeu uma técnica fundamental para tornar os escaneamentos de segurança mais furtivos. Você falsificou com sucesso a string User-Agent no Nikto para imitar um navegador web comum.

Você aprendeu a:

  • Executar um escaneamento Nikto padrão para estabelecer uma linha de base.
  • Inspecionar os logs do servidor para identificar o User-Agent padrão do Nikto.
  • Usar a opção de linha de comando -useragent para especificar uma string personalizada.
  • Executar um novo escaneamento com o User-Agent falsificado.
  • Verificar a alteração verificando os logs do servidor novamente.

Esta habilidade é essencial para testadores de penetração e profissionais de segurança que precisam realizar avaliações de vulnerabilidade sem serem imediatamente bloqueados ou detectados por sistemas de segurança.