Neste laboratório, você aprenderá os comandos e técnicas essenciais para usar o Hydra, uma ferramenta versátil de quebra de senhas. Você explorará as estruturas básicas de comandos com opções-chave como nome de usuário (-l/-L), senha (-p/-P) e especificação de porta (-s), enquanto pratica um ataque SSH simples contra um servidor de teste.
Os exercícios irão guiá-lo através da configuração do alvo, execução do ataque e interpretação da saída. Ao completar este laboratório, você obterá experiência prática com a funcionalidade principal do Hydra para tentativas básicas de força bruta contra serviços de rede.
Importante: Este laboratório foi projetado para a Interface de Desktop. NÃO execute os comandos na Interface de Terminal Único.
Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 83%. Recebeu uma taxa de avaliações positivas de 99% dos estudantes.
Entenda a Estrutura de Comandos do Hydra
Nesta etapa, exploraremos a estrutura fundamental de comandos do Hydra, uma ferramenta poderosa para testar a segurança de senhas através de ataques de força bruta. Antes de começarmos, é importante entender que o Hydra tenta sistematicamente diferentes combinações de nome de usuário e senha contra serviços de rede para identificar credenciais fracas.
Vamos detalhar as opções mais comumente usadas para entender o que cada parte faz:
-l ou -L: Permitem especificar um único nome de usuário (-l) para teste ou um arquivo contendo múltiplos nomes de usuário (-L)
-p ou -P: Semelhante aos nomes de usuário, permitem testar uma única senha (-p) ou múltiplas senhas de um arquivo (-P)
-t: Controla quantos tentativas o Hydra faz simultaneamente (threads paralelas)
-s: Importante quando o serviço que você está testando não usa seu número de porta padrão
-vV: Mostra informações detalhadas de progresso durante o ataque
-o: Salva seus resultados em um arquivo especificado para revisão posterior
Para verificar se o Hydra está funcionando corretamente e ver todas as opções disponíveis, começaremos com um comando simples que exibe o menu de ajuda:
hydra -h
Após executar isso, você deverá ver a lista completa de opções e comandos do Hydra. Esta saída confirma que a ferramenta está devidamente instalada e pronta para nossos exercícios de teste de segurança. O menu de ajuda também é uma referência útil quando você precisa verificar a sintaxe específica de um comando durante seu trabalho.
Especifique o Host e a Porta de Destino
Nesta etapa, você aprenderá como especificar o host e a porta de destino ao usar o Hydra. Isso é essencial para direcionar seu ataque ao serviço correto. Pense nisso como endereçar um envelope - você precisa do destino certo (IP/nome do host) e da caixa postal específica (porta) para entregar sua mensagem.
O formato básico para especificar informações de destino no Hydra é:
hydra [options] < service > :// < target > [:port]
Vamos detalhar cada componente:
<service>: O protocolo ou serviço que você está atacando (por exemplo, ssh, ftp, http). Isso informa ao Hydra que tipo de autenticação tentar.
<target>: O endereço IP ou nome do host do servidor de destino. Isso é como o endereço do prédio que você está tentando acessar.
[:port]: Número da porta opcional. Os serviços geralmente são executados em portas padrão (como 22 para SSH), mas às vezes são movidos para portas diferentes por segurança.
Para praticar, usaremos um servidor SSH de teste rodando em localhost (127.0.0.1) na porta 22. Isso significa que estamos atacando nossa própria máquina, o que é seguro para aprendizado. Tente este comando para verificar a especificação do destino:
Aqui está o que está acontecendo neste comando de teste:
-vV faz com que o Hydra mostre uma saída detalhada para que você possa ver o que está acontecendo
-l testuser especifica um nome de usuário de teste
-p testpass fornece uma senha de teste
ssh://127.0.0.1:22 informa ao Hydra para tentar a autenticação SSH em nossa máquina local
Observação: Este é apenas um comando de teste para demonstrar a sintaxe. Usaremos credenciais reais nas etapas posteriores, quando você entender como as peças se encaixam.
Utilize as Opções de Nome de Usuário e Senha
Nesta etapa, exploraremos como o Hydra lida com as credenciais de autenticação para ataques de força bruta. Entender essas opções é crucial porque o Hydra precisa saber quais combinações tentar ao tentar fazer login no sistema de destino.
O Hydra fornece três métodos principais para especificar credenciais, cada um adequado para diferentes cenários:
Teste de Credencial Única (útil para verificação rápida):
hydra -l username -p password ssh://127.0.0.1
Este comando tenta exatamente uma combinação de nome de usuário/senha contra o serviço SSH.
Teste baseado em Lista (comum para ataques de dicionário):
Aqui, o Hydra tentará todas as combinações possíveis entre os nomes de usuário em usernames.txt e as senhas em passwords.txt.
Arquivo de Credenciais Emparelhadas (quando nomes de usuário e senhas estão diretamente vinculados):
hydra -C creds.txt ssh://127.0.0.1
Isso usa um arquivo onde cada linha contém um nome de usuário e senha separados por dois pontos (nome_de_usuario:senha).
Vamos criar arquivos de teste para praticar com essas opções. Primeiro, faremos uma lista simples de nomes de usuário contendo contas administrativas comuns:
echo -e "admin\nroot\ntestuser" > usernames.txt
Em seguida, criaremos uma lista de senhas com algumas senhas fracas que são frequentemente encontradas em sistemas do mundo real:
As flags -vV fazem com que o Hydra mostre uma saída detalhada para que você possa observar o progresso do ataque e entender o que está acontecendo em cada etapa.
Execute um Comando Simples de Ataque SSH
Nesta etapa, você combinará todo o aprendizado anterior para executar um ataque de força bruta SSH completo usando o Hydra. Usaremos o servidor SSH de teste rodando em localhost (127.0.0.1) com as credenciais que preparamos anteriormente. Este exercício prático o ajudará a entender como o Hydra tenta sistematicamente diferentes combinações de nome de usuário e senha contra um serviço SSH.
Antes de lançar o ataque, vamos verificar se nossa configuração de destino está funcionando corretamente. Tentaremos uma conexão SSH manual para confirmar se o serviço está em execução:
ssh testuser@127.0.0.1
(Digite "Ctrl+C" quando solicitado a senha para retornar à sua sessão)
Este teste manual nos ajuda a confirmar que o serviço SSH está ativo e respondendo às tentativas de conexão. Quando o Hydra for executado, ele fará tentativas de conexão semelhantes, mas automatizará o processo com várias tentativas.
A VM do LabEx fornece a senha para labex na variável de ambiente PASSWORD. Vamos adicioná-la ao arquivo de senhas para teste:
Importante: Execute os seguintes comandos na Interface da Área de Trabalho, caso contrário, você não obterá a variável de ambiente PASSWORD.
Agora, vamos executar o comando de ataque Hydra real. É aqui que reunimos todos os componentes que preparamos - a lista de nomes de usuário, a lista de senhas e as informações de destino:
-vV: Habilita a saída verbose para que você possa ver o progresso do Hydra em tempo real
-L usernames.txt: Especifica o arquivo contendo os possíveis nomes de usuário a serem testados
-P passwords.txt: Especifica o arquivo contendo as possíveis senhas a serem testadas
-t 4: Define o número de conexões paralelas (threads) a serem usadas
ssh://127.0.0.1: Identifica nosso destino como um serviço SSH em localhost
O comando testará sistematicamente todas as combinações de nossas listas de nomes de usuário e senhas. Em nosso ambiente de teste controlado, isso intencionalmente falhará em encontrar credenciais válidas, mas você verá exatamente como o Hydra trabalha através das combinações. A saída verbose mostrará cada tentativa que o Hydra faz, ajudando você a entender o processo de força bruta.
Observe como o Hydra lida automaticamente com tentativas fracassadas e continua com a próxima combinação. Isso demonstra o poder das ferramentas automatizadas em comparação com os testes manuais. O processo pode levar alguns momentos, pois o Hydra trabalha em todas as combinações possíveis em nossos arquivos de teste.
Verificar a Saída do Comando
Nesta etapa, examinaremos como ler e entender a saída do Hydra após executar um ataque SSH. Isso é importante porque a saída nos diz se o ataque foi bem-sucedido e fornece informações valiosas para depuração. Como iniciante, você aprenderá a identificar os principais indicadores de sucesso nos resultados.
Quando você executou o comando de ataque SSH na Etapa 4, o Hydra gerou uma saída que se parece com isto:
[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... done
[STATUS] 80.00 tries/min, 80 tries in 00:01h, 19 to do in 00:01h
[22][ssh] host: 127.0.0.1 login: testuser password: testpass
1 of 1 target successfully completed, 1 valid password found
Vamos detalhar o que cada parte significa:
A linha [DATA] mostra o serviço e o endereço de destino que estão sendo atacados
[STATUS] fornece estatísticas em tempo real sobre o progresso do ataque
A linha mais importante mostra quaisquer credenciais encontradas no formato: [port][service] host: IP login: username password: password
A linha final resume os resultados do ataque
Para documentação e análise posterior, você pode salvar a saída do Hydra em um arquivo usando a opção -o. Isso cria um registro permanente dos seus resultados de teste:
Após a conclusão do comando, você pode visualizar os resultados salvos com:
cat results.txt
Este arquivo conterá a mesma saída que você viu no terminal, permitindo que você revise os resultados posteriormente ou os compartilhe com os membros da equipe.
Resumo
Neste laboratório, você aprendeu os comandos e técnicas essenciais para conduzir ataques de quebra de senhas usando o Hydra. Os exercícios cobriram a sintaxe básica de comandos, incluindo a especificação de nome de usuário/senha com as flags -l/-L e -p/-P, a configuração de porta com -s e a verificação básica da instalação do Hydra.
Você também praticou a especificação de destino usando o formato <service>://<target>[:port] por meio de exemplos práticos de ataque SSH. Essas habilidades fundamentais permitem que você execute operações básicas do Hydra, compreendendo a estrutura correta dos comandos e a definição de destino.