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.
Por padrão, o Nikto realiza pesquisas de DNS reverso em endereços IP que encontra no conteúdo do servidor web. Embora isso possa ser útil para descobrir nomes de host relacionados, também pode desacelerar significativamente a varredura, especialmente ao escanear redes grandes ou alvos que não respondem.
Neste laboratório, você aprenderá a usar a opção -nolookup para desativar este recurso e comparar os tempos de varredura para entender os benefícios de desempenho.
Compreender o propósito da opção -nolookup
Nesta etapa, você aprenderá sobre a opção -nolookup no Nikto.
Quando o Nikto escaneia um servidor web, ele pode encontrar endereços IP nos arquivos de configuração, logs ou páginas web do servidor. Por padrão, o Nikto tenta realizar uma pesquisa de DNS reverso para cada um desses IPs para encontrar seus nomes de host associados. Este processo pode consumir muito tempo.
A opção -nolookup instrui o Nikto a pular completamente esta etapa. Isso pode resultar em uma varredura muito mais rápida, mas você perderá informações potencialmente valiosas sobre outros nomes de host associados ao alvo.
Você pode ver esta opção e outras visualizando o menu de ajuda do Nikto. Vamos fazer isso agora.
Execute o seguinte comando no seu terminal:
nikto -Help
Percorra a saída e encontre a opção -nolookup. Ela será listada com uma breve descrição.
...
-nolookup Skip name lookups
...
Agora que você entende o que -nolookup faz, podemos prosseguir para vê-lo em ação.
Executar uma varredura de linha de base contra um alvo usando seu endereço IP
Nesta etapa, você realizará uma varredura padrão do Nikto contra um servidor web local. Usaremos o comando time para medir quanto tempo a varredura leva. Isso servirá como nossa linha de base para comparação.
O ambiente de laboratório já iniciou um servidor web Nginx simples em execução em 127.0.0.1. Usaremos este como nosso alvo.
Para executar a varredura e cronometrá-la, execute o seguinte comando:
time nikto -h 127.0.0.1
A varredura começará, e você verá uma saída semelhante à seguinte. Por favor, seja paciente, pois pode levar um minuto para ser concluída.
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: localhost
+ Target Port: 80
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time: ... (15 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
real 0m15.543s
user 0m14.987s
sys 0m0.312s
Preste muita atenção às últimas três linhas, que são a saída do comando time. O tempo real é o tempo total de relógio decorrido. Anote este valor para a próxima etapa.
Executar a mesma varredura novamente com a flag -nolookup
Agora que você tem um tempo de execução de linha de base, vamos executar exatamente a mesma varredura, mas com a flag -nolookup adicionada. Isso impedirá que o Nikto realize quaisquer pesquisas de DNS reverso.
Execute o seguinte comando no seu terminal:
time nikto -h 127.0.0.1 -nolookup
A varredura será executada novamente. A própria saída do Nikto será muito semelhante à varredura anterior, mas você deverá notar uma diferença no tempo de execução relatado pelo comando time.
- Nikto v2.5.0
---------------------------------------------------------------------------
+ Target IP: 127.0.0.1
+ Target Hostname: 127.0.0.1
+ Target Port: 80
+ Start Time: ...
---------------------------------------------------------------------------
+ Server: nginx/1.18.0 (Ubuntu)
+ The anti-clickjacking X-Frame-Options header is not present.
+ The X-XSS-Protection header is not defined. This header can hint to the user agent to protect against some forms of XSS
+ 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)
+ Retrieved x-powered-by header: PHP/8.1.2
+ Allowed HTTP Methods: GET, HEAD
+ Public HTTP Methods: GET, HEAD
+ OSVDB-3233: /index.html: Server may leak inodes via ETags, header found with file /var/www/html/index.html inode 262204, size 612, mtime ...
+ 7554 requests: 0 error(s) and 7 item(s) reported on remote host
+ End Time: ... (8 seconds)
---------------------------------------------------------------------------
+ 1 host(s) tested
real 0m8.123s
user 0m7.890s
sys 0m0.201s
Observe que o Target Hostname na saída agora é 127.0.0.1 em vez de localhost. Isso ocorre porque o Nikto não realizou a pesquisa reversa para resolver o IP para um nome de host. Além disso, anote o novo tempo real.
Comparar o tempo de execução de ambas as varreduras
Nesta etapa, você analisará os resultados das duas etapas anteriores para ver o impacto de desempenho da flag -nolookup.
Vamos observar o tempo real de ambos os comandos.
Varredura 1 (Linha de Base):
real 0m15.543s (Seu tempo pode variar ligeiramente)
Varredura 2 (com -nolookup):
real 0m8.123s (Seu tempo pode variar ligeiramente)
Como você pode ver, a varredura com a flag -nolookup foi concluída significativamente mais rápido. Neste exemplo, foi quase duas vezes mais rápida. O ganho de desempenho pode ser ainda mais dramático ao escanear vários hosts ou alvos em redes lentas ou mal configuradas, onde as pesquisas de DNS podem expirar.
Esta simples comparação demonstra o benefício de desempenho direto de desabilitar as pesquisas de DNS em suas varreduras Nikto.
Analisar quando usar esta otimização de desempenho
Nesta etapa final, discutiremos as compensações e determinaremos quando é apropriado usar a opção -nolookup.
Embora -nolookup forneça um aumento de desempenho claro, ele vem ao custo de potencialmente perder informações. As pesquisas de DNS reverso podem ajudá-lo a descobrir outros nomes de host e hosts virtuais associados a um endereço IP, o que pode ser crucial para uma avaliação de segurança abrangente.
Então, quando você deve usar -nolookup?
- Varreduras Iniciais e Triagem: Quando você está escaneando um grande número de hosts e deseja obter uma visão geral rápida de vulnerabilidades potenciais. A velocidade é mais importante do que detalhes exaustivos nesta fase.
- Escaneamento por Endereço IP: Se sua lista de alvos consiste apenas em endereços IP e você não está preocupado em descobrir nomes de domínio associados, usar
-nolookupé uma escolha lógica. - Redes Não Confiáveis: Ao escanear em uma conexão de rede lenta ou não confiável, onde as consultas de DNS podem falhar ou expirar,
-nolookuppode impedir que a varredura trave. - Quando a Velocidade é Crítica: Em situações sensíveis ao tempo, como uma competição de testes de penetração ou uma resposta rápida a incidentes, a velocidade obtida com esta opção pode ser inestimável.
Quando você deve evitar -nolookup?
- Avaliação Abrangente: Ao realizar uma auditoria de segurança completa e aprofundada de um alvo específico, você deseja o máximo de informações possível. Os nomes de host descobertos através de pesquisas de DNS podem revelar superfícies de ataque adicionais.
- Descoberta de Host Virtual: Se você suspeita que o IP de destino hospeda vários sites (hospedagem virtual), você deve permitir que o Nikto realize pesquisas para ajudar a identificá-los.
Compreender essa compensação entre velocidade e abrangência permite que você use o Nikto de forma mais eficaz para diferentes cenários.
Resumo
Neste laboratório, você aprendeu como otimizar suas varreduras Nikto para velocidade. Você começou entendendo o propósito da flag -nolookup, que desabilita as pesquisas de DNS reverso.
Em seguida, você realizou duas varreduras: uma varredura de linha de base e uma segunda varredura usando a opção -nolookup. Ao comparar os tempos de execução com o comando time, você observou uma melhoria significativa de desempenho.
Finalmente, você analisou as compensações, concluindo que -nolookup é ideal para varreduras rápidas e em larga escala ou quando a velocidade é uma prioridade, enquanto varreduras completas para avaliações abrangentes devem omitir esta flag para coletar o máximo de informações possível.


