
Knacken und Entschlüsseln der BLE-Verschlüsselung

crackle knackt BLE-Verschlüsselung (auch bekannt als Bluetooth Smart).
crackle nutzt eine Schwachstelle im BLE-Pairing-Prozess aus, die es einem Angreifer ermöglicht, den TK (Temporary Key) zu erraten oder sehr schnell zu brute-forcen. Mit dem TK und anderen während des Pairing-Prozesses gesammelten Daten können der STK (Short Term Key) und später der LTK (Long Term Key) ermittelt werden.
Mit STK und LTK können alle Kommunikationen zwischen Master und Slave entschlüsselt werden.
Bevor Sie versuchen, crackle zu verwenden, lesen Sie bitte die FAQ um festzustellen, ob es das geeignete Werkzeug für Ihre Situation ist.
crackle wurde von Mike Ryan [email protected] geschrieben. Weitere Informationen finden Sie auf der Website: http://lacklustre.net/projects/crackle/
crackle hat zwei Hauptbetriebsmodi: TK knacken und Mit LTK entschlüsseln.
Dies ist der Standardmodus, der verwendet wird, wenn crackle eine Eingabedatei mit -i übergeben wird.
Im Modus 'TK knacken' brute-forct crackle den TK, der während eines BLE-Pairing-Ereignisses verwendet wird. crackle nutzt die Tatsache aus, dass der TK bei Just Works(tm) und 6-stelliger PIN ein Wert im Bereich [0,999999] ist, der auf 128 Bit aufgefüllt wird.
crackle verwendet mehrere Methoden, um diesen Brute-Force-Angriff durchzuführen: eine sehr schnelle Methode, wenn alle Pairing-Pakete in der Eingabedatei vorhanden sind, und eine langsame Methode, wenn nur ein Mindestsatz an Paketen vorhanden ist.
Um diesen Modus zu verwenden, starten Sie crackle mit einer PCAP- oder PcapNG-Eingabedatei, die eine oder mehrere Verbindungen mit einer BLE-Pairing-Konversation enthält. crackle analysiert alle Verbindungen, ermittelt, ob eine bestimmte Verbindung geknackt werden kann, und wählt automatisch die beste Strategie, um jede zu knacken.
Wenn der TK erfolgreich geknackt wird, leitet crackle die restlichen Schlüssel ab, die zur Verschlüsselung des restlichen Verbindungsverkehrs verwendet werden, und entschlüsselt alle darauf folgenden verschlüsselten Pakete. Wenn der LTK ausgetauscht wird (normalerweise das Erste, was nach der Einrichtung der Verschlüsselung geschieht), gibt crackle diesen Wert auf stdout aus. Der LTK kann verwendet werden, um zukünftige Kommunikationen zwischen den beiden Endpunkten zu entschlüsseln.
Geben Sie crackle mit -o eine Ausgabedatei, um eine neue PCAP-Datei zu erstellen, die die entschlüsselten Daten enthält (zusätzlich zu den bereits unverschlüsselten Daten).
Beispielverwendung:
$ crackle -i input.pcap -o decrypted.pcap
Im Modus 'Mit LTK entschlüsseln' verwendet crackle einen vom Benutzer bereitgestellten LTK, um die Kommunikation zwischen Master und Slave zu entschlüsseln. Dieser Modus ist identisch mit dem Entschlüsselungsteil des Modus 'TK knacken'.
Beispielverwendung:
$ crackle -i encrypted.pcap -o decrypted.pcap -l 81b06facd90fe7a6e9bbd9cee59736a7
Im Modus 'TK knacken' benötigt crackle eine PCAP-Datei, die ein BLE-Pairing-Ereignis enthält. Der beste Weg, eine solche Datei zu erstellen, ist die Verwendung eines Ubertooth, um ein Pairing-Ereignis zwischen Master und Slave aufzuzeichnen.
Um zu überprüfen, ob Ihre PCAP-Datei alle erforderlichen Pakete enthält, führen Sie crackle mit der Option -i aus:
crackle -i <file.pcap>
crackle analysiert jede Verbindung in der Eingabedatei und gibt die Ergebnisse der Analyse auf stdout aus. Wenn Sie alle Komponenten einer Pairing-Konversation haben, sieht die Ausgabe wie folgt aus:
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!
Um alle Pakete zu entschlüsseln, fügen Sie die Option -o hinzu:
crackle -i <file.pcap> -o <output.pcap>
Die Ausgabedatei enthält entschlüsselte Versionen aller verschlüsselten Pakete aus der ursprünglichen PCAP sowie alle unverschlüsselten Pakete. Beachten Sie, dass CRCs nicht neu berechnet werden, daher sind die CRCs der entschlüsselten Pakete falsch.
Im Modus 'Mit LTK entschlüsseln' benötigt crackle eine PCAP-Datei, die mindestens LL_ENC_REQ- und LL_ENC_RSP-Pakete sowie den zur Verschlüsselung der Kommunikation verwendeten LTK enthält.
Das Format für den LTK ist eine 128-Bit-Hexadezimalzahl ohne Leerzeichen oder Trennzeichen, vom höchstwertigen Oktett zum niedrigstwertigen Oktett. Beispiel:
-l 81b06facd90fe7a6e9bbd9cee59736a7
Um zu überprüfen, ob Ihre PCAP-Datei alle erforderlichen Pakete enthält, führen Sie crackle mit -i und -l aus:
crackle -i <file.pcap> -l <ltk>
Wenn Sie beide erforderlichen Pakete haben, sollte das Programm eine Ausgabe ähnlich wie diese erzeugen:
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!
Um alle Pakete zu entschlüsseln, fügen Sie die Option -o hinzu:
crackle -i <file.pcap> -o <out.pcap> -l <ltk>
Die Ausgabedatei wird ähnlich wie die oben beschriebene Ausgabedatei erstellt.
Die Testdateien im Verzeichnis tests dienen als interessante Eingabe zum Spielen mit crackle. Lesen Sie die README-Dateien, die in jedem Test-Unterverzeichnis enthalten sind.
Holen Sie sich einige Beispieldateien zum Knacken mit crackle. Weitere Informationen finden Sie in der README im Tarball:
https://lacklustre.net/bluetooth/crackle-sample.tgz
Wir haben eine Liste mit Häufig gestellten Fragen zusammengestellt.
Großer Dank geht an Mike Ossmann und Dominic Spill vom Ubertooth-Projekt. Ohne sie wäre nichts davon möglich.
Besonderer Dank geht an Mike Kershaw/dragorn von Kismet für die Hilfe bei der Erstellung und Bearbeitung von PCAP-Dateien.
Dank geht an den Rest von #ubertooth auf irc.freenode.net.