Interromper Ataques Hydra Precocemente

HydraBeginner
Pratique Agora

Introdução

Neste laboratório, exploraremos como interromper ataques Hydra precocemente, aproveitando suas opções para limitar o número de tentativas. Começaremos configurando um servidor FTP usando vsftpd e configurando-o com várias contas de usuário, testuser1 e testuser2, cada uma com sua própria senha. Esta configuração permitirá simular um cenário em que o Hydra tenta quebrar várias contas simultaneamente.

O laboratório então guiará você no uso da opção -f para interromper o Hydra após o primeiro login bem-sucedido e da opção -F com uma lista de múltiplos hosts. Finalmente, compararemos o comportamento de -f e -F para entender como eles podem ser usados para mitigar ataques Hydra.

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 100%. Recebeu uma taxa de avaliações positivas de 100% dos estudantes.

Configurar FTP com Múltiplas Credenciais

Neste passo, configuraremos um servidor FTP e o configuraremos com múltiplas credenciais de usuário. Isso nos permitirá testar a capacidade do Hydra de quebrar várias contas simultaneamente. Usaremos o vsftpd (Very Secure FTP Daemon) como nosso servidor FTP.

Primeiro, vamos instalar o vsftpd. Abra seu terminal e execute o seguinte comando:

sudo apt update
sudo apt install vsftpd -y

Em seguida, precisamos configurar o vsftpd. Começaremos criando um backup do arquivo de configuração original. Esta é uma boa prática antes de fazer quaisquer alterações nos arquivos de configuração do sistema.

sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak

Agora, vamos editar o arquivo de configuração /etc/vsftpd.conf usando o nano. Este arquivo controla o comportamento do servidor FTP.

sudo nano /etc/vsftpd.conf

Dentro do editor nano, adicione ou modifique as seguintes linhas. Essas configurações desabilitarão o acesso anônimo, habilitarão logins de usuários locais, permitirão acesso de escrita e colocarão os usuários locais em seu diretório home para segurança.

anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
listen=YES
listen_ipv6=NO

Para salvar o arquivo no nano:

  1. Pressione Ctrl + X para sair.
  2. Pressione Y para confirmar a gravação.
  3. Pressione Enter para confirmar o nome do arquivo.

Após salvar o arquivo, verifique o arquivo de configuração para garantir que as alterações foram aplicadas corretamente, usando o seguinte comando:

sudo cat /etc/vsftpd.conf | grep -E "^(anonymous_enable|local_enable|write_enable|chroot_local_user|listen)"

Certifique-se de que a saída mostre a mesma configuração que adicionamos.

Agora, vamos criar várias contas de usuário. Criaremos dois usuários: testuser1 e testuser2, e definiremos senhas para eles. Esses usuários serão usados pelo Hydra para tentar fazer login.

Crie testuser1 com um diretório home:

sudo useradd -m testuser1

Defina a senha para testuser1 usando um comando não interativo:

echo 'testuser1:password123' | sudo chpasswd

Crie testuser2 com um diretório home:

sudo useradd -m testuser2

Defina a senha para testuser2 usando um comando não interativo:

echo 'testuser2:password456' | sudo chpasswd

Esses comandos são não interativos e criarão os usuários diretamente sem solicitar entrada, tornando-os mais confiáveis em ambientes automatizados.

Agora, precisamos corrigir as permissões do diretório home para a configuração chroot. Quando chroot_local_user=YES está habilitado, o diretório home do usuário não deve ser gravável pelo usuário por razões de segurança:

sudo chmod 755 /home/testuser1
sudo chmod 755 /home/testuser2

Crie um subdiretório gravável para cada usuário onde eles podem fazer upload de arquivos:

sudo mkdir /home/testuser1/files
sudo mkdir /home/testuser2/files
sudo chown testuser1:testuser1 /home/testuser1/files
sudo chown testuser2:testuser2 /home/testuser2/files

Em seguida, reinicie o serviço vsftpd para aplicar as alterações que fizemos no arquivo de configuração e reconhecer os novos usuários.

