Utilizar Verificações Adicionais de Senha no Hydra

HydraBeginner
Pratique Agora

Introdução

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:

telnet  stream  tcp nowait telnetd /usr/sbin/tcpd  /usr/sbin/telnetd

Comente esta linha adicionando um # no início da linha:

#telnet  stream  tcp nowait telnetd /usr/sbin/tcpd  /usr/sbin/telnetd

Agora, adicione a seguinte linha abaixo da linha comentada. Esta nova linha configura o Telnet para usar a opção -i, que desabilita a autenticação.

telnet  stream  tcp nowait telnetd /usr/sbin/in.telnetd -i
Arquivo de configuração do Telnet

A seção relevante do seu arquivo /etc/inetd.conf deve agora parecer assim:

#telnet  stream  tcp nowait telnetd /usr/sbin/tcpd  /usr/sbin/telnetd
telnet  stream  tcp nowait telnetd /usr/sbin/in.telnetd -i

Pressione Ctrl+X para sair do nano. Quando solicitado a salvar, pressione Y e, em seguida, Enter para salvar as alterações em /etc/inetd.conf.

Além disso, precisamos verificar se o PAM está configurado para permitir senhas nulas para o Telnet. Verifique a configuração do PAM:

cat /etc/pam.d/common-auth | grep pam_unix.so

Você deve ver uma linha como esta:

auth    [success=1 default=ignore]      pam_unix.so nullok

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 -l testuser -P ~/project/unix_passwords.txt -vV -e nsr telnet://localhost

Vamos decompor este 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:

[23][telnet] host: localhost   login: testuser   password:

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:

hydra -l testuser -P ~/project/unix_passwords.txt -vV -e ns telnet://localhost

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.