Criar um Banco de Dados de PMK com airolib-ng

Beginner
Pratique Agora

Introdução

airolib-ng é uma ferramenta poderosa dentro do conjunto Aircrack-ng, projetada para gerenciar e utilizar bancos de dados de Chaves Mestras Pré-calculadas (PMK - Pre-computed Master Key). Ao tentar quebrar um handshake WPA/WPA2, a parte mais demorada é o cálculo da PMK a partir de uma senha potencial e do nome da rede (ESSID).

Ao pré-calcular essas PMKs para uma lista de senhas comuns e nomes de rede e armazená-las em um banco de dados, você pode acelerar drasticamente o processo de quebra. Em vez de realizar o cálculo intensivo para cada senha durante o ataque, o aircrack-ng pode simplesmente procurar a PMK no banco de dados.

Neste laboratório, você aprenderá as operações fundamentais do airolib-ng para criar e popular um banco de dados de PMK.

Compreender o Conceito de um Banco de Dados de Chaves Mestras Pré-calculadas

Nesta etapa, abordaremos a teoria por trás dos bancos de dados de PMK antes de começarmos a usar o airolib-ng. Não há comandos para executar nesta etapa.

A segurança das redes WPA/WPA2 baseia-se em um handshake de quatro vias que utiliza uma Chave Mestra de Par (PMK - Pairwise Master Key) para criptografar o tráfego. Esta PMK é derivada da senha (passphrase) da rede e do seu nome (ESSID). A fórmula é:

PMK = PBKDF2(passphrase, SSID, 4096 iterações, saída de 256 bits)

Quando você tenta quebrar um handshake WPA/WPA2 capturado usando uma ferramenta como o aircrack-ng e uma wordlist, a ferramenta realiza este cálculo para cada senha individual em sua lista. As 4096 iterações tornam este processo computacionalmente caro e lento.

É aqui que o airolib-ng entra. Ele permite que você realize este trabalho pesado com antecedência. Você pode pegar uma lista de ESSIDs comuns e uma grande wordlist de senhas e pré-calcular todas as PMKs resultantes. Essas PMKs são então armazenadas em um banco de dados SQLite eficiente.

Quando for a hora de quebrar um handshake, o aircrack-ng pode usar este banco de dados. Em vez de calcular a PMK para cada senha, ele a calcula uma vez a partir do ESSID do handshake capturado e da senha da wordlist, e então procura o resultado em seu banco de dados pré-calculado. Esta consulta é milhares de vezes mais rápida do que o cálculo completo, reduzindo drasticamente o tempo de quebra.

Nas etapas seguintes, você criará um banco de dados como este, o preencherá com um ESSID e senhas, e verificará sua integridade.

Criar um Novo Banco de Dados SQLite com airolib-ng --new

Nesta etapa, você criará um novo banco de dados SQLite vazio que armazenará nossas PMKs. Todo o nosso trabalho será feito no diretório ~/project.

Usamos o comando airolib-ng seguido pelo nome do banco de dados desejado e a flag --new. Esta flag instrui o airolib-ng a inicializar um novo arquivo de banco de dados.

Vamos criar um banco de dados chamado pmk_db. Execute o seguinte comando no seu terminal:

airolib-ng pmk_db --new

A ferramenta criará o arquivo pmk_db no seu diretório atual (~/project) e configurará as tabelas necessárias dentro dele. Você deverá ver uma saída confirmando a criação e inicialização do banco de dados.

Saída esperada:

Database 'pmk_db' created.
Wrote 1 ESSIDs and 0 PMKs.

Você pode verificar se o arquivo foi criado usando o comando ls:

ls -l pmk_db

Saída esperada:

-rw-r--r-- 1 labex labex 8192 May 20 10:30 pmk_db

Importar um Único ESSID para o Banco de Dados usando --import essid

Nesta etapa, você adicionará um nome de rede (ESSID) ao seu banco de dados recém-criado. O banco de dados precisa saber para quais ESSIDs você deseja pré-calcular as PMKs.

