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:
- O modo de hash:
-m 16800 - 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 16800para 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.
