Quebrar Hashes NTLM de um Sistema Windows

Kali LinuxBeginner
Pratique Agora

Introdução

Neste laboratório, você se aprofundará no mundo da segurança de senhas aprendendo a quebrar hashes NTLM (NT LAN Manager). NTLM é um algoritmo de hashing usado por sistemas Microsoft Windows para armazenar senhas de usuários. Compreender como esses hashes podem ser quebrados é uma habilidade fundamental em testes de penetração e auditoria de segurança.

Você usará o Hashcat, uma ferramenta poderosa e popular de recuperação de senhas, para realizar um ataque de dicionário contra um hash NTLM de amostra. Ao final deste laboratório, você entenderá o processo básico de quebra de senhas e apreciará a importância de usar senhas fortes e complexas.

Compreender o que são Hashes NTLM

Nesta etapa, você aprenderá sobre os conceitos básicos dos hashes NTLM. Esse conhecimento fundamental é crucial antes de tentar quebrá-los.

NTLM (NT LAN Manager) é um conjunto de protocolos de segurança desenvolvido pela Microsoft. Uma de suas funções principais é lidar com a autenticação. Quando você define uma senha em um sistema Windows, ela não é armazenada em texto puro. Em vez disso, ela é convertida em um valor de hash usando o algoritmo NTLM.

Um hash NTLM é um valor de 128 bits, tipicamente representado como uma string hexadecimal de 32 caracteres. Por exemplo, o hash NTLM para a senha "password" é 8846f7eaee8fb117ad06bdd830b7586c.

Como o hashing é um processo unidirecional, você não pode "desfazer o hash" diretamente para obter a senha original. No entanto, atacantes podem usar técnicas como ataques de dicionário ou ataques de força bruta para adivinhar a senha, gerar o hash da sua suposição e verificar se ele corresponde ao hash alvo. Este é o processo que exploraremos neste laboratório.

Não há comandos para executar nesta etapa. Por favor, prossiga para a próxima etapa para criar um arquivo de hash de amostra.

Criar um Arquivo de Hash NTLM de Amostra

Nesta etapa, você criará um arquivo contendo um hash NTLM de amostra. Em um teste de penetração do mundo real, você primeiro precisaria extrair esses hashes do banco de dados do Gerenciador de Contas de Segurança (SAM) de um sistema Windows. Para este laboratório educacional, simplesmente criaremos um arquivo de texto com um hash conhecido.

Todo o seu trabalho será feito no diretório ~/project. Primeiro, use o comando echo para criar um arquivo chamado ntlm_hash.txt e escrever um hash NTLM de amostra nele. Este hash corresponde a uma senha comum e fraca.

echo "8846f7eaee8fb117ad06bdd830b7586c" > ~/project/ntlm_hash.txt

Agora, verifique se o arquivo foi criado corretamente exibindo seu conteúdo usando o comando cat.

cat ~/project/ntlm_hash.txt

Você deverá ver a seguinte saída, que é o hash que você acabou de salvar:

8846f7eaee8fb117ad06bdd830b7586c

Com o arquivo de hash pronto, você pode agora prosseguir para a preparação do processo de quebra.

Selecionar o Modo de Hash Correto para NTLM

Nesta etapa, você aprenderá como identificar o modo de hash correto no Hashcat para hashes NTLM.

O Hashcat é uma ferramenta versátil que suporta centenas de tipos de hash diferentes, desde hashes de senha de aplicativos web até hashes de sistema operacional. Para funcionar corretamente, você deve dizer ao Hashcat exatamente qual tipo de hash você está tentando quebrar. Isso é feito usando um número de modo específico.

Você pode encontrar o número do modo para NTLM pesquisando no menu de ajuda do Hashcat. Use o comando grep para filtrar a saída por "NTLM".

hashcat --help | grep NTLM

A saída listará vários tipos de hash relacionados ao NTLM. Procure pela entrada para NTLM padrão.

...
1000 | NTLM                                             | Operating System
...

