WhatWeb - Identificação de Tecnologias Web
O WhatWeb é uma ferramenta de reconhecimento (reconnaissance) utilizada para identificar as tecnologias empregadas por um site ou aplicação web. Escrito em Ruby por Andrew Horton e Brendan Coles, ele funciona como um “impressor digital” (fingerprinter): ao analisar as respostas HTTP de um servidor, o WhatWeb consegue reconhecer o servidor web, o sistema de gerenciamento de conteúdo (CMS), frameworks, bibliotecas JavaScript, pacotes de análise, versões de software e muito mais.
Essa etapa de identificação é fundamental em avaliações de segurança, pois conhecer as tecnologias de um alvo é o primeiro passo para entender sua superfície de ataque. O WhatWeb conta com mais de 1800 plugins, cada um capaz de reconhecer uma tecnologia diferente por meio de padrões em cabeçalhos HTTP, cookies, código HTML, arquivos específicos e mensagens de erro.
Instalação
Section titled “Instalação”Debian / Ubuntu / Kali Linux
Section titled “Debian / Ubuntu / Kali Linux”Em distribuições baseadas em Debian, o WhatWeb está disponível diretamente nos repositórios oficiais:
sudo apt updatesudo apt install whatwebRHEL / CentOS / Fedora
Section titled “RHEL / CentOS / Fedora”Nessas distribuições, o WhatWeb geralmente não está nos repositórios padrão. A forma mais confiável é instalá-lo a partir do código-fonte (veja abaixo).
Instalação a partir do código-fonte
Section titled “Instalação a partir do código-fonte”O WhatWeb é distribuído no GitHub e, por ser escrito em Ruby, não requer compilação. Basta ter o interpretador Ruby instalado:
# Instalar o Ruby (Debian/Ubuntu)sudo apt install ruby
# Clonar o repositóriogit clone https://github.com/urbanadventurer/WhatWeb.git
# Acessar o diretóriocd WhatWeb
# Executar diretamente./whatweb --versionVerificando a instalação
Section titled “Verificando a instalação”whatweb --versionUso Básico
Section titled “Uso Básico”A forma mais simples de utilizar o WhatWeb é passar uma URL ou domínio como argumento:
whatweb example.comA saída exibe as tecnologias identificadas de forma resumida, em uma única linha, com destaque colorido para cada componente detectado:
http://example.com [200 OK] Country[UNITED STATES][US], HTTPServer[ECS (dcb/7EA5)],IP[93.184.216.34], Title[Example Domain]Você também pode analisar múltiplos alvos de uma vez, separando-os por espaço:
whatweb example.com blog.example.com loja.example.comNíveis de Agressividade
Section titled “Níveis de Agressividade”O parâmetro -a (ou --aggression) controla o quão “profunda” e intensa será a varredura. Quanto maior o nível, mais requisições são feitas ao alvo — e maior a chance de ser detectado por sistemas de monitoramento.
| Nível | Nome | Descrição |
|---|---|---|
1 | Stealthy | Faz uma única requisição HTTP. É o modo mais discreto e o padrão da ferramenta. |
3 | Aggressive | Realiza requisições adicionais com base nas tecnologias detectadas no nível 1. |
4 | Heavy | Envia todas as requisições possíveis a todas as URLs. É o modo mais intrusivo e barulhento. |
# Varredura discreta (padrão)whatweb -a 1 example.com
# Varredura agressivawhatweb -a 3 example.com
# Varredura intensawhatweb -a 4 example.comModo Verboso
Section titled “Modo Verboso”Para obter mais detalhes sobre cada tecnologia identificada — incluindo a versão, o plugin responsável pela detecção e o motivo da correspondência — utilize a opção -v (verbose):
whatweb -v example.comNesse modo, cada plugin detectado é exibido em uma seção separada, com informações como certeza da detecção, versão e a string encontrada que gerou a correspondência.
Formatos de Saída (Logging)
Section titled “Formatos de Saída (Logging)”O WhatWeb oferece diversos formatos para salvar os resultados em arquivo, o que é essencial para documentar avaliações e integrar com outras ferramentas.
| Opção | Formato de saída |
|---|---|
--log-brief | Resumido, uma linha por alvo |
--log-verbose | Detalhado, com todas as informações de cada plugin |
--log-xml | XML, ideal para processamento automatizado |
--log-json | JSON, útil para integração com scripts e aplicações |
--log-sql | Instruções SQL para inserção em banco de dados |
--log-errors | Registra apenas os erros ocorridos durante a varredura |
# Salvar resultado em formato JSONwhatweb example.com --log-json=resultado.json
# Salvar resultado resumidowhatweb example.com --log-brief=resultado.txt
# Salvar em XMLwhatweb example.com --log-xml=resultado.xmlVarredura em Massa com Lista de Alvos
Section titled “Varredura em Massa com Lista de Alvos”Em avaliações maiores, é comum precisar analisar dezenas ou centenas de hosts. Para isso, use a opção -i (ou --input-file), que lê os alvos de um arquivo de texto — um por linha:
# Criar arquivo com a lista de alvoscat > alvos.txt << 'EOF'example.comblog.example.comloja.example.comEOF
# Executar a varredura sobre todos os alvoswhatweb -i alvos.txtTrabalhando com Plugins
Section titled “Trabalhando com Plugins”Os plugins são o coração do WhatWeb. Cada um é responsável por identificar uma tecnologia específica.
Listando os plugins disponíveis
Section titled “Listando os plugins disponíveis”whatweb -lObtendo informações sobre os plugins
Section titled “Obtendo informações sobre os plugins”whatweb --info-pluginsExecutando plugins específicos
Section titled “Executando plugins específicos”Você pode restringir a varredura a plugins específicos com a opção -p (ou --plugins):
# Usar apenas os plugins WordPress e HTTPServerwhatweb -p WordPress,HTTPServer example.comFiltrando resultados com grep
Section titled “Filtrando resultados com grep”A opção -g (ou --grep) permite pesquisar por uma string específica na resposta do alvo:
whatweb -g "powered by" example.comOpções Úteis Adicionais
Section titled “Opções Úteis Adicionais”| Opção | Descrição |
|---|---|
-U, --user-agent | Define um User-Agent personalizado para as requisições |
-H, --header | Adiciona um cabeçalho HTTP personalizado |
--proxy <host:porta> | Envia as requisições através de um proxy |
--proxy-user <usuário:senha> | Autenticação para o proxy |
-t, --max-threads | Número máximo de threads simultâneas (padrão: 25) |
--follow-redirect <opção> | Controla o comportamento diante de redirecionamentos |
--color <quando> | Controla o uso de cores na saída (never, always, auto) |
Exemplos práticos
Section titled “Exemplos práticos”# Usar um User-Agent personalizado para evitar bloqueios simpleswhatweb -U "Mozilla/5.0 (compatible; WhatWeb)" example.com
# Enviar a varredura através de um proxywhatweb --proxy 127.0.0.1:8080 example.com
# Aumentar o número de threads para varreduras em massawhatweb -i alvos.txt -t 50Exemplo de Fluxo Completo
Section titled “Exemplo de Fluxo Completo”Um fluxo típico de reconhecimento combina vários dos recursos vistos acima. Suponha que você precise avaliar um conjunto de sites autorizados e documentar os resultados:
# 1. Varredura agressiva de todos os alvos, salvando em JSONwhatweb -i alvos.txt -a 3 --log-json=relatorio.json
# 2. Análise detalhada de um alvo específico de interessewhatweb -v -a 3 example.com
# 3. Verificação apenas do servidor web e CMSwhatweb -p HTTPServer,WordPress,Joomla,Drupal example.comCom esses resultados, você terá um panorama das tecnologias em uso — versões de servidor, CMS, frameworks e bibliotecas — que servirá de base para as etapas seguintes de uma avaliação de segurança, como a pesquisa por vulnerabilidades conhecidas associadas a cada versão identificada.
Considerações Finais
Section titled “Considerações Finais”O WhatWeb é uma ferramenta leve, rápida e extremamente útil na fase de reconhecimento de qualquer avaliação de segurança web. Sua capacidade de identificar tecnologias com precisão, combinada com os diferentes níveis de agressividade e formatos de saída, o torna indispensável tanto para profissionais de segurança quanto para administradores que desejam entender a “impressão digital” pública de seus próprios servidores.
Lembre-se sempre de que o reconhecimento é apenas uma etapa de um processo maior e deve ser conduzido de forma ética e autorizada. Conhecer as tecnologias que compõem uma aplicação é valioso não apenas para identificar riscos, mas também para reforçar a segurança dos sistemas que administramos.