BLESuite ist ein Python-Paket, das eine einfachere Möglichkeit zum Testen von Bluetooth-Low-Energy-Geräten (BLE) bietet.
BLESuite ist ein Python-Paket, das die Kommunikation mit Bluetooth-Low-Energy-Geräten (BLE) benutzerfreundlicher macht und schnelle Tests von BLE-Geräten ermöglicht. Version 2 von BLESuite entfernt die Abhängigkeit von PyGattlib und BlueZ und verwendet stattdessen eine modifizierte Version von PyBT (https://github.com/mikeryan/PyBT), um einen eigenen BLE-Stack zu implementieren und zu verwalten. Diese Version erhöht die Zuverlässigkeit der Kommunikation, erweitert die Flexibilität der Kommunikation, verbessert das Gerätescanning und ermöglicht Fuzzing von Geräten auf den Host-Schichten des Bluetooth-Stacks. Der von BLESuite verwendete Stack erlaubt es absichtlich, fehlerhafte Anfragen/Antworten an Geräte zu senden, um Gerätetests zu ermöglichen.
Funktionen:
blesuite und ble-replayHinweis an den Leser:
Um die Bluetooth-Low-Energy-Funktionalität nutzen zu können, benötigen Sie Zugriff auf einen Bluetooth-Adapter, der diese unterstützt.
Das Ziel von BLESuite ist es, eine vereinfachte Methode bereitzustellen, um schnell Kommunikation mit Ziel-BLE-Geräten für Sicherheitsbewertungen zu skripten. In Kombination mit dem Wechsel von PyGattlib und BlueZ zu PyBT haben wir nun mehr Kontrolle über den BLE-Stack und können ihn zum Testen verschiedener BLE-Stack-Schichten eines Zielgeräts verwenden.
Darüber hinaus ist BLESuite nicht mehr nur auf die Central-Rolle beschränkt. BLESuite unterstützt nun die Peripheral-Rolle und ermöglicht es Benutzern, schnell einen GATT-Server zu konfigurieren und aufzusetzen, der zum Testen von BLE-Geräten in der Central-Rolle (oder Dual-Role-Geräten) verwendet werden kann.
Im Folgenden finden Sie Installationsanweisungen für das Python-Paket BLESuite.
Unterstützte Betriebssysteme:
BLESuite wurde mit Debian 9.3 entwickelt und getestet. Die Bibliothek wird möglicherweise von anderen Linux-Distributionen unterstützt, die Unterstützung ist jedoch derzeit nicht garantiert.
Hinweis: Aktuelle Versuche, BLESuite mit Fedora 28 zu verwenden, wurden durch die Installation der folgenden Pakete ermöglicht:
Unter Fedora 28 wurde ein nicht reproduzierbares Problem mit BLESuite gemeldet, das im Zusammenhang mit einem TypeError steht, der bei Debian-9.3-Installationen nicht auftritt, wenn versucht wird, eine eingehende ATT-Anfrage zu verarbeiten.
Beiträge zur Fehlerbehebung sind willkommen!
Erforderliche Software
Die folgenden Anforderungen gelten für die Verwendung von BLESuite:
Nach der Installation von libbluetooth-dev, libpython-dev und python-sphinx führen Sie den folgenden Befehl aus, um die restlichen Python-Abhängigkeiten zu installieren:
pip install -r requirements.txt
Führen Sie im docs-Ordner Folgendes aus:
make html
Anschließend ist unter docs/_build/html eine vollständige Sammlung von Dokumentation und Referenzhandbüchern verfügbar.
Führen Sie den folgenden Befehl aus, um das Python-Paket zu installieren:
python setup.py install
Wenn Sie die BDADDR-Python-API nicht installieren möchten oder Probleme bei der Installation haben, kommentieren Sie die folgende Zeile in setup.py aus und führen Sie den obigen Befehl erneut aus:
ext_modules = [c_ext],
Derzeit unterstützt BLESuite nur das LE-Legacy-JustWorks-Pairing. Der Security Manager ist weitgehend skizziert, aber die verbleibende kryptografische Programmierung für LESC und die alternativen Assoziationsmodelle müssen noch implementiert werden.
Die signierte Schreiboperation (Signed Write) von ATT wird derzeit von BLESuite nicht unterstützt. Dies ist keine häufig verwendete Operation, aber um Sicherheitsmodus 2 zu unterstützen, sollte sie unterstützt werden.
BLESuite unterstützt derzeit nur öffentliche (Public) und zufällige (Random, statische) Adressen. Random-Adressen können jedoch in zwei Untertypen unterteilt werden: statisch (Static) oder privat (Private). Eine zufällige private Adresse (Random Private Address) kann weiter in zwei Untertypen unterteilt werden, die derzeit von BLESuite nicht unterstützt werden: nicht auflösbare private Adresse (Non-resolvable Private Address) und auflösbare private Adresse (Resolvable Private Address, aufgelöst anhand des während des Pairings ausgetauschten IRK).
Daher werden Funktionen zum Festlegen dieser Adresstypen für den Host-Adapter derzeit von BLESuite nicht bereitgestellt. Auch die Möglichkeit, zufällige auflösbare Adressen eines Peers anhand eines ausgetauschten IRK aufzulösen, ist noch nicht implementiert.
Mit der erstellten Bibliothek besteht der nächste Schritt darin, Sicherheitsbewertungswerkzeuge zu entwickeln, die diese Bibliothek nutzen.
Ein solches Beispiel, das wir dieser Bibliothek beigefügt haben, ist ble-replay, das eine BLE-Paketaufzeichnung entgegennehmen und den GATT-Verkehr an ein Zielgerät erneut abspielen kann. ble-replay kann schnell dabei helfen, Sicherheitslücken auf der Anwendungsschicht im Zusammenhang mit Replay-Angriffen zu identifizieren.
Solche Werkzeuge verringern den Zeitaufwand für die manuelle Analyse von Paketaufzeichnungen und das manuelle Skripten von BLE-Kommunikationstestfällen.