Como você pode ver na saída, o número do modo para NTLM é 1000. Você usará este número na próxima etapa para dizer ao Hashcat como interpretar o hash em seu arquivo ntlm_hash.txt.

Lançar um Ataque de Dicionário contra o Hash NTLM

Nesta etapa, você usará o Hashcat para lançar um ataque de dicionário contra o hash NTLM. Um ataque de dicionário é um método de quebra de senha tentando uma lista de palavras e frases comuns, conhecida como "wordlist" ou "dicionário".

O script de configuração para este laboratório já baixou uma wordlist popular chamada rockyou.txt para o seu diretório ~/project. Agora, você construirá o comando Hashcat para iniciar o ataque.

A estrutura do comando é a seguinte:

  • hashcat: O nome do programa.
  • -m 1000: O modo de hash para NTLM, que você identificou na etapa anterior.
  • ~/project/ntlm_hash.txt: O caminho para o seu arquivo contendo o hash alvo.
  • ~/project/rockyou.txt: O caminho para a wordlist.
  • --force: Esta opção diz ao Hashcat para executar mesmo que detecte problemas potenciais com o ambiente, o que pode ser útil em laboratórios virtualizados.

Agora, execute o comando completo no seu terminal:

hashcat -m 1000 ~/project/ntlm_hash.txt ~/project/rockyou.txt --force

O Hashcat será iniciado. O processo pode levar alguns momentos, pois ele carrega a wordlist e começa a comparar os hashes. Você verá uma saída semelhante à seguinte:

hashcat (vX.X.X) starting...

...

Session..........: hashcat
Status...........: Running
Hash.Type........: NTLM
Hash.Target......: 8846f7eaee8fb117ad06bdd830b7586c
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (~/project/rockyou.txt)
...

Session..........: hashcat
Status...........: Cracked
...

A mensagem "Status...........: Cracked" indica que o Hashcat encontrou a senha com sucesso.

Analisar a Senha NTLM Quebrada

Nesta etapa, você visualizará e analisará a senha quebrada que o Hashcat descobriu.

Uma vez que o Hashcat quebra um hash com sucesso, ele salva o resultado em um arquivo chamado "potfile" (como em "pot of gold"). Isso evita que você tenha que quebrar o mesmo hash novamente no futuro. O local padrão para este arquivo é ~/.local/share/hashcat/hashcat.potfile.

A maneira mais fácil de ver a senha quebrada é usar a opção --show do Hashcat. Este comando diz ao Hashcat para exibir quaisquer senhas quebradas para os hashes fornecidos no seu arquivo de entrada.

Execute o seguinte comando:

hashcat -m 1000 ~/project/ntlm_hash.txt --show

O Hashcat verificará seu potfile e exibirá o resultado para o seu hash:

8846f7eaee8fb117ad06bdd830b7586c:password

O formato da saída é hash:plaintext_password. Como você pode ver, a senha original para o hash 8846f7eaee8fb117ad06bdd830b7586c é password.

Você também pode visualizar o potfile bruto diretamente usando o comando cat:

cat ~/.local/share/hashcat/hashcat.potfile

Isso mostrará o mesmo resultado. Você agora quebrou com sucesso um hash NTLM e recuperou a senha original.

Resumo

Neste laboratório, você realizou com sucesso um ataque básico de quebra de senha contra um hash NTLM.

Você aprendeu:

  • O que são hashes NTLM e como eles são usados em sistemas Windows.
  • Como usar o Hashcat, uma poderosa ferramenta de recuperação de senhas.
  • O conceito de ataque de dicionário e a importância de wordlists como rockyou.txt.
  • O processo de identificação do tipo de hash correto, lançamento de um ataque e visualização da senha quebrada.

Este exercício demonstra com que facilidade senhas fracas podem ser comprometidas. Ele destaca a importância crítica de usar senhas fortes, únicas e complexas, bem como mecanismos de hashing robustos, para proteger sistemas e dados contra acesso não autorizado.