Nikto - Tutorial básico e avançado

O objetivo deste artigo é uma demonstração simples e clara sobre a utilização da ferramenta de assessoria em servidores WEB, Nikto. Este tutorial visa cobrir desde as opções básicas de varredura, até configurações mais avançadas utilizando proxies.

[ Hits: 65.844 ]

Por: Douglas em 15/08/2014


Conhecendo e utilizando o Nikto



Conhecendo o Nikto

Uma varredura básica com o Nikto, ou seja, sem nenhum parâmetro definido, realiza uma varredura completa em um host na porta TCP 80 (utilizada pela grande maioria dos websites). O host é definido por meio da opção: -h

Ex.:

nikto -h www.website.com

Porém, em certos casos, nos deparamos com websites que não utilizam a porta 80 como padrão. Para isso, podemos definir a porta a ser escaneada com a opção: -p

Ex.:

nikto -h www.website.com -p 443

Assim, como é possível definir também mais de uma porta para executar a varredura:

nikto -h www.website.com -p 80,88,443

Há também a possibilidade de passar a sintaxe de uma URL completa como parâmetro, da seguinte forma:

nikto -h https://www.website.com:8081/

No caso de uma auditoria de segurança ou Pentest, é interessante realizarmos uma autenticação com algum usuário do site, de modo a cobrir maiores resultados e detectar possíveis falhas do ponto de vista de alguém logado no website.

Com isso, cada vez que o Nikto se deparar com algum tipo de autenticação do website, ele irá inserir as credencias definidas. O parâmetro para isso é o -id, seguido do login e senha do usuário.

Ex.:

nikto -h https://website.com:8081 -id SUPERVISOR:supervisor123

É possível também definir o formato da saída dos resultados do Nikto com a opção: -o
Os formatos suportados são: CSV, HTML, TXT e XML.

Ex.:

nikto -h https://website.com:8081 -o resultados.html

Já entrando nas configurações avançadas, a opção -mutate serve para combinar testes e adivinhar valores durante um scan. Mesmo sendo uma técnica interessante, isto pode causar uma quantidade tremenda de testes sendo executados contra o alvo, aumentando tanto o tempo do scan, quanto o barulho gerado pelo mesmo.

Abaixo, algumas opções disponíveis:
  • Testa todos os arquivos com todos os diretórios root.
  • Tenta adivinhar nomes de arquivos de senha.
  • Enumera nomes de usuários via Apache (/~user type request). Esta opção explora uma configuração do UserDir do Apache, que permite que nomes de usuários válidos sejam descobertos por meio de um ataque de brute-force.
  • Enumera nomes de usuário via cgiwrap (/cgi-bin/cgiwrap/~user type requests). Esta opção explora uma falha do cgiwrap, que permite que nomes de usuários válidos sejam descobertos, também por meio do ataque de brute-force.
  • Tenta brute-force em nomes de subdomínios, assumindo que o host definido (sem o www) é o domínio principal (parent domain).
  • Tenta brute-force em nomes de diretórios, sendo a única opção que necessita de um arquivo externo com a lista de diretórios.

Ex.:

nikto -h https://website.com:8081 -mutate 1,2,3,4,5

Em situações em que precisa-se obter certo anonimato, pode-se utilizar algumas técnicas de evasão para tentar passar despercebido por alguns Firewalls e ISPs antigos. Lembrando que a maioria dos novos ISPs, irão detectar e bloquear o tráfego gerado pelo Nikto.

A opção para essa técnica é a -evasion, seguida dos parâmetros desejados. Abaixo, as opções disponíveis:
  • URL Encoding :: com esta opção, as URLs são codificadas, dificultando a detecção do tráfego. Porém, um IDS sofisticado não teria nenhum problema para detectar esse tipo de evasão.
  • Add /./ in front of each URL :: segue quase o mesmo princípio da técnica anterior, porém, por ser uma técnica bastante conhecida, praticamente qualquer IDS seria capaz de detectá-la.
  • Premature URL ending :: o Nikto adiciona pastas aleatórias seguidas de /../. Por exemplo, ao invés de requisitar "/icons", o Nikto solicita "/foo/bar/../../icons", que é praticamente a mesma coisa. Como as técnicas anteriores, não somente um IDS poderia detectar isso, mas também o servidor web em questão, justamente por se tratar de uma técnica muito conhecida.
  • Append random long strings :: a mesma técnica anterior, mas com mais palavras e os mesmos resultados.
  • Fake parameters :: adiciona parâmetros desnecessários (/uri/?foo=bar). Isto não faz nenhuma diferença para um IDS decente.
  • Tab as request spacer :: usa uma guia, ao invés de um espaço para separar diferentes elementos da URL. Mais uma vez, isso não é problema para um IDS decente.
  • Case-insensitivity :: altera caracteres aleatórios para caixa-alta. Sistemas operacionais, como o Windows servers, não se importam com case-insensitivity, logo o teste seria válido. Porém, para sistemas que são case-sensitive (UNIX, Linux) a nova URL criada não faz sentido. Mesmo sendo uma técnica interessante, deve ser utilizada com cuidado.
  • Use \ as folder separation :: é o mesmo caso do exemplo acima. Usando \, ao invés de /, pode ser útil para um webserver em Windows, mas não funcionaria em um sistema UNIX-like.
  • Session splicing :: dentre todas as técnicas citadas, esta é a mais interessante, mesmo sendo bem velha. É basicamente o Nikto + fragroute, que é capaz de gerar pacotes de dados de 1 byte. Sem contar que é um bom jeito de testar como um IDS gerencia um tráfego altamente fragmentado.

