Repetição de Senhas em Ataques Hydra

HydraBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderá como o Hydra itera através de nomes de utilizadores e palavras-passe durante um ataque SSH. Criará listas de nomes de utilizadores e palavras-passe e, em seguida, executará um ataque SSH padrão para observar o comportamento padrão do Hydra.

Primeiro, preparará os ficheiros usernames.txt e passwords.txt, contendo, respetivamente, listas de nomes de utilizadores e palavras-passe. Em seguida, executará um ataque SSH básico do Hydra utilizando estas listas para demonstrar como o Hydra tenta diferentes combinações. Finalmente, explorará o impacto da opção -u na ordem em que o Hydra tenta as combinações de nome de utilizador e palavra-passe.

Preparar Listas de Nomes de Utilizador e Senhas

Neste passo, criará dois ficheiros essenciais: uma lista de nomes de utilizador e uma lista de palavras-passe. Estas listas serão utilizadas pelo Hydra para tentar efetuar logins SSH. A criação destas listas permite-lhe testar sistematicamente várias combinações de nomes de utilizador e palavras-passe contra o seu alvo.

Primeiro, abra o seu terminal. Encontra-se atualmente no diretório /home/labex/project (também acessível como ~/project). Criará os ficheiros neste diretório.

Utilize o editor de texto nano para criar um ficheiro chamado usernames.txt:

nano ~/project/usernames.txt

Agora, adicione os seguintes nomes de utilizador ao ficheiro. Estes são exemplos; pode personalizá-los conforme necessário.

root
admin
test
user
ubuntu

Após adicionar o conteúdo, guarde o ficheiro pressionando Ctrl + O, depois Enter para confirmar o nome do ficheiro e, finalmente, Ctrl + X para sair do nano.

Em seguida, criará a lista de palavras-passe. Novamente, utilize nano para criar um ficheiro chamado passwords.txt:

nano ~/project/passwords.txt

Adicione as seguintes palavras-passe ao ficheiro. Lembre-se, estes são apenas exemplos.

password
123456
qwerty
secret
ubuntu

Guarde o ficheiro pressionando Ctrl + O, depois Enter para confirmar o nome do ficheiro e, finalmente, Ctrl + X para sair do nano.

Para verificar se os ficheiros foram criados corretamente, pode utilizar o comando cat para exibir o seu conteúdo.

Exiba o conteúdo de usernames.txt:

cat ~/project/usernames.txt

Deverá ver uma saída semelhante a esta:

root
admin
test
user
ubuntu

Analogamente, exiba o conteúdo de passwords.txt:

cat ~/project/passwords.txt

Deverá ver uma saída semelhante a esta:

password
123456
qwerty
secret
ubuntu

Estes ficheiros, usernames.txt e passwords.txt, estão agora prontos para serem utilizados com o Hydra nos passos seguintes.

Executar Ataque SSH Padrão

Neste passo, executará um ataque SSH básico utilizando o Hydra com as listas de nomes de utilizador e palavras-passe criadas no passo anterior. Isto demonstrará o comportamento padrão do Hydra de iterar através dos nomes de utilizador e palavras-passe.

A sintaxe básica do comando Hydra é:

hydra [options] <target> <service> [additional options]
  • hydra: O comando para invocar a ferramenta Hydra.
  • [options]: Várias opções para personalizar o ataque, como especificar listas de nomes de utilizador e palavras-passe.
  • <target>: O endereço IP ou nome de domínio do servidor SSH alvo. Neste laboratório, utilizará 127.0.0.1 (localhost) como alvo.
  • <service>: O serviço a atacar (ex.: ssh, ftp, http). Neste caso, é ssh.
  • [additional options]: Opções específicas do serviço.

Agora, execute o ataque SSH padrão. Utilizará a opção -L para especificar a lista de nomes de utilizador, a opção -P para especificar a lista de palavras-passe e a opção -V para ver uma saída detalhada mostrando cada tentativa.

hydra -V -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh

Este comando instrui o Hydra a:

  • -V: Ativar o modo detalhado para mostrar cada tentativa de login.
  • -L ~/project/usernames.txt: Utilizar o ficheiro usernames.txt no diretório ~/project como lista de nomes de utilizador.
  • -P ~/project/passwords.txt: Utilizar o ficheiro passwords.txt no diretório ~/project como lista de palavras-passe.
  • 127.0.0.1: Alvo do serviço SSH a correr no localhost.
  • ssh: Especificar que está a atacar o serviço SSH.

