Quebrar um Hash PMKID usando Hashcat

Beginner
Pratique Agora

Introdução

Neste laboratório, você aprenderá os fundamentos de como quebrar um hash PMKID (Pairwise Master Key Identifier) WPA/WPA2 usando o Hashcat, uma ferramenta de recuperação de senhas poderosa e versátil. Um PMKID faz parte do processo de autenticação WPA/WPA2 e, às vezes, pode ser capturado de um ponto de acesso sem que um cliente precise estar presente. Quebrar um PMKID é frequentemente mais eficiente do que quebrar um handshake completo de 4 vias.

Você passará por todo o processo, desde a preparação de um arquivo de hash até a execução de um ataque de dicionário com o Hashcat. Essa experiência prática fornecerá uma compreensão prática de como a quebra de senhas funciona em um ambiente controlado e educacional. Todas as atividades neste laboratório são apenas para fins educacionais.

Converter a Captura PMKID para um Formato Compatível com Hashcat

Nesta etapa, você aprenderá sobre o formato exigido pelo Hashcat para quebrar hashes PMKID. Normalmente, os PMKIDs são extraídos de arquivos de captura de rede brutos (por exemplo, arquivos .pcapng). Uma ferramenta como o hcxpcapngtool é usada para converter a captura em um formato de hash de texto simples que o Hashcat pode processar.

O comando para fazer isso seria: hcxpcapngtool -o <arquivo_hash_saida> <arquivo_captura_entrada.pcapng>

Para este laboratório, a fim de garantir um processo tranquilo, já realizamos essa conversão para você. O hash resultante é salvo em um arquivo chamado pmkid.hash em seu diretório atual (~/project).

Vamos examinar o conteúdo deste arquivo para entender sua estrutura. Use o comando cat para exibir o conteúdo do arquivo.

cat pmkid.hash

Você verá a seguinte saída, que é uma única linha representando o hash PMKID:

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65

Este formato é PMKID*MAC_AP*MAC_STA*SSID_HEX. Cada parte é separada por um asterisco, fornecendo ao Hashcat todas as informações necessárias para realizar o ataque.

Selecionar o Modo Correto do Hashcat para WPA-PMKID, que é -m 16800

Nesta etapa, você identificará o modo correto para quebrar hashes PMKID no Hashcat. O Hashcat suporta centenas de algoritmos de hash diferentes, e cada um é atribuído um número de modo exclusivo. Fornecer o modo correto é essencial para que o Hashcat funcione corretamente.

Você pode encontrar a lista de todos os tipos de hash suportados e seus modos correspondentes usando a opção --help com o comando hashcat. Para refinar a lista, você pode canalizar a saída para grep e pesquisar por uma palavra-chave específica como "PMKID".

Execute o seguinte comando para encontrar o modo para WPA-PMKID:

hashcat --help | grep "WPA-PMKID"

A saída mostrará o modo de hash relevante:

16800 | WPA-PMKID-PBKDF2                                     | Network Protocols

Como você pode ver na saída, o número do modo para WPA-PMKID-PBKDF2 é 16800. Você usará este número de modo com a opção -m em seu comando Hashcat.

Construir o Comando Hashcat com o Arquivo de Hash

Nesta etapa, você começará a construir o comando hashcat. A sintaxe básica para um ataque de dicionário é hashcat [opções] <arquivo_hash> <arquivo_lista_palavras>.

Até agora, você identificou dois componentes chave:

  1. O modo de hash: -m 16800
  2. O arquivo de hash: pmkid.hash

Vamos juntar isso. Também precisamos especificar um modo de ataque usando a opção -a. Um ataque de dicionário é o modo 0, então usaremos -a 0. Este é o modo de ataque padrão, mas é uma boa prática especificá-lo explicitamente.

Vamos tentar executar o comando apenas com o modo de hash e o arquivo de hash. Isso falhará, mas é uma boa maneira de confirmar nossa sintaxe e ver o que o Hashcat espera em seguida.

hashcat -m 16800 pmkid.hash

O Hashcat iniciará e, em seguida, sairá com uma mensagem de uso, pois está faltando um argumento obrigatório para este tipo de ataque.

hashcat (v6.2.6) starting...