Usaremos a opção --import essid. Esta opção pode receber um único ESSID como argumento da linha de comando ou uma lista de ESSIDs de um arquivo. Para este laboratório, importaremos um único ESSID chamado MyHomeWiFi.

Execute o seguinte comando para importar o ESSID para o seu banco de dados pmk_db:

airolib-ng pmk_db --import essid MyHomeWiFi

Você verá uma saída indicando que o banco de dados está sendo lido e que um ESSID foi gravado.

Saída esperada:

Reading file...
Wrote 1 ESSIDs and 0 PMKs.
Done.

Agora seu banco de dados está ciente da rede MyHomeWiFi e está pronto para armazenar as PMKs associadas a ela.

Importar uma Wordlist para Computar PMKs para esse ESSID

Nesta etapa, você importará uma lista de senhas (uma wordlist) e fará com que o airolib-ng compute as PMKs para o ESSID que importamos na etapa anterior.

O script de configuração para este laboratório já criou um pequeno arquivo de wordlist para você chamado wordlist.txt no diretório ~/project. Usaremos a opção --import pwd para ler este arquivo. Para cada senha em wordlist.txt, o airolib-ng calculará a PMK para o ESSID MyHomeWiFi e armazenará o resultado no banco de dados.

Execute o seguinte comando:

airolib-ng pmk_db --import pwd wordlist.txt

A ferramenta lerá as senhas do arquivo e computará as PMKs. Nossa wordlist.txt contém 4 senhas, e temos 1 ESSID no banco de dados, portanto, ele computará e armazenará 4 PMKs.

Saída esperada:

Reading file...
Wrote 0 ESSIDs and 4 PMKs.
Done.

Seu banco de dados agora contém as chaves pré-computadas para a rede MyHomeWiFi para cada senha em wordlist.txt.

Executar uma Operação em Lote para Verificar a Integridade do Banco de Dados

Nesta etapa, você aprenderá como verificar o conteúdo do seu banco de dados e computar quaisquer pares de PMK ausentes. Esta é uma etapa de manutenção crucial, especialmente para bancos de dados grandes.

A opção --batch realiza uma operação abrangente. Ela encontra todas as combinações de pares de ESSIDs e senhas no banco de dados e computa a PMK para qualquer par que ainda não possua uma. Ela também serve como uma forma de verificar a integridade das PMKs existentes, recalculando-as e comparando-as.

Execute o comando em lote no seu banco de dados pmk_db:

airolib-ng pmk_db --batch

Como acabamos de computar todos os pares possíveis na etapa anterior (1 ESSID x 4 senhas), o comando descobrirá que nenhuma nova PMK precisa ser computada. Ele simplesmente verificará as existentes.

Saída esperada:

All PMKs have been computed for all ESSIDs.
Nothing to do.

Se você adicionar um novo ESSID ou uma nova wordlist, executar o comando --batch será a maneira mais eficiente de atualizar o banco de dados com todas as novas combinações de PMK.

Resumo

Parabéns! Você criou e gerenciou com sucesso um banco de dados de Chave Mestra Pré-computada (PMK) usando o airolib-ng.

Neste laboratório, você aprendeu a:

  • Compreender o conceito e o benefício de um banco de dados de PMK para acelerar a quebra de senhas WPA/WPA2.
  • Criar um novo banco de dados vazio usando airolib-ng --new.
  • Importar um nome de rede para o banco de dados usando airolib-ng --import essid.
  • Importar uma wordlist e computar as PMKs correspondentes usando airolib-ng --import pwd.
  • Executar uma operação em lote para verificar e atualizar o banco de dados usando airolib-ng --batch.

Com este conhecimento, você agora pode construir bancos de dados de PMK maiores e mais abrangentes para acelerar significativamente suas avaliações de segurança WPA/WPA2. O banco de dados criado pmk_db poderia ser usado com o aircrack-ng da seguinte forma: aircrack-ng -r pmk_db your_capture_file.cap.