Execute o comando no seu terminal. O Hydra tentará agora efetuar login no serviço SSH em 127.0.0.1 utilizando cada nome de utilizador em usernames.txt e cada palavra-passe em passwords.txt. Por defeito, o Hydra itera primeiro pelos nomes de utilizador, tentando cada palavra-passe para um único nome de utilizador antes de passar ao próximo nome de utilizador.

A saída mostrará as tentativas que estão a ser feitas. Verá informações detalhadas sobre cada tentativa de login. Uma vez que está a utilizar palavras-passe fracas e a visar o localhost, é possível que um login tenha sucesso, mas a maioria das tentativas irá falhar.

A saída será semelhante a esta (a saída exata pode variar):

Hydra vX.X (c) XXXX by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at YYYY-MM-DD HH:MM:SS
[DATA] max X tasks per X server, overall X tasks, X login tries (l:X/p:X), ~X try per task
[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[ATTEMPT] target 127.0.0.1 - login "root" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "root" - pass "123456" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "root" - pass "qwerty" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "root" - pass "secret" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "root" - pass "ubuntu" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "admin" - pass "password" - X of X [child X] (X/X)
...

Note como o Hydra tenta todas as palavras-passe para o utilizador "root" primeiro, depois passa para "admin" e assim sucessivamente. Este é o comportamento padrão.

Executar com -u para Iterar Senhas Primeiro

Neste passo, utilizará a opção -u com o Hydra para alterar a ordem em que ele tenta os logins. Por defeito, o Hydra itera primeiro pelos nomes de utilizador, tentando todas as palavras-passe para cada nome de utilizador antes de passar ao seguinte. A opção -u inverte este comportamento, fazendo com que o Hydra itere primeiro pelas palavras-passe, tentando cada palavra-passe para todos os nomes de utilizador antes de passar à palavra-passe seguinte.

Isto pode ser útil em situações em que se suspeita que uma palavra-passe comum está a ser utilizada em várias contas.

Para utilizar a opção -u, basta adicioná-la ao seu comando Hydra anterior. Também utilizará novamente a opção -V para ver as tentativas detalhadas.

hydra -u -V -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh

Este comando instrui o Hydra a:

  • -u: Iterar pelas palavras-passe primeiro.
  • -V: Ativar o modo detalhado para mostrar cada tentativa de login.
  • -L ~/project/usernames.txt: Utilizar o ficheiro usernames.txt no diretório ~/project como lista de nomes de utilizador.
  • -P ~/project/passwords.txt: Utilizar o ficheiro passwords.txt no diretório ~/project como lista de palavras-passe.
  • 127.0.0.1: Alvo do serviço SSH a correr no localhost.
  • ssh: Especificar que está a atacar o serviço SSH.

Execute o comando no seu terminal. O Hydra tentará agora efetuar login no serviço SSH em 127.0.0.1. Desta vez, tentará a primeira palavra-passe em passwords.txt contra todos os nomes de utilizador em usernames.txt antes de passar à palavra-passe seguinte.

Observe a saída. Deverá notar que a ordem das tentativas é diferente do passo anterior. O Hydra agora tentará a mesma palavra-passe contra vários nomes de utilizador sequencialmente.

A saída será semelhante a esta (a saída exata pode variar):

Hydra vX.X (c) 2021 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes (this is non-binding, these *** ignore laws and ethics anyway).

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at YYYY-MM-DD HH:MM:SS
[DATA] max X tasks per X server, overall X tasks, X login tries (l:X/p:X), ~X try per task
[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... [VERBOSE] resolving done
[ATTEMPT] target 127.0.0.1 - login "root" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "admin" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "test" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "user" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "ubuntu" - pass "password" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "root" - pass "123456" - X of X [child X] (X/X)
[ATTEMPT] target 127.0.0.1 - login "admin" - pass "123456" - X of X [child X] (X/X)
...

Note como o Hydra agora tenta "password" contra todos os nomes de utilizador primeiro, depois passa para "123456" para todos os nomes de utilizador e assim por diante. Este é o comportamento quando se utiliza a opção -u.

Comparando a saída deste comando com a saída do comando do passo anterior, pode ver claramente a diferença na ordem das tentativas de login. Isto pode ser útil para compreender como o Hydra funciona e para escolher a estratégia de ataque mais eficaz para uma determinada situação.

Analisar Padrões e Desempenho do Ataque

Neste passo, analisará as diferenças práticas entre os dois métodos de ataque e compreenderá quando cada abordagem pode ser mais eficaz. Também explorará como otimizar ataques Hydra com base em diferentes cenários.

Compreendendo a Diferença Estratégica

A escolha entre o modo padrão e o modo -u pode impactar significativamente a eficiência do ataque:

  • Modo padrão (nome de utilizador primeiro): Melhor quando se suspeita que utilizadores específicos possam ter palavras-passe fracas.
  • Modo palavra-passe primeiro (-u): Melhor quando se suspeita que palavras-passe comuns são utilizadas em várias contas.

Vamos demonstrar isto com uma abordagem mais direcionada. Primeiro, crie um teste de teste mais pequeno e focado para ver claramente a diferença:

echo -e "admin\ntest" > ~/project/small_users.txt
echo -e "password\n123456" > ~/project/small_passwords.txt

Agora execute ambos os ataques com saída limitada para ver o padrão claramente:

Ataque padrão (nome de utilizador primeiro):

hydra -V -t 1 -L ~/project/small_users.txt -P ~/project/small_passwords.txt 127.0.0.1 ssh

A opção -t 1 limita o Hydra a usar apenas 1 tarefa de cada vez, tornando a sequência mais fácil de seguir.

Ataque palavra-passe primeiro:

hydra -u -V -t 1 -L ~/project/small_users.txt -P ~/project/small_passwords.txt 127.0.0.1 ssh

Análise de Desempenho

Agora vamos analisar o tempo e a eficiência. Crie um teste de tempo simples:

echo "Testing default mode timing..."
time hydra -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh > /dev/null 2>&1
echo "Testing -u mode timing..."
time hydra -u -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh > /dev/null 2>&1

Cenários de Aplicação no Mundo Real

Compreendendo quando utilizar cada modo:

  1. Utilize o modo padrão quando:

    • Possui informações sobre contas específicas de alto valor.
    • Deseja testar rapidamente se contas de administrador têm palavras-passe fracas.
    • Está a visar um pequeno número de utilizadores privilegiados.
  2. Utilize o modo -u quando:

    • Suspeita-se da reutilização de palavras-passe em várias contas.
    • Possui uma lista de palavras-passe comuns de violações anteriores.
    • Deseja encontrar qualquer conta com uma palavra-passe fraca comum.

Verificar Padrões de Ataque

Para ver claramente a diferença nos padrões de ataque, vamos criar uma demonstração simples:

echo "=== Padrão de Modo Padrão ==="
hydra -V -t 1 -L ~/project/small_users.txt -P ~/project/small_passwords.txt 127.0.0.1 ssh 2>&1 | grep "ATTEMPT" | head -4
echo "=== Padrão de Modo Palavra-Passe Primeiro ==="
hydra -u -V -t 1 -L ~/project/small_users.txt -P ~/project/small_passwords.txt 127.0.0.1 ssh 2>&1 | grep "ATTEMPT" | head -4

Isto mostrará claramente:

  • Modo padrão: admin/password, admin/123456, test/password, test/123456
  • Modo palavra-passe primeiro: admin/password, test/password, admin/123456, test/123456

A diferença torna-se crucial quando se lida com políticas de bloqueio de contas ou quando se tenta evitar a deteção espalhando tentativas por várias contas.

Resumo

Neste laboratório, aprendeu a preparar os ficheiros necessários para um ataque SSH com Hydra, criando listas de nomes de utilizador e palavras-passe no diretório ~/project. Executou ataques SSH usando o Hydra com saída detalhada para observar as tentativas de ataque detalhadas e compreender o comportamento de iteração do Hydra.

Explorou a diferença crucial entre o modo padrão do Hydra (iteração nome de utilizador primeiro) e a opção -u (iteração palavra-passe primeiro). Através da prática, descobriu:

  • Modo padrão: Tenta todas as palavras-passe para cada nome de utilizador antes de passar ao próximo nome de utilizador - ideal para visar contas específicas de alto valor.
  • Modo palavra-passe primeiro (-u): Tenta cada palavra-passe contra todos os nomes de utilizador antes de passar à próxima palavra-passe - melhor para encontrar contas com palavras-passe fracas comuns.

Também aprendeu considerações práticas para escolher entre estes modos, incluindo implicações de desempenho e cenários do mundo real em que cada abordagem é mais eficaz. Este conhecimento permite otimizar as suas estratégias de teste de penetração com base no ambiente e objetivos específicos do alvo.

O laboratório demonstrou como diferentes padrões de ataque podem ser cruciais quando se lida com políticas de bloqueio de contas ou quando se tenta evitar a deteção distribuindo tentativas de login por várias contas.