Gerar Senhas com Hydra para Ataques de Força Bruta

HydraBeginner
Pratique Agora

Introdução

Neste laboratório, aprenderá a utilizar o Hydra para gerar senhas para ataques de força bruta utilizando diversas técnicas de geração de senhas. O foco será no uso da opção -x do Hydra para criar senhas com base em diferentes critérios, como comprimento, conjuntos de caracteres e padrões comuns de senhas.

O laboratório guiará você por vários cenários de geração de senhas, incluindo conjuntos de caracteres básicos, combinações mistas de caracteres, padrões numéricos e estruturas de senhas do mundo real. Você irá atacar um servidor FTP fictício em localhost para praticar essas técnicas e aprender a analisar eficazmente a saída de ataques de força bruta.

Gerar Senhas com a Opção -x

Neste passo, aprenderá a utilizar a opção -x no Hydra para gerar senhas com base num formato especificado. Isto é útil quando se tem alguma informação sobre a estrutura potencial da senha, como um intervalo de comprimento conhecido ou um conjunto de caracteres.

A opção -x do Hydra permite definir um comprimento mínimo e máximo para as senhas geradas, juntamente com um conjunto de caracteres a utilizar. A sintaxe é -x min:max:charset.

Comecemos com um exemplo simples. Irá gerar senhas com 6 a 8 caracteres de comprimento, utilizando apenas letras minúsculas.

Primeiro, certifique-se de que está no diretório ~/project. Este é o diretório padrão quando inicia o laboratório.

cd ~/project

Agora, utilizará o Hydra para gerar senhas. Para demonstração, irá atacar o serviço SSH no localhost. Isto permitirá ver a geração de senhas sem executar um ataque real (uma vez que estamos a utilizar um utilizador inexistente).

Execute o seguinte comando no terminal:

hydra -l testuser -vV -x 3:5:a-z localhost ssh

Vamos decompor este comando:

  • hydra: O comando para executar a ferramenta Hydra.
  • -l testuser: Especifica o nome de utilizador a utilizar. Aqui está a usar "testuser" como um marcador (este utilizador provavelmente não existe).
  • -vV: Habilita a saída detalhada, mostrando cada tentativa.
  • -x 3:5:a-z: Esta é a parte chave. Indica ao Hydra para gerar senhas com:
    • 3: Comprimento mínimo de 3 caracteres.
    • 5: Comprimento máximo de 5 caracteres.
    • a-z: Utilizar apenas letras minúsculas (a-z). Outras opções incluem A-Z (maiúsculas), 0-9 (dígitos), e pode combiná-las, por exemplo, a-zA-Z0-9 para minúsculas, maiúsculas e dígitos.
  • localhost: O host alvo.
  • ssh: O serviço SSH a atacar.

Verá o Hydra a tentar ligações com senhas geradas como "aaa", "aaaa", "aaaaa", "aab", e assim por diante. Quando utiliza a opção -x, o Hydra gera automaticamente senhas com base nos critérios especificados.

Nota: O número de combinações para senhas de 3 a 5 caracteres utilizando apenas letras minúsculas é gerenciável: 26³ + 26⁴ + 26⁵ = 17.576 + 456.976 + 11.881.376 ≈ 12,4 milhões de combinações, o que está dentro dos limites do Hydra.

Importante: Utilize Ctrl+C para parar o ataque, pois levará muito tempo a completar.

A saída mostrará as senhas geradas à medida que o Hydra tenta conectar-se ao serviço SSH.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaaaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aab" - 1 of 1 [child 0] (0/0)
...

Limites de Combinação de Senhas:

Ao utilizar a opção -x do Hydra, é crucial considerar o número total de combinações de senhas que serão geradas. O Hydra tem um limite interno de 4 bilhões de senhas para evitar tentativas impraticáveis de força bruta.

Aqui estão alguns exemplos de contagens de combinações:

  • 3-5 caracteres, apenas minúsculas (a-z): ~12,4 milhões de combinações ✓
  • 4-6 caracteres, apenas minúsculas (a-z): ~321 milhões de combinações ✓
  • 6-8 caracteres, apenas minúsculas (a-z): ~217 bilhões de combinações ✗ (excede o limite)
  • 4-6 caracteres, alfanuméricos (a-zA-Z0-9): ~57 bilhões de combinações ✗ (excede o limite)

Calcule sempre o número de combinações antes de executar: tamanho_do_conjunto_de_caracteres^comprimento_mínimo + ... + tamanho_do_conjunto_de_caracteres^comprimento_máximo

Atacar FTP com Senhas Geradas

