
Quebrar e descriptografar criptografia BLE

crackle quebra a criptografia BLE (também conhecido como Bluetooth Smart).
crackle explora uma falha no processo de pareamento BLE que permite a um invasor adivinhar ou forçar bruto muito rapidamente a TK (Chave Temporária). Com a TK e outros dados coletados do processo de pareamento, a STK (Chave de Curto Prazo) e posteriormente a LTK (Chave de Longo Prazo) podem ser coletadas.
Com a STK e a LTK, todas as comunicações entre o mestre e o escravo podem ser descriptografadas.
Antes de tentar usar o crackle, revise o FAQ para determinar se é a ferramenta apropriada para sua situação.
crackle foi escrito por Mike Ryan [email protected] Veja o site para mais informações: http://lacklustre.net/projects/crackle/
crackle tem dois modos principais de operação: Quebrar TK e Descriptografar com LTK.
Este é o modo padrão usado ao fornecer ao crackle um arquivo de entrada
usando -i.
No modo Quebrar TK, o crackle força bruto a TK usada durante um evento de pareamento BLE. O crackle explora o fato de que a TK em Just Works(tm) e PIN de 6 dígitos é um valor no intervalo [0,999999] preenchido com 128 bits.
crackle emprega vários métodos para realizar essa força bruta: um método muito rápido se todos os pacotes de pareamento estiverem presentes no arquivo de entrada, e um método lento se um conjunto mínimo de pacotes estiver presente.
Para usar este modo, execute o crackle com um arquivo PCAP ou PcapNG de entrada contendo uma ou mais conexões com uma conversa de pareamento BLE. crackle analisará todas as conexões, determinará se é possível quebrar uma determinada conexão e escolherá automaticamente a melhor estratégia para quebrar cada uma.
Se a TK for quebrada com sucesso, o crackle derivará as chaves restantes usadas para criptografar o resto da conexão e descriptografará quaisquer pacotes criptografados que se seguirem. Se a LTK for trocada (tipicamente a primeira coisa feita após a criptografia ser estabelecida), o crackle exibirá esse valor na saída padrão. A LTK pode ser usada para descriptografar quaisquer comunicações futuras entre os dois pontos finais.
Forneça ao crackle um arquivo de saída usando -o para criar um novo
arquivo PCAP contendo os dados descriptografados (além dos dados já não
criptografados).
Exemplo de uso:
$ crackle -i input.pcap -o decrypted.pcap
No modo Descriptografar com LTK, o crackle usa uma LTK fornecida pelo usuário para descriptografar comunicações entre um mestre e um escravo. Este modo é idêntico à parte de descriptografia do modo Quebrar TK.
Exemplo de uso:
$ crackle -i encrypted.pcap -o decrypted.pcap -l 81b06facd90fe7a6e9bbd9cee59736a7
No modo Quebrar TK, o crackle requer um arquivo PCAP que contenha um evento de pareamento BLE. A melhor forma de gerar tal arquivo é usar um Ubertooth para capturar um evento de pareamento entre um mestre e um escravo.
Para verificar se seu arquivo PCAP contém todos os pacotes necessários, execute o crackle com a opção -i:
crackle -i <file.pcap>
crackle analisará cada conexão no arquivo de entrada e exibirá os resultados de sua análise na saída padrão. Se você tiver todos os componentes de uma conversa de pareamento, a saída será semelhante a esta:
Analyzing connection 0:
xx:xx:xx:xx:xx:xx (public) -> yy:yy:yy:yy:yy:yy (public)
Found 13 encrypted packets
Cracking with strategy 0, 20 bits of entropy
!!!
TK found: 412741
!!!
Decrypted 12 packets
LTK found: 81b06facd90fe7a6e9bbd9cee59736a7
Specify an output file with -o to decrypt packets!
Para descriptografar todos os pacotes, adicione a opção -o:
crackle -i <file.pcap> -o <output.pcap>
O arquivo de saída conterá versões descriptografadas de todos os pacotes criptografados do PCAP original, bem como todos os pacotes não criptografados. Observe que os CRCs não são recalculados, portanto os CRCs dos pacotes descriptografados estarão incorretos.
No modo Descriptografar com LTK, o crackle requer um arquivo PCAP que contenha, no mínimo, pacotes LL_ENC_REQ e LL_ENC_RSP e a LTK usada para criptografar as comunicações.
O formato para LTK é um número hexadecimal de 128 bits sem espaços ou separadores, do octeto mais significativo ao menos significativo. Exemplo:
-l 81b06facd90fe7a6e9bbd9cee59736a7
Para verificar se seu arquivo PCAP contém todos os pacotes necessários, execute o crackle com -i e -l:
crackle -i <file.pcap> -l <ltk>
Se você tiver ambos os pacotes necessários, o programa deve produzir uma saída semelhante a esta:
Analyzing connection 0:
xx:xx:xx:xx:xx:xx (public) -> yy:yy:yy:yy:yy:yy (public)
Found 9 encrypted packets
Decrypted 6 packets
Specify an output file with -o to decrypt packets!
Para descriptografar todos os pacotes, adicione a opção -o:
crackle -i <file.pcap> -o <out.pcap> -l <ltk>
O arquivo de saída será produzido de forma semelhante ao descrito acima.
Os arquivos de teste incluídos no diretório tests servem como
entrada interessante para brincar com o crackle. Consulte os arquivos
README incluídos no subdiretório de cada teste.
Pegue alguns arquivos de exemplo para quebrar com o crackle. Consulte o README dentro do tarball para mais informações:
https://lacklustre.net/bluetooth/crackle-sample.tgz
Compilamos uma lista de Perguntas Frequentes.
Agradecimentos especiais a Mike Ossmann e Dominic Spill do projeto Ubertooth. Nada disso seria possível sem eles.
Muitos agradecimentos a Mike Kershaw/dragorn do Kismet por ajudar a criar e trabalhar com arquivos PCAP.
Agradecimentos ao resto do #ubertooth em irc.freenode.net.