
Um script de captura de handshake e PMKID WPA PSK totalmente automatizado e compatível com POSIX, voltado para testes de penetração.
Airbash é um script POSIX-compatível, totalmente automatizado, de captura de WPA PSK PMKID e handshake, destinado a testes de penetração. É compatível com Bash e Android Shell (testado no Kali Linux e Cyanogenmod 10.2) e usa o aircrack-ng para escanear clientes atualmente conectados a pontos de acesso (AP). Esses clientes são então desautenticados para capturar o PMKID e/ou handshake ao tentar reconectar ao AP. A verificação dos dados capturados é feita usando hcxpcaptool e hcxpcapngtool do hcxtools por ZeroBeat. Se um ou mais PMKIDs e/ou handshakes forem capturados, eles são inseridos em um banco de dados SQLite3, juntamente com o horário da captura e os dados GPS atuais (se configurados corretamente).
Após a captura, o banco de dados pode ser testado para modelos de roteadores vulneráveis usando crackdefault.sh.
Ele procurará entradas que correspondam aos módulos implementados, que atualmente incluem algoritmos para calcular chaves padrão para
Speedport 500-700 series, Thomson/SpeedTouch, UPC 7 dígitos (UPC1234567) e roteadores HOTBOX.
Para mais informações sobre o ataque PMKID, New attack on WPA/WPA2 using PMKID é uma boa leitura.
Interface WiFi em modo monitor (no Android isso pode ser alcançado usando bcmon se o dispositivo for compatível)
aircrack-ng (para Android, binários precompilados do android_aircrack podem ser utilizados)
SQLite3 (Android: instalado por padrão no CyanogenMod 10.2)
openssl para compilação de módulos e hcxtools
hcxpcaptool e hcxpcapngtool do hcxtools para detecção de PMKIDs e/ou handshakes e conversão para formatos hashcat
Para registrar coordenadas GPS de pontos de acesso, configure seu software de registro de coordenadas para gravar em .location/_.txt (o nome do arquivo pode ser escolhido livremente). O Airbash usará sempre a saída de cat "$path$loc"*.txt 2>/dev/null | sed '2q;d', que equivale a ler todos os arquivos .txt em .loc/ e pegar a segunda linha. A razão para essa implementação é a funcionalidade do GPSLogger, que foi usado no dispositivo de desenvolvimento.
Após capturar um novo PMKID ou handshake, o banco de dados pode ser consultado por modelos de roteadores vulneráveis. Se um módulo se aplicar, as chaves padrão para essa série de roteadores são calculadas e usadas como entrada para o aircrack-ng tentar recuperar a frase secreta.
Os módulos para calcular chaves padrão de Thomson/SpeedTouch e UPC1234567 (7 dígitos aleatórios) estão incluídos em src/
Os créditos do código vão para os autores Kevin Devine e mailto:[email protected].
No Linux:
gcc -fomit-frame-pointer -O3 -funroll-all-loops -o modules/st modules/stkeys.c -lcrypto
gcc -O2 -o modules/upckeys modules/upc_keys.c -lcrypto
Para ativar a detecção automática, mova os binários para airbash/bin (serão adicionados ao PATH durante a execução) ou para um diretório que esteja no PATH.
Se estiver no Android, talvez seja necessário copiar os binários para /system/xbin/ ou outro diretório onde a execução de binários seja permitida.
Executar install.sh criará o banco de dados, preparará a estrutura de pastas e criará atalhos para ambos os scripts, que podem ser movidos para um diretório que esteja no $PATH para permitir a execução de qualquer local.
Após a instalação, pode ser necessário ajustar manualmente INTERFACE na linha 46 do airba.sh. Isso será determinado automaticamente no futuro, mas por enquanto o padrão é wlan0, para permitir compatibilidade imediata com o bcmon no Android.
./airba.sh inicia o script, escaneando e atacando automaticamente alvos que não estão no banco de dados.
./crackdefault.sh tenta quebrar algoritmos conhecidos de chave padrão.
Para visualizar o conteúdo do banco de dados, execute sqlite3 .db.sqlite3 "SELECT * FROM hs" no diretório principal.
O Airbash pode ser atualizado executando update.sh. Isso clonará o branch master em /tmp/ e substituirá os arquivos locais.
_n: número de pontos de acesso encontrados
__c/m: representa o número de cliente e o número máximo de clientes encontrados, respectivamente
-: ponto de acesso está na lista negra
x: ponto de acesso já está no banco de dados
?: ponto de acesso fora de alcance (não visível para o airodump)
O banco de dados contém uma tabela chamada captures com sete colunas.
id: contador incremental de entradas da tabela
latitude e longitude: coordenadas GPS do handshake (se disponível)
bssid: endereço MAC do ponto de acesso
essid: identificador de nome
pmkid: WPA PMKID, se capturado
psk: Frase secreta WPA, se conhecida
processed: Flag que é definida pelo crackdefault.sh para evitar cálculo duplicado de chaves padrão se uma frase secreta personalizada foi usada.
Atualmente, o banco de dados SQLite3 não possui proteção por senha.
Contribuições são muito bem-vindas, especialmente módulos adicionais para quebrar mais chaves padrão. Um módulo modelo está incluído em modules/. O crackdefault.sh contém uma instrução elif modelo para incluir o novo módulo.
Se você quiser contribuir, certifique-se de que seu código está licenciado sob a Licença MIT (como este projeto). Ao contribuir com scripts shell, certifique-se de que o código seja compatível com POSIX. Além disso, basta abrir uma issue descrevendo brevemente as alterações e criar um pull request!