sudo service vsftpd restart

Agora, vamos testar o servidor FTP para garantir que ele esteja funcionando corretamente e que nossos novos usuários possam fazer login. Você pode usar o cliente de linha de comando ftp para se conectar ao servidor. Como estamos executando o servidor localmente, podemos nos conectar ao localhost.

ftp localhost

Você será solicitado para um nome de usuário. Digite testuser1 e depois a senha password123. Se tudo estiver configurado corretamente, você verá uma mensagem indicando que você fez login.

Connected to localhost.
220 (vsFTPd 3.0.3)
Name (localhost:labex): testuser1
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp>

Você pode digitar bye para sair do cliente FTP.

ftp> bye
221 Goodbye.

Agora, vamos preparar os arquivos que o Hydra usará para seu ataque. Navegue até seu diretório ~/project, que é seu diretório de trabalho padrão.

cd ~/project

Crie um arquivo chamado users.txt no diretório ~/project. Este arquivo conterá os nomes de usuário que o Hydra tentará usar.

nano users.txt

Adicione os seguintes nomes de usuário a users.txt:

testuser1
testuser2

Salve o arquivo e saia do nano.

Em seguida, crie um arquivo chamado passwords.txt no diretório ~/project. Este arquivo conterá uma lista de senhas, incluindo as corretas para nossos usuários de teste, juntamente com algumas senhas incorretas comuns.

nano passwords.txt

Adicione as seguintes senhas a passwords.txt:

password123
password456
password
123456
qwerty

Salve o arquivo e saia do nano.

Agora temos um servidor FTP configurado com várias contas de usuário e uma lista de nomes de usuário e senhas que o Hydra pode usar para tentar quebrar as contas.

Executar com -f para Parar Após o Primeiro Par

Neste passo, usaremos a opção -f com o Hydra. A opção -f instrui o Hydra a parar após encontrar o primeiro par válido de nome de usuário/senha para um único alvo. Isso é útil quando você precisa encontrar apenas uma conta válida em um serviço específico e não deseja que o Hydra continue tentando outras combinações após um login bem-sucedido.

Certifique-se de que você esteja no diretório ~/project.

cd ~/project

Agora, vamos executar o Hydra contra nosso servidor FTP usando as listas de nomes de usuário e senhas que criamos no passo anterior. Incluiremos a opção -f.

hydra -L users.txt -P passwords.txt localhost ftp -f

Vamos decompor este comando:

  • hydra: A ferramenta de linha de comando para força bruta.
  • -L users.txt: Especifica o arquivo contendo a lista de nomes de usuário (users.txt no diretório atual).
  • -P passwords.txt: Especifica o arquivo contendo a lista de senhas (passwords.txt no diretório atual).
  • localhost: O endereço do servidor FTP de destino.
  • ftp: O protocolo de serviço a ser atacado (FTP, neste caso).
  • -f: Esta é a opção crucial que instrui o Hydra a parar após encontrar o primeiro par válido de nome de usuário/senha.

Observe a saída no seu terminal. O Hydra tentará fazer login usando os nomes de usuário e senhas das listas. Assim que encontrar uma combinação válida (por exemplo, testuser1:password123), exibirá o login bem-sucedido e, em seguida, interromperá sua operação.

A saída deve ser semelhante a esta:

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Please use caution!

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-29 14:41:46
[DATA] max 10 tasks per 1 server, overall 10 tasks, 10 login tries (l:2/p:5), ~1 try per task
[DATA] attacking ftp://localhost:21/
[21][ftp] host: localhost   login: testuser1   password: password123
1 of 1 target successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-29 14:41:47

Observe que o Hydra parou imediatamente após encontrar a primeira combinação válida (testuser1:password123). Sem a opção -f, o Hydra teria continuado tentando todas as outras combinações no arquivo passwords.txt para testuser1, e depois passado para testuser2 e tentado todas as senhas para esse usuário também.