Neste passo, utilizará as capacidades de geração de senhas do Hydra para atacar um servidor FTP fictício. Utilizará uma lista de senhas gerada "na hora" com a opção -x.

Primeiro, precisa configurar um servidor FTP simples para testes. Utilizará python3-pyftpdlib, que é uma biblioteca de servidor FTP leve para Python.

Instale python3-pyftpdlib se ainda não estiver instalado:

sudo apt update
sudo apt install -y python3-pyftpdlib

Inicie o servidor FTP em segundo plano na porta 2121, servindo ficheiros do diretório ~/project. A opção -w permite acesso de escrita.

nohup python3 -m pyftpdlib -p 2121 -w -u testuser -P secret ~/project > /dev/null 2>&1 &

A parte nohup ... & executa o comando em segundo plano e impede que pare se fechar o terminal. > /dev/null 2>&1 redireciona a saída padrão e o erro padrão para /dev/null, mantendo o seu terminal limpo. As opções -u testuser -P secret configuram um utilizador com a senha "secret" que pode aceder ao servidor.

Agora, utilizará o Hydra para atacar este servidor FTP. Utilizará a opção -x para gerar senhas e tentar efetuar login como o utilizador "testuser".

Execute o seguinte comando no terminal:

hydra -l testuser -vV -x 4:6:a-z 127.0.0.1 ftp -s 2121

Vamos decompor este comando:

  • hydra: A ferramenta de linha de comandos Hydra.
  • -l testuser: Especifica o nome de utilizador a utilizar: "testuser".
  • -vV: Habilita a saída detalhada, mostrando cada tentativa de login.
  • -x 4:6:a-z: Indica ao Hydra para gerar senhas com:
    • 4: Comprimento mínimo de 4 caracteres.
    • 6: Comprimento máximo de 6 caracteres.
    • a-z: Utilizar apenas letras minúsculas (a-z).
  • 127.0.0.1: O host alvo (localhost). Utiliza 127.0.0.1 em vez de localhost para evitar potenciais problemas de resolução de DNS dentro do contêiner.
  • ftp: O serviço a atacar (FTP).
  • -s 2121: Especifica o número da porta. Está a atacar o servidor FTP que está a correr na porta 2121.

Deverá ver o Hydra a tentar logins com senhas geradas. Uma vez que o servidor FTP está configurado com credenciais específicas (nome de utilizador: testuser, senha: secret), o Hydra encontrará a senha correta quando gerar "secret" durante as suas tentativas de força bruta.

Importante: Utilize Ctrl+C para parar o ataque, pois levará algum tempo a completar.

A saída mostrará as tentativas de login e, eventualmente, uma mensagem de login bem-sucedido.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaaa
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaab
...
[2121][ftp] host: 127.0.0.1   login: testuser   password: secret

Agora, vamos tentar um exemplo ligeiramente mais complexo, combinando letras minúsculas e dígitos:

hydra -l testuser -vV -x 3:5:a-z0-9 127.0.0.1 ftp -s 2121

Isto irá gerar senhas como "aaa", "aab", "aac", e assim por diante, percorrendo sistematicamente todas as combinações de 3 caracteres primeiro, depois as combinações de 4 caracteres e, finalmente, as combinações de 5 caracteres. Observe a saída para ver as senhas geradas e o login bem-sucedido.

Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaa
[ATTEMPT]  target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aab
...
[2121][ftp] host: 127.0.0.1   login: testuser   password: secret

Este passo demonstrou como utilizar o Hydra com a opção -x para gerar senhas e atacar um servidor FTP. Lembre-se de utilizar estas técnicas de forma responsável e ética.

Geração de Senhas com Letras Maiúsculas e Minúsculas

Neste passo, aprenderá a gerar senhas utilizando letras maiúsculas e minúsculas. Este é um padrão comum de senhas utilizado por muitos utilizadores, tornando-o uma estratégia eficaz de força bruta.

Muitos utilizadores criam senhas com letras maiúsculas e minúsculas para cumprir os requisitos de complexidade das senhas. Compreender este padrão pode melhorar significativamente a taxa de sucesso da sua força bruta.

Certifique-se de que se encontra no diretório ~/project e que o seu servidor FTP ainda está a funcionar:

cd ~/project

Vamos gerar senhas utilizando letras maiúsculas e minúsculas. Execute o seguinte comando:

hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121

Este comando gera senhas utilizando:

  • a-z: letras minúsculas (a-z)
  • A-Z: letras maiúsculas (A-Z)

Verá senhas como "aaa", "Aaa", "aAa", "AAa", "aaA", "AaA", "aAA", "AAA", "aab", "Aab", etc. Note como o Hydra combina sistematicamente letras maiúsculas e minúsculas.

