Ataque de Força Bruta com Hydra
![]() |
Image by shuttersstock |
No artigo "Wordlist com CeWL" vimos como usar a ferramenta CeWL para criar uma wordlist com palavras disponíveis no site analisado. Agora vamos ver como realizar ataque de força bruta em formulários de login utilizando a lista de palavras coletada no alvo.
Para esse fim, utilizaremos uma excelente ferramenta de linha de comando para quebras de senhas: Hydra.
Por padrão o Hydra vem instalado no Kali Linux - distribuição na qual foi utilizada para realizar os testes apresentados neste artigo.
Caso a sua distribuição GNU/Linux não possua o aplicativo por padrão, é possível clonar o repositório na sua máquina e seguir as instruções de instalação disponíveis no source do projeto.
Para maiores informações sobre o projeto, assim como o guia de instalação, acesse o repositório disponível em https://github.com/vanhauser-thc/thc-hydra.
- Familiarizando-se com a ferramenta e coletando informações do alvo
Digite "hydra" no terminal para mostrar todas as opções disponíveis e suas respectivas descrições. O parâmetro -h mostra mais opções de uso da ferramenta.
Os testes realizados tem como alvo o site "http://testphp.vulnweb.com/" - aplicação em PHP intencionalmente vulnerável para testes de penetração manuais com propósitos educacionais, disponibilizada pela Acunetix.
O formulário de login encontra-se na URL "http://testphp.vulnweb.com/login.php".
Antes de iniciarmos o teste precisamos coletar algumas informações sobre o comportamento do formulário da página para assim inserir as devidas opções na ferramenta de força bruta e termos sucesso no ataque.
- URL da página;
- Campos de inserção de dados do formulário (usuário e senha);
- Método de envio de informações (GET ou POST);
- Ação tomada pela aplicação ao enviar os dados inseridos no formulário (action);
- Comportamento (mensagem de erro, alerta, status code) gerado pela aplicação ao inserir credenciais inválidas.
Para identificar os parâmetros do formulário enviados para o servidor, pode-se interceptar a requisição com um proxy como o Burp Suite, mas aqui foi utilizado o navegador web (Firefox) e sua função de inspecionar elemento para então obter as informações necessárias.
Conforme mostrado na imagem acima, temos o formulário HTML onde encontram-se o nome das entradas de dados que serão enviadas via POST para o site. Informações coletadas:
- URL da página: http://testphp.vulnweb.com/
- Input do usuário: uname
- Input da senha: password
- Método de comunicação HTTP: POST
- Arquivo PHP que receberá os dados ao clicar em Login: userinfo.php
Agora vamos fazer um login usando credenciais inexistentes e analisar qual será o comportamento do formulário na tratativa de um login inválido.
Conforme podemos observar, nenhuma mensagem de erro é visivelmente retornada. A fim de compreender melhor o comportamento de uma aplicação, é aconselhável o uso de um Proxy para manipular as requisições e obter informações que podem ajudar na etapa de um ataque de força bruta e também, claramente, em outros ataques explorando vulnerabilidades em aplicações web. Contudo vou mostrar uma opção super interessante do Hydra e que nos ajudará a obter sucesso no ataque.
Ao ataque!
hydra "http-post-form://testphp.vulnweb.com/userinfo.php:uname=^USER^&pass=^PASS^:S=logout" -L dicionario.txt -P dicionario.txt -f
Explicando os parâmetros utilizados:
Sintax do comando: hydra {serviço atacado}://{URL da página}:{Parâmetros do corpo do formulário da requisição POST}:S={encontrar algum padrão na página após fazer login com sucesso}
http-post-form = método de ataque
uname=^USER^&pass=^PASS^ = O ^USER^ e o ^PASS^ serão substituídos pelas entradas nos arquivos de usuário e senha que estamos enviando para o programa.
S=logout = palavras identificadas após login sucedido. Utilizamos a palavra "logout" por ser uma função de encerrar a sessão que é comumente utilizada em páginas de login
-L = Insira a lista de possíveis usuários (wordlist) - usaremos a lista gerada pelo cewl
-P = Insira a lista de possíveis senhas (wordlist) - usaremos a lista gerada pelo cewl
-f = Ao identificar um par de usuário:senha, o hydra é finalizado imediatamente e mostrado a credencial válida
Login válido identificado:
test:test
Há muito mais o que ser aproveitado dessa ótima ferramenta que é o Hydra, já que neste artigo nós acabamos de aprender como usar a força bruta em formulários de login baseado em aplicações web, aprendemos apenas um protocolo "http-post-form". Também podemos explorar mais opções de ataque do Hydra contra outros protocolos como: ssh, ftp, stmp, rdp, telnet, VNC e etc.
Referências:
https://github.com/vanhauser-thc/thc-hydra
0 comentários: