Ajustar a Contagem de Threads do Hydra

HydraBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderá a ajustar a contagem de threads no Hydra, uma poderosa ferramenta de quebra de logins de rede, para otimizar seu desempenho. Configurará um servidor SSH básico na VM LabEx e, em seguida, utilizará o Hydra para realizar tentativas de quebra de senha com diferentes contagens de threads (16, 32 e 4). Comparando a velocidade e observando os efeitos dessas diferentes configurações, compreenderá como otimizar ataques com o Hydra ajustando a contagem de threads com base nos recursos disponíveis e nas características do serviço-alvo.

Configurar o Servidor SSH

Neste passo, configuraremos um servidor SSH básico na VM LabEx. SSH (Secure Shell) é um protocolo de rede criptográfico para operar serviços de rede de forma segura através de uma rede não segura. É comumente usado para login remoto por linha de comando e execução remota de comandos.

Primeiro, precisamos instalar o servidor OpenSSH. OpenSSH é um conjunto de ferramentas de rede relacionadas à segurança baseadas no protocolo Secure Shell, e é a implementação SSH mais comum.

Abra um terminal na VM LabEx. Você pode usar o terminal Xfce padrão.

Execute o comando a seguir para atualizar as listas de pacotes:

sudo apt update

Este comando sincroniza os arquivos de índice de pacotes de suas fontes. É uma boa prática executar isso antes de instalar qualquer novo software. Você poderá ser solicitado a inserir sua senha, mas lembre-se que o usuário labex possui privilégios sudo sem senha.

Em seguida, instale o servidor OpenSSH:

sudo apt install openssh-server -y

O flag -y responde automaticamente "sim" a quaisquer solicitações durante a instalação, tornando o processo não interativo.

Após a instalação ser concluída, o servidor SSH deve iniciar automaticamente. Você pode verificar seu status usando o seguinte comando:

sudo service ssh status

Para confirmar que o servidor SSH está em execução, você pode verificar se a porta SSH (porta 22) está em escuta. Use o comando netstat:

netstat -tulnp | grep 22

Você deve ver uma saída semelhante a esta:

tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      -
tcp6       0      0 :::22                   :::*                    LISTEN      -

Isso indica que o servidor SSH está em escuta na porta 22 para conexões IPv4 e IPv6.

Agora que o servidor SSH está configurado, você pode se conectar a ele de outra máquina usando um cliente SSH. No entanto, neste laboratório, focaremos em usar o Hydra para quebrar a senha SSH com diferentes configurações de threads.

Executar o Hydra com 16 Threads Padrão

Neste passo, utilizará o Hydra para tentar quebrar a senha do utilizador labex no seu servidor SSH. Começará usando a contagem padrão de threads do Hydra, que é 16.

A lista de senhas já foi descarregada durante o processo de configuração. O ficheiro ~/project/password.txt contém a lista de palavras unix_passwords.txt do framework Metasploit, que inclui centenas de senhas Unix comuns. Esta lista de palavras mais extensa fornecerá uma demonstração melhor das diferenças de desempenho das threads em comparação com uma pequena lista manual.

Pode verificar se a lista de senhas está disponível e verificar o seu tamanho:

ls -la ~/project/password.txt
wc -l ~/project/password.txt

Isto mostrará os detalhes do ficheiro e o número de senhas na lista de palavras (deverão ser centenas de entradas).

Agora, execute o comando Hydra. A opção -l especifica o nome de utilizador a atacar (labex), -P especifica o caminho para a sua lista de senhas (~/project/password.txt), e -V ativa o modo detalhado para mostrar cada tentativa. ssh://localhost indica que está a atacar o serviço SSH na máquina local.

hydra -V -l labex -P ~/project/password.txt ssh://localhost

O Hydra agora começará a tentar efetuar login no servidor SSH usando cada senha no seu ficheiro password.txt. Como não especificou a opção -t, o Hydra utilizará o seu valor padrão de 16 threads, o que significa que tentará 16 tentativas de senha simultaneamente. A opção -V mostrará cada tentativa em tempo real.

Nota Importante sobre a opção -V:

O parâmetro -V (detalhado) é crucial para observar o processo de ataque. Sem ele, o Hydra apenas mostra informações resumidas e o resultado final, mas não verá as linhas individuais [ATTEMPT] que mostram cada senha a ser testada. Esta saída detalhada ajuda a compreender como a threading afeta a velocidade e o padrão do ataque.