Esta opção é particularmente útil quando você está testando um serviço específico e precisa apenas verificar se pelo menos uma conta é vulnerável, economizando tempo e recursos significativos.

Testar -F com Lista de Múltiplos Hosts

Neste passo, exploraremos a opção -F no Hydra. Diferentemente de -f, que para após encontrar o primeiro par de credenciais válido para um único host, -F para após encontrar o primeiro par de credenciais válido em todos os hosts de uma lista. Isso é particularmente útil quando você está atacando múltiplos sistemas e precisa encontrar apenas uma entrada vulnerável entre eles.

Para demonstrar isso, simularemos um cenário de múltiplos hosts. Como temos apenas uma máquina virtual, usaremos localhost várias vezes em nossa lista de hosts para simular alvos diferentes.

Primeiro, certifique-se de que você esteja no diretório ~/project.

cd ~/project

Agora, vamos criar um arquivo chamado hosts.txt em seu diretório ~/project. Este arquivo conterá uma lista de hosts de destino.

nano hosts.txt

Adicione as seguintes linhas a hosts.txt:

localhost
localhost

Salve o arquivo e saia do nano. Ao listar localhost duas vezes, estamos dizendo ao Hydra para tratá-lo como dois alvos separados, mesmo que apontem para a mesma máquina.

Agora, vamos executar o Hydra com a opção -F, visando a lista de hosts especificada em hosts.txt.

hydra -L users.txt -P passwords.txt -M hosts.txt ftp -F

Vamos decompor este comando:

  • -L users.txt: Especifica o arquivo contendo a lista de nomes de usuário.
  • -P passwords.txt: Especifica o arquivo contendo a lista de senhas.
  • -M hosts.txt: Esta é a nova opção. Especifica o arquivo contendo a lista de hosts de destino (hosts.txt no diretório atual).
  • ftp: O protocolo de serviço a ser atacado.
  • -F: Esta é a opção crucial que instrui o Hydra a parar após encontrar o primeiro login bem-sucedido em todos os hosts da lista.

Observe a saída no seu terminal. O Hydra tentará fazer login em cada host no arquivo hosts.txt usando os nomes de usuário e senhas das listas. Assim que encontrar uma combinação válida em qualquer dos hosts, exibirá o login bem-sucedido e, em seguida, interromperá o ataque a todos os hosts listados em hosts.txt.

A saída deve ser semelhante a esta:

Hydra v9.6 (c) 2024 by van Hauser/THC & David Maciejak - Please use caution!