Vamos tentar o intervalo de 3 a 4 caracteres para ver o padrão mais claramente:

hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121

Isto irá gerar senhas de 3 a 4 caracteres com maiúsculas e minúsculas. Pode observar como as combinações progridem:

  • 3 caracteres: "aaa", "Aaa", "aAa", "AAa", "aaA", "AaA", "aAA", "AAA", "aab", "Aab", etc.
  • 4 caracteres: "aaaa", "Aaaa", "aAaa", "AAaa", "aaaA", "AaaA", "aAaA", "AAaA", etc.

Compreendendo o Padrão:

A geração de senhas com maiúsculas e minúsculas segue uma abordagem sistemática em que o Hydra tenta todas as combinações possíveis de letras maiúsculas e minúsculas. Isto é particularmente eficaz porque:

  1. Muitas políticas de senhas exigem maiúsculas e minúsculas
  2. Os utilizadores frequentemente capitalizam a primeira letra ou letras aleatórias
  3. Padrões comuns incluem a capitalização da primeira letra das palavras

Este passo demonstrou como utilizar a geração de letras maiúsculas e minúsculas para ataques de força bruta, o que é eficaz contra senhas que utilizam letras maiúsculas e minúsculas.

Geração de Senhas Alfanuméricas

Neste passo, aprenderá a gerar senhas que combinam letras e números. As senhas alfanuméricas são extremamente comuns, pois equilibram segurança com memorização.

As senhas alfanuméricas são um dos tipos de senhas mais comuns porque:

  • Cumprem a maioria dos requisitos de complexidade de senhas
  • São mais fáceis de lembrar do que cadeias aleatórias puras
  • São frequentemente utilizadas em ambientes corporativos

Vamos gerar senhas alfanuméricas usando o Hydra:

hydra -l testuser -vV -x 3:4:a-zA-Z0-9 127.0.0.1 ftp -s 2121

Isto gera senhas com:

  • a-z: letras minúsculas (a-z)
  • A-Z: letras maiúsculas (A-Z)
  • 0-9: dígitos (0-9)

Exemplos de senhas geradas: "abc", "A2b", "123", "aB1", "Te1", etc.

Vamos tentar uma abordagem mais focada apenas com letras minúsculas e dígitos:

hydra -l testuser -vV -x 3:4:a-z0-9 127.0.0.1 ftp -s 2121

Isto irá gerar senhas como "aaa", "aa1", "a12", "123", "test", etc.

Padrões Alfanuméricos Comuns:

Os utilizadores frequentemente seguem padrões previsíveis ao criar senhas alfanuméricas:

  1. Palavra + números (ex.: "pass123")
  2. Números + palavra (ex.: "123pass")
  3. Alternância de letras e números (ex.: "a1b2")

Vamos simular um padrão onde os utilizadores podem usar combinações alfanuméricas curtas:

hydra -l testuser -vV -x 4:5:a-z0-9 127.0.0.1 ftp -s 2121

Este passo demonstrou como gerar senhas alfanuméricas, que são um dos tipos de senhas mais comuns em cenários do mundo real.

Geração de Senhas Apenas Numéricas

Neste passo, aprenderá a gerar senhas exclusivamente numéricas. Estas são comuns para códigos PIN, senhas simples e sistemas com requisitos apenas numéricos.

As senhas numéricas são frequentemente utilizadas em:

  • Códigos PIN para dispositivos e contas
  • Senhas simples para sistemas básicos
  • Senhas temporárias
  • Sistemas legados com requisitos apenas numéricos

Vamos gerar senhas numéricas:

hydra -l testuser -vV -x 3:6:0-9 127.0.0.1 ftp -s 2121

Isto gera senhas puramente numéricas como "123", "1234", "0000", "9999", "5678", etc.

Para senhas tipo PIN (tipicamente 4 a 6 dígitos), tente:

hydra -l testuser -vV -x 4:4:0-9 127.0.0.1 ftp -s 2121

Isto gera exatamente combinações de 4 dígitos que poderiam representar:

  • Anos (1990, 2000, 2023, etc.)
  • Códigos PIN comuns (1234, 0000, 1111, etc.)
  • Anos de nascimento
  • Datas significativas

Vamos tentar um padrão de 6 dígitos comum para PINs mais longos:

hydra -l testuser -vV -x 6:6:0-9 127.0.0.1 ftp -s 2121

Padrões Numéricos Comuns:

Os utilizadores frequentemente escolhem senhas numéricas previsíveis:

  1. Números sequenciais: 123456, 654321
  2. Dígitos repetidos: 111111, 000000
  3. Datas: anos de nascimento, ano atual
  4. Padrões simples: 121212, 123123