Verá uma saída semelhante a esta à medida que o Hydra avança:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 16 tasks per 1 server, overall 16 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

Com a lista de palavras mais extensa, notará que o Hydra demora mais tempo a encontrar a senha correta, tornando as diferenças na contagem de threads mais evidentes. Observe as informações de tempo que o Hydra fornece quando termina.

Aumentar para 32 Threads e Comparar a Velocidade

Neste passo, aumentará o número de threads utilizadas pelo Hydra para 32 e observará o impacto na velocidade de quebra. Aumentar a contagem de threads pode potencialmente acelerar o processo permitindo mais tentativas simultâneas, mas a sua eficácia depende dos recursos do seu sistema e das limitações do serviço alvo.

Execute o seguinte comando no seu terminal para executar o Hydra com 32 threads:

hydra -V -t 32 -l labex -P ~/project/password.txt ssh://localhost

Este comando é idêntico ao anterior, exceto pela adição de -t 32, que indica explicitamente ao Hydra para usar 32 threads. A opção -V garante que pode ver cada tentativa de senha.

Observe a saída. Deverá notar que o Hydra reporta o início de 32 tarefas/threads:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 32 tasks per 1 server, overall 32 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

Comparando a Velocidade:

Com a lista de palavras mais extensa, deverá ser capaz de observar diferenças de tempo mais notáveis entre as execuções com 16 threads e 32 threads. Preste atenção a:

  • As horas de início e término reportadas pelo Hydra
  • O cálculo de "tentativas por tarefa", que mostra como a carga de trabalho é distribuída
  • O tempo total necessário para concluir o ataque

Com 32 threads, poderá observar tempos de conclusão mais rápidos, especialmente se a senha alvo estiver localizada mais tarde na lista de palavras. No entanto, também poderá notar um aumento no uso dos recursos do sistema e potencialmente mais tentativas de conexão sendo feitas simultaneamente.

Reduzir para 4 Threads e Observar

Neste passo, reduzirá o número de threads utilizadas pelo Hydra para 4 e observará o impacto no desempenho. Este cenário é útil quando se tem recursos de sistema limitados ou quando o serviço alvo pode ter um limite de taxa agressivo que poderia bloquear muitas tentativas de conexão simultâneas.

Execute o seguinte comando no seu terminal para executar o Hydra com 4 threads:

hydra -V -t 4 -l labex -P ~/project/password.txt ssh://localhost

Este comando é semelhante aos anteriores, mas agora está a definir explicitamente a contagem de threads para 4 usando -t 4. A opção -V mostrará cada tentativa de senha em detalhe.

Observe a saída. Deverá ver que o Hydra inicia apenas 4 tarefas/threads:

Hydra vX.Y (c) YYYY by van Hauser/THC - Use freely but only for legal purposes.

Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] max 4 tasks per 1 server, overall 4 tasks, XXX login tries (l:1/p:XXX), ~XX tries per task
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost - login: labex - pass: !@#$%
[ATTEMPT] target: localhost - login: labex - pass: !@#$%^
[ATTEMPT] target: localhost - login: labex - pass: 000000
...
[22][ssh] host: localhost   login: labex   password: labex
1 of 1 target successfully completed, 1 valid password found
Hydra finished at YYYY-MM-DD HH:MM:SS

Observando o Impacto:

Com apenas 4 threads e a lista de palavras mais extensa, deverá notar uma diferença significativa no desempenho:

  • O número de "tentativas por tarefa" será muito maior, pois cada thread terá de lidar com mais senhas.
  • O tempo total de conclusão deverá ser significativamente mais longo em comparação com as execuções com 16 e 32 threads.
  • Verá menos mensagens [ATTEMPT] simultâneas, pois apenas 4 tentativas estão a ser executadas simultaneamente.

Este experimento demonstra que uma contagem de threads mais baixa geralmente resulta em desempenho mais lento, mas pode ser um ajuste necessário em certas situações, como quando se tenta evitar a deteção pelas medidas de segurança de um sistema alvo ou quando se opera numa máquina com recursos limitados.

Analisar o Impacto das Threads no Desempenho

Neste passo, analisará o impacto do número de threads no desempenho do Hydra com base nas suas observações dos passos anteriores. Experimentou com 4, 16 (padrão) e 32 threads utilizando uma lista de palavras extensa do framework Metasploit.