Hydra (https://github.com/vanhauser-thc/thc-hydra) starting at 2025-05-29 14:42:10
[DATA] max 10 tasks per 2 servers, overall 20 tasks, 10 login tries (l:2/p:5), ~1 try per task
[DATA] attacking ftp://(2 targets):21/
[21][ftp] host: localhost   login: testuser1   password: password123
[STATUS] attack finished for localhost (valid pair found)
2 of 2 targets successfully completed, 1 valid password found
Hydra (https://github.com/vanhauser-thc/thc-hydra) finished at 2025-05-29 14:42:11

Mesmo que tenhamos duas entradas de localhost em hosts.txt, o Hydra para após encontrar o primeiro login bem-sucedido na primeira instância de localhost. Ele não prossegue para tentar encontrar credenciais para a segunda entrada de localhost, demonstrando o efeito da opção -F.

A opção -F é altamente útil quando você está atacando múltiplos sistemas e precisa encontrar apenas um sistema vulnerável para atingir seu objetivo. Ela pode economizar significativamente tempo e recursos computacionais, parando o ataque assim que uma vulnerabilidade é encontrada em qualquer um dos alvos listados.

Comparar o Comportamento de -f e -F

Neste passo, compararemos diretamente o comportamento das opções -f e -F para consolidar sua compreensão das diferenças entre elas. Usaremos a mesma configuração dos passos anteriores: um servidor FTP rodando em localhost, os arquivos users.txt e passwords.txt, e o arquivo hosts.txt contendo duas entradas para localhost.

Primeiro, vamos executar novamente o comando usando a opção -f. Este comando visa um único host (localhost) e para após encontrar a primeira credencial válida para aquele host específico.

hydra -L users.txt -P passwords.txt localhost ftp -f

Como observamos no Passo 2, o Hydra encontrará testuser1:password123 e, em seguida, parará. Ele não tentará encontrar testuser2:password456 para localhost.

Agora, vamos executar novamente o comando usando a opção -F. Este comando visa uma lista de hosts (hosts.txt) e para após encontrar a primeira credencial válida em qualquer dos hosts dessa lista.

hydra -L users.txt -P passwords.txt -M hosts.txt ftp -F

Como observamos no Passo 3, o Hydra encontrará testuser1:password123 na primeira entrada de localhost em hosts.txt e, em seguida, parará. Ele não prosseguirá para verificar a segunda entrada de localhost no arquivo hosts.txt.

A diferença fundamental reside em como o Hydra interpreta o alvo e quando decide parar:

  • -f (único alvo): Quando você especifica um único alvo (por exemplo, localhost), -f instrui o Hydra a parar assim que encontrar qualquer par de nome de usuário/senha válido para aquele alvo específico. Ele não continuará a procurar outras credenciais válidas no mesmo alvo.

  • -F (lista de múltiplos hosts): Quando você especifica uma lista de alvos usando -M, -F instrui o Hydra a parar assim que encontrar qualquer par de nome de usuário/senha válido em qualquer dos hosts dessa lista. Ele não continuará a procurar outras credenciais válidas no mesmo host, nem prosseguirá para verificar hosts subsequentes na lista.

Para ilustrar ainda mais a diferença, considere um cenário hipotético em que você está escanejando uma rede com múltiplos servidores FTP: ftp1.example.com, ftp2.example.com e ftp3.example.com.

  • Se você usar -f e visar ftp1.example.com, o Hydra encontrará a primeira credencial válida em ftp1.example.com e parará. Se você quiser verificar ftp2.example.com, precisará executar um comando Hydra separado para ele.

  • Se você colocar os três servidores em um arquivo hosts.txt e usar -F, o Hydra começará a verificar ftp1.example.com. Se encontrar uma credencial válida lá, interromperá imediatamente toda a operação, sem sequer tentar se conectar a ftp2.example.com ou ftp3.example.com.

Em resumo:

  • Use -f quando estiver focado em um único alvo e quiser encontrar pelo menos uma credencial válida para ele.
  • Use -F quando estiver escanejando múltiplos alvos e quiser interromper toda a operação assim que qualquer credencial válida for encontrada em qualquer dos alvos.

Este laboratório termina aqui. Você configurou com sucesso um servidor FTP, configurou várias contas de usuário e usou o Hydra para quebrar as contas, explorando as opções -f e -F para controlar o comportamento de ataque do Hydra.

Resumo

Neste laboratório, você aprendeu a controlar o comportamento de ataque do Hydra usando as opções -f e -F. Iniciou configurando um servidor FTP local usando vsftpd e o configurando com várias contas de usuário (testuser1 e testuser2) para simular um cenário do mundo real. Também preparou os arquivos users.txt e passwords.txt para o Hydra utilizar.

Em seguida, utilizou a opção -f para instruir o Hydra a parar após encontrar o primeiro par de nome de usuário/senha válido para um único alvo, demonstrando como encontrar eficientemente uma única conta vulnerável. Após isso, explorou a opção -F com uma lista de múltiplos hosts (hosts.txt), aprendendo como o Hydra pode interromper um ataque multi-alvo assim que uma única credencial válida é encontrada em qualquer um dos hosts listados.

Finalmente, comparou os comportamentos distintos de -f e -F, compreendendo seus respectivos casos de uso: -f para parar após o primeiro sucesso em um único alvo, e -F para parar após o primeiro sucesso em múltiplos alvos. Este conhecimento é crucial para otimizar ataques de força bruta e gerenciar recursos de forma eficaz.