
BLESuite is a Python package that provides an easier way to test Bluetooth Low Energy (BLE) device
BLESuite est un paquet Python qui rend la communication avec les périphériques Bluetooth Low Energy (BLE) plus conviviale et permet de tester rapidement les périphériques BLE. La version 2 de BLESuite supprime la dépendance à PyGattlib et BlueZ et utilise à la place une version modifiée de PyBT (https://github.com/mikeryan/PyBT) pour implémenter et gérer notre propre pile BLE. Cette version accroît la fiabilité des communications, augmente la flexibilité des communications, améliore l'analyse des périphériques et permet le fuzzing des périphériques au niveau des couches hôtes de la pile Bluetooth. La pile utilisée par BLESuite permet intentionnellement l'envoi de requêtes/réponses malformées aux périphériques afin de permettre le test de ces derniers.
Fonctionnalités :
blesuite et ble-replayNote au lecteur :
Pour accéder aux fonctionnalités Bluetooth Low Energy, vous devez disposer d'un adaptateur Bluetooth qui prend en charge le BLE.
L'objectif de BLESuite est de fournir une méthode simplifiée pour scripturer rapidement les communications avec les périphériques BLE cibles lors d'évaluations de sécurité. Combiné au passage de PyGattlib et BlueZ à PyBT, nous pouvons désormais avoir davantage de contrôle sur la pile BLE et l'utiliser pour tester les différentes couches de la pile BLE d'un périphérique cible.
De plus, BLESuite n'est plus limité au seul rôle Central. BLESuite prend désormais en charge le rôle Périphérique et permet aux utilisateurs de configurer et de déployer rapidement un serveur GATT pouvant être utilisé pour tester les périphériques BLE à rôle Central (ou les périphériques à double rôle).
Voici les instructions d'installation du paquet Python BLESuite.
Systèmes d'exploitation pris en charge :
BLESuite a été développé et testé sur Debian 9.3. La bibliothèque peut être prise en charge par d'autres distributions Linux, mais cette prise en charge n'est pas garantie pour le moment.
Remarque : De récentes tentatives d'utilisation de BLESuite avec Fedora 28 ont abouti en installant les éléments suivants :
Avec Fedora 28, un problème non reproductible a été signalé avec BLESuite, lié à une TypeError qui n'est pas présente dans les installations Debian 9.3 lors d'une tentative de gestion d'une requête ATT entrante.
Les contributions pour corriger ce problème sont les bienvenues !
Logiciels requis
Voici les exigences pour utiliser BLESuite :
Après avoir installé libbluetooth-dev, libpython-dev et python-sphinx, exécutez la commande suivante pour installer les dépendances Python restantes :
pip install -r requirements.txt
Depuis le dossier docs, exécutez :
make html
Ensuite, dans docs/_build/html, un ensemble complet de documentation et de guides de référence sera disponible.
Exécutez la commande suivante pour installer le paquet Python :
python setup.py install
Si vous ne souhaitez pas installer l'API Python BDADDR ou si vous rencontrez des problèmes pour l'installer, commentez la ligne suivante dans setup.py et réexécutez la commande ci-dessus :
ext_modules = [c_ext],
Pour l'instant, BLESuite ne prend en charge que l'appairage LE Legacy JustWorks. Le Security Manager est en grande partie défini, mais la programmation cryptographique restante pour LESC et les modèles d'association alternatifs doit encore être implémentée.
L'opération d'écriture signée (signed write) ATT n'est actuellement pas prise en charge par BLESuite. Ce n'est pas une opération couramment utilisée, mais pour prendre en charge le mode de sécurité 2, elle devrait l'être.
BLESuite ne prend actuellement en charge que les adresses Publiques (Public) et Aléatoires statiques (Random static). Cependant, les adresses Random peuvent être de deux sous-types : statique ou privée. Une adresse Random privée peut également être décomposée en deux sous-types actuellement non pris en charge par BLESuite : l'adresse privée non résoluble (Non-resolvable Private address) et l'adresse privée résoluble (Resolvable Private address), résolue à l'aide de l'IRK échangé lors de l'appairage.
Par conséquent, la fonctionnalité permettant de définir ces types d'adresses sur l'adaptateur hôte n'est actuellement pas exposée par BLESuite. De plus, la capacité à résoudre les adresses Random résolubles d'un pair sur la base d'un IRK échangé n'est pas encore implémentée.
La bibliothèque étant construite, la prochaine étape consiste à développer des outils d'évaluation de sécurité qui utilisent cette bibliothèque.
Un exemple d'un tel outil inclus avec cette bibliothèque est ble-replay, qui peut accepter une capture de paquets BLE
et rejouer le trafic GATT vers un périphérique cible. ble-replay peut rapidement aider à identifier les failles de sécurité de
la couche application liées aux attaques par rejeu (replay attacks).
Ce type d'outils réduit le temps passé à analyser manuellement les captures de paquets et à scripturer manuellement les cas de test de communication BLE.