Ex.:

nikto -h https://website.com:8081 -evasion 1,2,3

A última opção de segurança que pode ser utilizada pelo Nikto, é o uso de proxies por meio da opção -useproxy seguida do IP do servidor e a porta correspondente. De todas as medidas de anonimato, essa é talvez a mais recomendada de todas, visto que o proxy é capaz de ocultar o seu verdadeiro IP e dificultar a sua identificação.

Ex.:

nikto -h https://website.com:80 -useproxy 189.98.78.54:2343

Utilizando o Nikto com o Tor proxy

Bem como muitas ferramentas destinadas à varreduras e scans, o Nikto gera muito tráfego na rede ao fazer requisições ao alvo, deixando um vasta lista de logs nos Firewalls e servidores. Se você está realizando um hacking/pentest, a última coisa que você deveria querer, é que um dispositivo de segurança capture seu verdadeiro IP e possa tomar ações desagradáveis com ele depois.

Pensando nisso, no tutorial a seguir, irei explicar como camuflar o tráfego do Nikto utilizando a rede Tor. Para isso, precisaremos de duas ferramentas: o Tor e o Privoxy, cuja instalação pode ser conferida abaixo.

Obs.: tanto a instalação quanto as configurações a seguir, são destinadas a sistemas GNU/Linux.

Abra um terminal e digite os seguintes comandos:

# apt-get install tor # Para instalar a suíte do Tor
# apt-get install privoxy # Para instalar o Privoxy

Feito isso, ainda com o terminal aberto, digite:

# nano /etc/privoxy/config

E procure pela linha que contenha: listen-address localhost:8118
Assim que encontrá-la, substitua-a por: listen-address 127.0.0.1:8118

Após isso, localize a linha que contenha: #forward-socks5 / 127.0.0.1:9050
...e apenas remova o # da frente da mesma, ficando: forward-socks5 / 127.0.0.1:9050

Agora, digite o seguinte comando para reiniciar o Tor e o Privoxy:

/etc/init.d/tor restart && /etc/init.d/privoxy restart && update-rc.d tor enable && update-rc.d privoxy enable

As configurações do Privoxy estão prontas, faltando apenas configurarmos o Nikto. Ainda no terminal, digite:

# nano /etc/nikto.conf

E procure pela linha que diz:

  # Proxy settings -- still must be enabled by -useproxy
  #PROXYHOST=127.0.0.1
  #PROXYPORT=8080


Aqui, basta remover os # das duas últimas linhas (visto que a primeira é um comentário) e, ao invés de 8080, substitua por 8118 (porta do privoxy), ficando assim:

# Proxy settings -- still must be enabled by -useproxy
PROXYHOST=127.0.0.1
PROXYPORT=8118

Concluído essas configurações, ao realizar um scan com Nikto, basta apenas definir a opção -useproxy, sem nenhum parâmetro para que todo o tráfego gerado pelo Nikto passe pela rede Tor, mantendo assim o seu anonimato.

Ex.:

nikto -h https://website.com:8081 -useproxy

Página anterior    

Páginas do artigo
   1. Introdução
   2. Conhecendo e utilizando o Nikto
Outros artigos deste autor
Nenhum artigo encontrado.
Leitura recomendada

Metasploit Adobe Exploit

Segurança em seu Linux (parte 2)

Procurando rootkits no seu sistema

Configurando logout automático para conta root

Desafio: Análise Forense Computacional - Forense em Tráfego de Rede [Resolvido]

  
Comentários
[1] Comentário enviado por wagnerfs em 21/08/2014 - 10:32h

Parabéns pelo artigo e por contribuir pela difusão do conhecimento.

[2] Comentário enviado por marcossouzagomes em 27/07/2018 - 08:12h

Excelente artigo!


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts