Neste laboratório, aprenderá a utilizar verificações de senha adicionais no Hydra, uma poderosa ferramenta para quebra de logins de rede. Especificamente, irá configurar um serviço Telnet na máquina virtual LabEx e, em seguida, utilizar o Hydra com a opção -e nsr para realizar tentativas de quebra de senha. Esta opção permite que o Hydra tente automaticamente senhas nulas, o nome de usuário como senha e o nome de usuário invertido como senha. Esta é uma técnica comum utilizada em testes de penetração para identificar rapidamente credenciais fracas ou padrão.
O laboratório guiará você na instalação e configuração do serviço Telnet na máquina virtual LabEx. Em seguida, utilizará o Hydra com a flag -e nsr para demonstrar como essas verificações adicionais podem ser usadas para encontrar senhas simples. Finalmente, comparará os resultados com o uso apenas da opção -e ns para compreender o impacto da inclusão da verificação de nome de usuário invertido.
Configurar o Serviço Telnet
Neste passo, configuraremos o serviço Telnet na máquina virtual LabEx. O Telnet é um protocolo de rede que fornece uma interface de linha de comando para um servidor remoto. Embora o Telnet seja geralmente considerado inseguro para ambientes de produção, pois transmite dados em texto simples, é adequado para demonstrar técnicas de quebra de senha em um ambiente de laboratório controlado.
Primeiro, precisamos criar uma conta de usuário de teste que terá uma senha nula:
sudo useradd -m testuser
sudo passwd -d testuser
O comando passwd -d remove a senha do usuário, criando efetivamente uma senha nula.
Precisamos editar o arquivo de configuração do Telnet, localizado em /etc/inetd.conf. Utilize o editor nano para abrir este arquivo:
sudo nano /etc/inetd.conf
Dentro do editor nano, encontre a linha que começa com telnet. Ela deve ser semelhante a esta:
Se a linha não contiver nullok, você precisa adicioná-la. Edite o arquivo:
sudo nano /etc/pam.d/common-auth
Encontre a linha que contém pam_unix.so e adicione nullok ao final, se não estiver presente. Salve e saia do arquivo se houver alterações.
Finalmente, precisamos reiniciar o serviço inetd para que as alterações entrem em vigor. Como estamos em um ambiente de contêiner Docker, usaremos o script /etc/init.d para reiniciar o serviço:
sudo /etc/init.d/openbsd-inetd restart
Você deve ver uma saída indicando que o serviço está sendo reiniciado:
* Restarting internet superserver inetd
O serviço Telnet agora está configurado e configurado para permitir logins sem senha para os propósitos deste laboratório.
Executar o Hydra com as Verificações -e nsr
Neste passo, usaremos o Hydra para realizar um ataque de força bruta contra o serviço Telnet. Especificamente, usaremos a opção -e nsr para instruir o Hydra a tentar senhas nulas, o próprio nome de usuário e o nome de usuário invertido como senhas potenciais.
Abra seu terminal no diretório ~/project e execute o seguinte comando:
hydra: Este é o comando para executar a ferramenta Hydra.
-l testuser: Especifica o nome de usuário a ser usado no ataque. Estamos visando o usuário de teste que criamos, que possui uma senha nula.
-P ~/project/unix_passwords.txt: Especifica um arquivo de lista de senhas a ser usado além das verificações especificadas por -e. Este arquivo contém uma lista de senhas comuns do Unix que baixamos na etapa de configuração.
-vV: Esta opção habilita a saída detalhada, mostrando cada tentativa de login e seu resultado.
-e nsr: Esta é a opção chave para esta etapa. Ela instrui o Hydra a realizar verificações adicionais:
n: Tentar uma senha nula (uma string vazia).
s: Tentar o nome de usuário (testuser) como senha.
r: Tentar o nome de usuário invertido (resutest) como senha.
telnet://localhost: Especifica o serviço e endereço de destino. telnet indica o protocolo Telnet, e localhost refere-se à máquina local (a própria máquina virtual LabEx).
Execute o comando. O Hydra começará a tentar fazer login no serviço Telnet na porta 23 (a porta padrão do Telnet) usando o nome de usuário especificado e as senhas da lista, bem como a senha nula, o nome de usuário e o nome de usuário invertido.
Você verá uma saída semelhante a esta conforme o Hydra realiza suas tentativas:
Hydra vX.Y (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
Hydra is starting...
[DATA] 1 task, 1 server, XXXX service(s)
[DATA] attacking service telnet on port 23
[DATA] attacking target localhost
[ATTEMPT] target localhost - login: 'testuser' - pass: ''
[23][telnet] host: localhost login: testuser password:
[ATTEMPT] target localhost - login: 'testuser' - pass: 'testuser'
[ATTEMPT] target localhost - login: 'testuser' - pass: 'resutest'
...
Como configuramos o usuário de teste para ter uma senha nula, o Hydra deverá encontrar rapidamente um login bem-sucedido usando a senha nula (a primeira tentativa com uma senha vazia).
Revisar a Saída para Verificar Sucesso das Verificações
Nesta etapa, examinaremos a saída do comando Hydra que você acabou de executar para identificar as tentativas de login bem-sucedidas.
Role para trás na saída do seu terminal. Procure linhas que indiquem um login bem-sucedido. Essas linhas geralmente são marcadas com o número da porta e o serviço, seguidas do host, login e senha.
Como configuramos o serviço Telnet para permitir logins sem senha, você deve ver uma linha semelhante a esta na saída:
Esta linha confirma que o Hydra efetuou login com sucesso no serviço Telnet em localhost usando o nome de usuário testuser e uma senha nula (indicada pelo espaço vazio após password:).
Você também pode ver outros logins bem-sucedidos se alguma das senhas no arquivo ~/project/unix_passwords.txt corresponder à senha real do usuário testuser (embora, neste laboratório, a senha nula seja a verificação bem-sucedida pretendida).
A opção -vV fornece uma saída detalhada para cada tentativa, o que é útil para entender como o Hydra está progredindo e quais senhas ele está tentando. A linha de login bem-sucedido mostra claramente as credenciais que funcionaram.
Esta etapa demonstra como a opção -e nsr ajuda a identificar rapidamente cenários comuns de senhas fracas, como senhas nulas, que muitas vezes são ignoradas em listas de senhas padrão.
Comparar com as Verificações -e ns
Nesta etapa, executaremos o Hydra novamente, mas desta vez usaremos a opção -e ns em vez de -e nsr. Isso instruirá o Hydra a tentar senhas nulas e o nome de usuário como senha, mas não tentará o nome de usuário invertido. Comparando a saída deste comando com o anterior, você poderá ver a diferença nas verificações realizadas.
Abra seu terminal no diretório ~/project e execute o seguinte comando:
Este comando é quase idêntico ao anterior, com a única diferença sendo a opção -e ns.
-e ns: Esta opção instrui o Hydra a realizar as seguintes verificações adicionais:
n: Tentar uma senha nula.
s: Tentar o nome de usuário (testuser) como senha.
Execute o comando. O Hydra novamente tentará fazer login no serviço Telnet, tentando senhas da lista, a senha nula e o nome de usuário como senha.
Observe a saída. Você verá tentativas para a senha nula e o nome de usuário como senha, semelhante à execução anterior. No entanto, você não verá uma tentativa para o nome de usuário invertido (resutest).
Hydra vX.Y (c) 2020 by van Hauser/THC - use allowed only for legal purposes.
Hydra is starting...
[DATA] 1 task, 1 server, XXXX service(s)
[DATA] attacking service telnet on port 23
[DATA] attacking target localhost
[ATTEMPT] target localhost - login: 'testuser' - pass: ''
[23][telnet] host: localhost login: testuser password:
[ATTEMPT] target localhost - login: 'testuser' - pass: 'testuser'
...
Comparando a saída deste comando com a saída da Etapa 2, você poderá ver claramente que a opção -e nsr inclui a verificação do nome de usuário invertido, enquanto a opção -e ns não. Isso destaca como as diferentes opções no Hydra permitem personalizar o processo de quebra de senha e incluir tipos específicos de verificações que podem ser relevantes em determinados cenários.
Resumo
Neste laboratório, você aprendeu a usar verificações de senha adicionais no Hydra configurando um serviço Telnet na VM LabEx e usando a opção -e nsr. Você instalou o pacote telnetd, configurou o serviço Telnet para permitir senhas nulas para demonstração, criando um usuário de teste com senha nula, modificando o arquivo /etc/inetd.conf e configurando o PAM para permitir senhas nulas.
Em seguida, você usou o Hydra com a opção -e nsr para realizar tentativas de quebra de senha, que incluíram a tentativa de senhas nulas, o nome de usuário como senha e o nome de usuário invertido como senha. Você observou a saída e identificou o login bem-sucedido usando a senha nula. Finalmente, você comparou os resultados com o uso da opção -e ns para entender a diferença nas verificações realizadas. Este laboratório demonstrou como as verificações de senha adicionais do Hydra podem ser usadas para identificar rapidamente credenciais fracas comuns.