Aplicação no Mundo Real:

A geração de senhas numéricas é especialmente útil ao visar:

  • Códigos PIN de dispositivos móveis
  • Códigos PIN de caixas eletrônicos
  • Senhas simples de sistemas
  • Códigos de acesso temporários

Este passo demonstrou como gerar senhas numéricas, frequentemente utilizadas em muitos sistemas.

Geração de Senhas com Conjuntos de Caracteres Personalizados e Símbolos

Neste passo, aprenderá a criar conjuntos de caracteres personalizados que incluem símbolos específicos. Isto é útil quando sabe ou suspeita que o alvo utiliza certos caracteres especiais nas suas palavras-passe.

Muitas políticas de palavras-passe exigem caracteres especiais, e os utilizadores frequentemente escolhem símbolos comuns que são fáceis de digitar. Compreender quais os símbolos a incluir pode tornar os seus ataques de força bruta mais eficientes.

Vamos gerar palavras-passe com conjuntos de caracteres personalizados que incluem símbolos específicos:

hydra -l testuser -vV -x '3:4:a-z0-9!@#' 127.0.0.1 ftp -s 2121

Isto gera palavras-passe utilizando:

  • a-z: letras minúsculas (a-z)
  • 0-9: dígitos (0-9)
  • !@#: símbolos específicos

Exemplos: "abc!", "a1@", "te#", "12!", etc.

Vamos tentar um conjunto diferente de símbolos comuns:

hydra -l testuser -vV -x '3:4:a-z$%&' 127.0.0.1 ftp -s 2121

Isto utiliza letras minúsculas e os símbolos $, %, &.

Para palavras-passe que podem incluir símbolos mais complexos:

hydra -l testuser -vV -x '3:4:a-zA-Z0-9!@#$%^&*' 127.0.0.1 ftp -s 2121

Isto cria um conjunto de caracteres abrangente com:

  • Letras minúsculas e maiúsculas
  • Dígitos
  • Símbolos comuns: !@#$%^&*

Símbolos de Palavras-Passe Mais Comuns:

Com base na análise de palavras-passe, estes símbolos são os mais frequentemente utilizados:

  1. ! - Ponto de exclamação
  2. @ - Símbolo arroba
  3. # - Símbolo de hash/libra
  4. $ - Sinal de dólar
  5. % - Sinal de percentagem
  6. ^ - Acento circunflexo
  7. & - E comercial
  8. * - Asterisco

Seleção Estratégica de Símbolos:

Ao criar conjuntos de caracteres personalizados, considere:

  • Acessibilidade do teclado (símbolos na linha numérica são comuns)
  • Requisitos da política de palavras-passe
  • Preferências culturais (alguns símbolos são mais comuns em certas regiões)
  • Limitações do sistema (alguns sistemas não permitem certos símbolos)

Conjuntos de Símbolos Alvo:

Para cenários específicos, poderá utilizar conjuntos de símbolos alvo:

## Pontuação comum
hydra -l testuser -vV -x '3:4:a-z0-9.,;:' 127.0.0.1 ftp -s 2121

## Símbolos de colchetes
hydra -l testuser -vV -x '3:4:a-z0-9()[]{}' 127.0.0.1 ftp -s 2121

## Símbolos matemáticos
hydra -l testuser -vV -x '3:4:a-z0-9+-=/' 127.0.0.1 ftp -s 2121

Este passo demonstrou como criar conjuntos de caracteres personalizados com símbolos específicos, permitindo adaptar os seus ataques de força bruta com base em padrões de palavras-passe conhecidos ou suspeitos.

Resumo

Neste laboratório, aprendeu a utilizar o Hydra para gerar palavras-passe para ataques de força bruta através de uma abordagem passo-a-passo abrangente. Explorou a opção -x do Hydra em vários cenários específicos, cada um focado em técnicas de geração de palavras-passe específicas.

Praticou estratégias distintas de geração de palavras-passe, incluindo:

  • Geração básica de palavras-passe: Compreensão da sintaxe da opção -x e conceitos fundamentais
  • Cenários de ataque FTP: Aplicação da geração de palavras-passe contra serviços reais
  • Letras maiúsculas e minúsculas mistas: Combinação de letras maiúsculas e minúsculas para padrões comuns de palavras-passe
  • Palavras-passe alfanuméricas: Utilização de letras e números, o tipo de palavra-passe mais comum em cenários do mundo real
  • Palavras-passe numéricas apenas: Alvo de códigos PIN e palavras-passe numéricas simples com alta eficiência de quebra
  • Conjuntos de caracteres personalizados com símbolos: Criação de combinações de símbolos direcionadas com base em padrões de utilização comuns