Considerações Chave para a Contagem de Threads:

  • Recursos do Sistema: O número ideal de threads é fortemente influenciado pelos recursos disponíveis do seu sistema, incluindo núcleos de CPU, memória e largura de banda de rede. Se definir a contagem de threads demasiado alta, o seu sistema poderá ficar sobrecarregado, levando a uma degradação do desempenho devido a sobrecarga de comutação de contexto e contenção de recursos.
  • Limitações do Serviço Alvo: O serviço alvo (neste caso, SSH) pode ter limites de taxa ou outros mecanismos de segurança em vigor. Se o serviço limitar o número de tentativas de login por unidade de tempo, aumentar as threads para além de um determinado ponto não melhorará o desempenho e poderá até disparar alertas de segurança ou bloqueios temporários.
  • Latência da Rede: Uma latência de rede elevada entre o Hydra e o serviço alvo também pode limitar a eficácia do aumento da contagem de threads. Cada thread precisa de estabelecer e manter uma conexão, e uma latência elevada pode tornar estas operações lentas, anulando os benefícios do paralelismo.
  • Tamanho da Lista de Palavras: Com listas de palavras maiores, como a utilizada neste laboratório, as diferenças na contagem de threads tornam-se mais evidentes. A lista de palavras unix_passwords.txt contém centenas de entradas, tornando o impacto do desempenho de diferentes contagens de threads mais observável.

Observações e Diretrizes Gerais:

  • 4 Threads: Esta configuração é geralmente mais lenta, mas é adequada para sistemas com recursos limitados ou quando se ataca serviços com limites de taxa rigorosos. É menos provável que cause sobrecarga do sistema ou dispare alertas de segurança imediatos. Com a lista de palavras extensa, deverá ter observado tempos de conclusão significativamente mais longos.
  • 16 Threads (Padrão): O valor padrão de 16 threads do Hydra é frequentemente um bom equilíbrio entre desempenho e utilização de recursos para muitos sistemas e serviços alvo. Fornece um nível razoável de paralelismo sem normalmente sobrecarregar a máquina atacante ou o alvo.
  • 32 Threads: Aumentar a contagem de threads para 32 pode potencialmente melhorar o desempenho, especialmente se o seu sistema tiver recursos suficientes (por exemplo, múltiplos núcleos de CPU) e o serviço alvo não tiver limites de taxa agressivos. No entanto, é crucial monitorizar a utilização de recursos do seu sistema para garantir que não se torna um gargalo.

Métricas de Desempenho a Considerar:

Ao avaliar o desempenho das threads, considere estes fatores:

  • Tempo total de execução: Quanto tempo demora desde o início até ao fim.
  • Tentativas por segundo: A taxa a que são feitas as tentativas de senha.
  • Utilização de recursos do sistema: Utilização da CPU, memória e rede.
  • Resposta do serviço alvo: Se o serviço se torna inativo ou implementa bloqueios.

Conclusão:

Não existe uma única "melhor" contagem de threads para o Hydra; a configuração ideal depende de uma variedade de fatores específicos da sua máquina atacante e do serviço alvo. É importante experimentar diferentes configurações e monitorizar o desempenho do seu sistema e a resposta do alvo para encontrar o equilíbrio mais eficiente entre velocidade e utilização de recursos. Compreender estas dinâmicas permite otimizar os seus ataques Hydra para diferentes cenários.

Resumo

Neste laboratório, aprendeu a ajustar a contagem de threads do Hydra e o seu impacto no desempenho utilizando uma lista de palavras de senhas substancial. Começou por configurar um servidor SSH básico na sua VM LabEx. Em seguida, utilizou o Hydra para realizar tentativas de quebra de senha contra este servidor SSH com diferentes contagens de threads: o valor padrão de 16, um aumento para 32 e uma redução para 4, utilizando a lista de palavras unix_passwords.txt do framework Metasploit. Observando a velocidade e o tempo de conclusão para cada cenário com uma lista de palavras de tamanho realista, adquiriu conhecimentos práticos sobre como a contagem de threads afeta a eficiência do Hydra. Este laboratório demonstrou a importância de otimizar a contagem de threads com base nos recursos do sistema disponíveis e nas características do serviço alvo para alcançar o melhor desempenho em operações de quebra de senha.