* Device #1: WARNING! Kernel exec timeout is not disabled.
...
Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...

Try --help for more help.

O erro indica que, para o modo de ataque padrão (dicionário), uma lista de palavras ou um diretório é necessário. Isso confirma que nossa estrutura de comando está correta até agora e nos leva diretamente à próxima etapa: fornecer uma lista de palavras.

Especificar uma Lista de Palavras para o Ataque de Dicionário

Nesta etapa, você completará o comando Hashcat adicionando uma lista de palavras. Um ataque de dicionário funciona pegando cada palavra de um determinado arquivo (a "lista de palavras" ou "dicionário") e testando-a como uma senha potencial contra o hash.

Para este laboratório, um pequeno arquivo de lista de palavras chamado wordlist.txt foi criado para você no diretório ~/project. Vamos inspecionar seu conteúdo.

cat wordlist.txt

Você verá uma curta lista de senhas potenciais:

secret
123456
password123
qwertyuiop
labex

Uma dessas palavras é a senha correta para o nosso hash. Agora você pode construir o comando completo anexando o nome do arquivo da lista de palavras ao comando da etapa anterior.

O comando completo é: hashcat -m 16800 -a 0 pmkid.hash wordlist.txt

  • -m 16800: Especifica o tipo de hash WPA-PMKID.
  • -a 0: Especifica o modo de ataque de dicionário.
  • pmkid.hash: O arquivo contendo o hash a ser quebrado.
  • wordlist.txt: O arquivo de dicionário contendo os candidatos a senha.

Na etapa final, você executará este comando para quebrar o hash.

Executar o Hashcat e Analisar os Resultados da Quebra

Nesta etapa, você executará o comando Hashcat completo e analisará a saída para encontrar a senha quebrada. É hora de juntar tudo e iniciar o processo de quebra.

Execute o comando completo no seu terminal:

hashcat -m 16800 -a 0 pmkid.hash wordlist.txt

O Hashcat inicializará, exibirá informações da sessão e começará a testar as senhas de wordlist.txt. Como a lista de palavras é muito pequena, o processo será quase instantâneo. Assim que a senha correta for encontrada, o Hashcat a exibirá e relatará o status como "Cracked" (Quebrado).

A saída será semelhante a esta:

...
Session..........: hashcat
Status...........: Cracked
Hash.Name........: WPA-PMKID-PBKDF2
Hash.Target......: d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*...
Time.Started.....: ...
Time.Estimated...: 0 secs
Guess.Base.......: File (wordlist.txt)
...
Recovered........: 1/1 (100.00%) Digests
...

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65:password123

All hashes have been recovered.
...

A linha mais importante é d5b6c18645897310626525389ebb3461*...:password123, que mostra o hash original seguido por dois pontos e a senha recuperada: password123.

O Hashcat salva automaticamente as senhas quebradas. Para visualizar hashes previamente quebrados sem executar o ataque novamente, você pode usar a opção --show.

hashcat -m 16800 pmkid.hash --show

Este comando exibirá instantaneamente o par de hash e senha quebrados:

d5b6c18645897310626525389ebb3461*a0b1c2d3e4f5*f9e8d7c6b5a4*4d795377656574486f6d65:password123

Resumo

Parabéns por quebrar com sucesso um hash PMKID! Neste laboratório, você ganhou experiência prática com o Hashcat e aprendeu as etapas essenciais envolvidas em um ataque de dicionário.

Você aprendeu a:

  • Reconhecer o formato compatível com Hashcat para hashes PMKID.
  • Identificar o modo correto do Hashcat para um tipo de hash específico (-m 16800 para WPA-PMKID).
  • Construir um comando Hashcat completo para um ataque de dicionário (-a 0).
  • Executar o ataque usando um arquivo de hash e uma lista de palavras.
  • Analisar a saída e visualizar senhas quebradas usando a opção --show.

Embora este laboratório tenha usado um exemplo pequeno e simples, os mesmos princípios se aplicam a cenários do mundo real, que envolveriam listas de palavras muito maiores e hardware mais poderoso. As habilidades que você aprendeu fornecem uma base sólida para entender a segurança de senhas e práticas de hacking ético.