Le Bluetooth Hacking désigne l'ensemble des techniques permettant d'analyser, de tester ou d'exploiter les faiblesses de sécurité des communications Bluetooth. Cette technologie sans fil est utilisée dans les smartphones, ordinateurs, écouteurs, montres connectées, véhicules, équipements médicaux et objets connectés. Bien qu'elle intègre des mécanismes de sécurité, certaines vulnérabilités de conception, d'implémentation ou de configuration peuvent exposer les appareils à des risques d'interception, d'usurpation d'identité, d'accès non autorisé ou de déni de service. L'étude du Bluetooth Hacking permet de comprendre ces risques et de mettre en place des protections adaptées.
1. À propos du Bluetooth Hacking en cybersécurité
Définition du Bluetooth Hacking
Le Bluetooth Hacking regroupe les méthodes d'analyse de sécurité et les techniques d'exploitation de vulnérabilités affectant les équipements utilisant la technologie Bluetooth.
Dans un contexte de pentesting, ces techniques sont utilisées pour évaluer la sécurité d'appareils appartenant au testeur ou explicitement autorisés à être analysés.
Dans un contexte malveillant, elles peuvent servir à compromettre des équipements ou à perturber leurs communications.
Pourquoi le Bluetooth constitue-t-il une surface d'attaque ?
Le Bluetooth permet à des appareils de communiquer par ondes radio, généralement sur de courtes distances.
Cette communication sans fil implique plusieurs éléments pouvant être examinés du point de vue de la sécurité :
- La découverte des appareils.
- Le processus d'appairage.
- Les mécanismes d'authentification.
- La gestion des clés cryptographiques.
- Les services accessibles.
- Les protocoles de communication.
- Les implémentations logicielles.
- Les configurations des appareils.
Objectifs d'un audit Bluetooth
Un audit de sécurité Bluetooth vise notamment à :
- Identifier les appareils autorisés présents dans le laboratoire.
- Déterminer les versions et fonctionnalités Bluetooth prises en charge.
- Examiner les mécanismes d'appairage.
- Vérifier les paramètres de sécurité.
- Analyser les services exposés.
- Rechercher les vulnérabilités connues.
- Évaluer les risques associés aux configurations.
- Proposer des mesures correctives.
Bluetooth Hacking et Ethical Hacking
Le Ethical Hacking consiste à réaliser des tests de sécurité avec une autorisation explicite et dans un périmètre défini.
Un testeur doit éviter d'interagir avec des équipements appartenant à des tiers sans leur consentement.
Exemple concret
Une entreprise utilise des capteurs Bluetooth pour transmettre des mesures à une application.
Un audit peut vérifier si les communications sont correctement authentifiées, si les données sensibles sont protégées et si les équipements utilisent des versions logicielles à jour.
Si un capteur accepte des commandes sensibles sans authentification suffisante, cette faiblesse peut représenter un risque important.
2. Fonctionnement du Bluetooth et surface d'attaque
Présentation de la technologie Bluetooth
Le Bluetooth est une technologie de communication sans fil conçue pour permettre l'échange de données entre appareils compatibles.
Elle utilise principalement la bande de fréquences 2,4 GHz ISM.
Bluetooth Classic
Le Bluetooth Classic, également appelé BR/EDR, est notamment utilisé pour certains équipements audio et périphériques.
Il prend en charge différents profils de communication.
Bluetooth Low Energy
Le Bluetooth Low Energy, ou BLE, est conçu pour permettre des communications à faible consommation énergétique.
Il est largement utilisé dans les capteurs, les objets connectés et les dispositifs portables.
Différences entre Bluetooth Classic et BLE
| Caractéristique | Bluetooth Classic | Bluetooth Low Energy |
|---|---|---|
| Objectif principal | Communications adaptées notamment aux flux continus. | Communications optimisées pour une faible consommation. |
| Exemples | Certains casques et périphériques audio. | Capteurs et objets connectés. |
| Architecture | Profils et protocoles BR/EDR. | Architecture BLE et services GATT. |
| Consommation | Dépend du profil et de l'utilisation. | Généralement adaptée aux appareils économes en énergie. |
| Sécurité | Dépend de la version et des mécanismes utilisés. | Dépend de la version, de l'appairage et de la configuration. |
Découverte des appareils
La Device Discovery permet à un équipement d'identifier certains appareils Bluetooth à proximité.
La visibilité dépend du mode de fonctionnement et de la configuration des équipements.
Adresse Bluetooth
Une adresse Bluetooth est un identifiant utilisé dans les communications Bluetooth.
En BLE, certains appareils utilisent des adresses privées qui peuvent changer afin de limiter le suivi des équipements.
Appairage Bluetooth
Le Pairing, ou appairage, est un processus permettant à deux appareils d'établir une relation de confiance et, selon le mode utilisé, de créer ou d'échanger les informations nécessaires à la sécurité des communications.
Bonding
Le Bonding correspond à la conservation d'informations de sécurité permettant à des appareils de se reconnaître lors de connexions ultérieures.
Just Works
Le mode Just Works facilite l'appairage lorsque les appareils disposent de capacités d'interaction limitées.
Il ne fournit pas, à lui seul, une protection authentifiée contre certaines attaques de type homme du milieu.
Passkey Entry
Le mode Passkey Entry utilise un code numérique dans certaines procédures d'appairage.
Numeric Comparison
Le mode Numeric Comparison permet aux utilisateurs de comparer et de confirmer une valeur numérique affichée sur les appareils compatibles.
Out of Band
Le mécanisme Out of Band, ou OOB, utilise un canal externe pour transmettre certaines informations nécessaires à l'appairage.
GATT
Le Generic Attribute Profile, ou GATT, définit une organisation des données BLE en services et caractéristiques.
ATT
L'Attribute Protocol, ou ATT, est utilisé pour accéder aux attributs dans les communications BLE.
Services et caractéristiques BLE
Un service BLE regroupe des fonctionnalités ou données associées.
Une caractéristique BLE représente une donnée ou une fonctionnalité pouvant être lue, écrite ou utilisée pour des notifications, selon les permissions définies.
UUID Bluetooth
Un UUID, ou Universally Unique Identifier, permet d'identifier des services et caractéristiques.
Surface d'attaque Bluetooth
La surface d'attaque Bluetooth peut comprendre :
- Les messages publicitaires BLE.
- Les mécanismes de découverte.
- Les procédures d'appairage.
- Les services GATT.
- Les caractéristiques accessibles.
- Les firmwares.
- Les pilotes Bluetooth.
- Les applications mobiles associées.
3. Les principales attaques et vulnérabilités Bluetooth
Plusieurs catégories d'attaques peuvent affecter les communications Bluetooth.
Leur faisabilité dépend notamment de la version du protocole, du matériel, de la configuration et de l'existence de vulnérabilités particulières.
Bluejacking
Le Bluejacking désigne historiquement l'envoi non sollicité de messages ou d'informations vers certains appareils Bluetooth compatibles.
Cette pratique peut constituer une nuisance, mais elle ne signifie pas nécessairement qu'un appareil a été compromis.
Bluesnarfing
Le Bluesnarfing désigne l'accès non autorisé à des informations stockées sur certains appareils Bluetooth vulnérables.
Les données concernées peuvent dépendre des fonctionnalités exposées et des faiblesses exploitées.
Bluebugging
Le Bluebugging désigne des attaques pouvant permettre, sur certains appareils vulnérables, l'utilisation non autorisée de fonctionnalités de contrôle.
Bluetooth Eavesdropping
Le Bluetooth Eavesdropping correspond à l'interception ou à l'écoute de communications Bluetooth.
Le risque dépend notamment des mécanismes de chiffrement et d'authentification utilisés.
Man-in-the-Middle
Une attaque Man-in-the-Middle, ou MITM, vise à intercepter ou à modifier des échanges entre deux appareils.
Certains modes d'appairage sans authentification suffisante peuvent présenter un risque accru.
Bluetooth Spoofing
Le Bluetooth Spoofing désigne l'usurpation de certaines informations d'identification ou caractéristiques d'un appareil Bluetooth.
Une adresse Bluetooth ne doit pas être considérée, à elle seule, comme une preuve d'identité fiable.
Bluetooth Denial of Service
Une attaque Bluetooth DoS vise à perturber la disponibilité d'un appareil ou d'un service Bluetooth.
Elle peut provoquer des interruptions de communication ou des dysfonctionnements selon la vulnérabilité concernée.
Bluetooth Replay Attack
Une Replay Attack consiste à réutiliser des messages précédemment observés afin de provoquer un comportement non souhaité.
Des mécanismes cryptographiques appropriés, notamment la protection contre la répétition des messages, contribuent à limiter ce risque.
Bluetooth Relay Attack
Une Relay Attack consiste à relayer des communications entre des appareils afin de tromper certains mécanismes reposant sur la proximité.
Elle est particulièrement importante dans l'étude des systèmes de contrôle d'accès et des équipements connectés.
BLE Tracking
Le BLE Tracking désigne les techniques permettant de suivre certains appareils à partir des informations émises lors de leurs communications ou annonces.
Les mécanismes de confidentialité des adresses peuvent réduire certains risques de suivi.
Attaques contre les services GATT
Des services ou caractéristiques GATT mal protégés peuvent exposer des données ou des fonctionnalités sensibles.
Par exemple, une caractéristique autorisant une écriture sans authentification suffisante peut présenter un risque si elle commande une fonction critique.
Vulnérabilités du firmware
Le firmware d'un appareil Bluetooth peut contenir des erreurs de programmation ou de configuration.
Une vulnérabilité du firmware peut compromettre la sécurité de l'équipement.
BlueBorne
BlueBorne est le nom donné à un ensemble de vulnérabilités Bluetooth rendues publiques en 2017.
Ces vulnérabilités ont affecté certaines implémentations Bluetooth sur différents systèmes.
Leur exploitation et leur impact dépendent des plateformes et versions concernées.
KNOB Attack
L'attaque KNOB, ou Key Negotiation of Bluetooth, concerne des faiblesses liées à la négociation de la longueur des clés de chiffrement dans certaines communications Bluetooth BR/EDR.
BLURtooth
BLURtooth désigne une vulnérabilité liée à certains mécanismes de dérivation de clés entre Bluetooth BR/EDR et BLE.
BrakTooth
BrakTooth désigne un ensemble de vulnérabilités découvertes dans certaines implémentations de piles Bluetooth.
Selon les équipements concernés, elles peuvent provoquer des dysfonctionnements ou d'autres conséquences de sécurité.
BLESA
BLESA, ou Bluetooth Low Energy Spoofing Attack, désigne une catégorie d'attaques étudiées dans le contexte de certaines reconnexions BLE insuffisamment protégées.
Tableau des principales attaques Bluetooth
| Attaque | Principe | Conséquence possible |
|---|---|---|
| Bluejacking | Envoi non sollicité de messages. | Nuisance. |
| Bluesnarfing | Accès non autorisé à des données. | Divulgation d'informations. |
| Bluebugging | Contrôle non autorisé de fonctions. | Utilisation abusive de l'appareil. |
| Eavesdropping | Interception de communications. | Atteinte à la confidentialité. |
| MITM | Interposition entre deux appareils. | Interception ou modification d'échanges. |
| Spoofing | Usurpation d'informations d'identification. | Confusion d'identité. |
| DoS | Perturbation des communications. | Indisponibilité. |
| Replay | Réutilisation de messages. | Exécution d'actions non souhaitées. |
| Relay | Relais de communications. | Contournement de certains contrôles de proximité. |
| BLE Tracking | Suivi d'appareils. | Atteinte à la vie privée. |
4. Les outils d'audit et de pentesting Bluetooth
Plusieurs outils permettent d'examiner les interfaces, les communications et les configurations Bluetooth dans un environnement autorisé.
BlueZ
BlueZ est la pile Bluetooth couramment utilisée sous Linux.
Elle fournit des composants et utilitaires permettant de gérer les interfaces et les connexions Bluetooth.
bluetoothctl
bluetoothctl est un utilitaire permettant de gérer les contrôleurs, appareils et connexions Bluetooth sous Linux.
btmon
btmon est un outil de surveillance des événements et échanges Bluetooth au niveau de l'hôte Linux.
Il peut être utile pour diagnostiquer les communications d'un adaptateur local.
Wireshark
Wireshark est un analyseur de protocoles réseau.
Selon le matériel et les sources de capture disponibles, il peut permettre d'examiner certains échanges Bluetooth.
Bettercap
Bettercap est un framework de sécurité réseau proposant notamment des fonctionnalités liées à BLE dans certains environnements.
Son utilisation doit respecter le périmètre des tests autorisés.
Bleak
Bleak est une bibliothèque Python permettant de développer des applications utilisant Bluetooth Low Energy.
Elle peut servir à découvrir des appareils BLE et à interagir avec des services autorisés.
PyBluez
PyBluez est une bibliothèque Python historiquement utilisée pour programmer certaines communications Bluetooth.
Sa compatibilité dépend de l'environnement et des versions disponibles.
nRF Connect
nRF Connect est une famille d'outils permettant notamment d'examiner et de développer des applications BLE.
Ubertooth
Ubertooth est une plateforme matérielle ouverte destinée à l'expérimentation et à l'analyse de certaines communications Bluetooth.
Tableau comparatif des outils
| Outil | Fonction principale | Environnement |
|---|---|---|
| BlueZ | Pile et utilitaires Bluetooth. | Linux. |
| bluetoothctl | Gestion des contrôleurs et appareils. | Linux. |
| btmon | Surveillance des événements Bluetooth locaux. | Linux. |
| Wireshark | Analyse de protocoles. | Plusieurs systèmes. |
| Bettercap | Framework d'analyse de sécurité. | Selon la plateforme. |
| Bleak | Programmation BLE avec Python. | Windows, Linux et macOS. |
| nRF Connect | Exploration et développement BLE. | Selon l'outil. |
| Ubertooth | Expérimentation radio Bluetooth. | Matériel spécialisé. |
Bluetooth et Kali Linux
Kali Linux peut être utilisé comme environnement d'audit Bluetooth lorsque les pilotes et le matériel sont compatibles.
Dans une machine virtuelle, la présence d'une carte Bluetooth sur l'ordinateur hôte ne garantit pas son accessibilité directe depuis Kali.
Un adaptateur Bluetooth USB compatible, attribué à la machine virtuelle, peut être nécessaire.
Limites des adaptateurs Bluetooth
Tous les adaptateurs ne prennent pas en charge les mêmes fonctionnalités.
Certains permettent uniquement les opérations ordinaires de connexion et de découverte, tandis que d'autres offrent des capacités supplémentaires utiles à l'analyse.
5. Méthodologie de test et mesures de protection
Étape 1 : définir le périmètre du laboratoire
Un laboratoire Bluetooth doit utiliser des équipements appartenant au testeur ou explicitement autorisés.
Il est préférable d'utiliser un appareil dédié aux expérimentations.
Étape 2 : inventorier les équipements
L'inventaire peut comprendre les smartphones, ordinateurs, capteurs et autres équipements Bluetooth du laboratoire.
Étape 3 : identifier les versions Bluetooth
La version du protocole et celle du firmware peuvent influencer les fonctionnalités et les mécanismes de sécurité disponibles.
Étape 4 : examiner les paramètres d'appairage
Il convient de vérifier les mécanismes d'authentification utilisés lors de l'appairage.
Étape 5 : examiner les services autorisés
Pour un équipement BLE de laboratoire, il est possible d'identifier les services et caractéristiques accessibles dans le cadre prévu par le fabricant.
Étape 6 : rechercher les vulnérabilités connues
Les informations sur les vulnérabilités doivent être rapprochées du modèle exact, de la version du firmware et de la configuration de l'équipement.
Étape 7 : évaluer les risques
Les risques doivent être évalués en fonction de la probabilité d'exploitation et de l'impact potentiel.
Étape 8 : appliquer les corrections
Les corrections peuvent comprendre des mises à jour, des modifications de configuration et la suppression d'associations inutiles.
Étape 9 : vérifier les protections
Après correction, les contrôles de sécurité doivent être vérifiés à nouveau.
Étape 10 : documenter les résultats
Les observations, les versions des équipements et les mesures correctives doivent être consignées.
Mesure 1 : maintenir les appareils à jour
Les mises à jour des systèmes d'exploitation et des firmwares peuvent corriger des vulnérabilités Bluetooth connues.
Mesure 2 : désactiver le Bluetooth lorsqu'il est inutile
La désactivation du Bluetooth lorsqu'il n'est pas nécessaire réduit les possibilités d'interaction radio avec l'appareil.
Mesure 3 : éviter l'appairage avec des appareils inconnus
Il convient de vérifier l'identité de l'équipement avant d'accepter une demande d'appairage.
Mesure 4 : vérifier les codes d'appairage
Lorsque les appareils prennent en charge une comparaison numérique authentifiée, l'utilisateur doit vérifier que les valeurs affichées correspondent.
Mesure 5 : supprimer les associations inutilisées
Les appareils précédemment associés mais qui ne sont plus utilisés peuvent être retirés de la liste des équipements de confiance.
Mesure 6 : limiter les permissions
Les applications mobiles doivent disposer uniquement des permissions nécessaires à leurs fonctionnalités.
Mesure 7 : protéger les caractéristiques BLE sensibles
Les développeurs doivent appliquer des contrôles d'authentification et d'autorisation appropriés aux opérations sensibles.
Mesure 8 : protéger les données
Les données sensibles doivent bénéficier de mécanismes de chiffrement et d'authentification adaptés au contexte.
Mesure 9 : surveiller les équipements
Les organisations peuvent inventorier les équipements Bluetooth autorisés et suivre les changements de configuration.
Mesure 10 : sensibiliser les utilisateurs
Les utilisateurs doivent être informés des risques liés aux demandes d'appairage inattendues et aux équipements inconnus.
6. Exemples pratiques de sécurité Bluetooth avec Python
Python permet de réaliser des exercices pédagogiques sur la sécurité Bluetooth et de développer des applications utilisant Bluetooth Low Energy.
Les premiers exemples fonctionnent sans matériel Bluetooth. Les exemples utilisant Bleak nécessitent un adaptateur compatible et des équipements autorisés.
Exemple 1 : créer un inventaire d'appareils Bluetooth
Le programme suivant représente un inventaire fictif d'équipements Bluetooth sous forme de dictionnaires Python.
1 2 3 4 5 6 7 | appareils = [ {"nom": "Casque", "type": "Classic"}, {"nom": "Capteur", "type": "BLE"}, {"nom": "Montre", "type": "BLE"} ] for appareil in appareils: print(appareil["nom"], "-", appareil["type"]) |
Output :
1 2 3 | Casque - Classic Capteur - BLE Montre - BLE |
Exemple 2 : identifier les appareils BLE dans un inventaire
Le programme suivant filtre un inventaire fictif afin d'afficher uniquement les appareils utilisant Bluetooth Low Energy.
1 2 3 4 5 6 7 8 9 | appareils = { "Casque": "Classic", "Capteur": "BLE", "Montre": "BLE", "Clavier": "Classic" } for nom, technologie in appareils.items(): if technologie == "BLE": print("Appareil BLE :", nom) |
Output :
1 2 | Appareil BLE : Capteur Appareil BLE : Montre |
Exemple 3 : vérifier les appareils autorisés
Le programme suivant compare une liste fictive d'appareils détectés à un inventaire d'équipements autorisés.
1 2 3 4 5 6 7 | autorises = {"Casque", "Clavier", "Montre"} detectes = {"Casque", "Montre", "Appareil inconnu"} for appareil in sorted(detectes): if appareil in autorises: print(appareil, ": autorisé") else: print(appareil, ": à vérifier") |
Output :
1 2 3 | Appareil inconnu : à vérifier Casque : autorisé Montre : autorisé |
Dans une application réelle, le nom d'un appareil ne constitue pas un identifiant d'authentification fiable.
Exemple 4 : comparer deux inventaires Bluetooth
Le programme suivant identifie les appareils ajoutés et supprimés entre deux inventaires fictifs.
1 2 3 4 5 6 | avant = {"Casque", "Clavier"} apres = {"Casque", "Clavier", "Montre"} ajoutes = apres - avant supprimes = avant - apres print("Ajoutés :", sorted(ajoutes)) print("Supprimés :", sorted(supprimes)) |
Output :
1 2 | Ajoutés : ['Montre'] Supprimés : [] |
Exemple 5 : classifier les appareils selon leur niveau de risque
Le programme suivant utilise des scores fictifs pour classer les équipements selon leur priorité d'examen.
1 2 3 4 5 6 7 8 9 10 11 12 13 | risques = { "Casque": 2, "Capteur": 7, "Montre": 4 } for appareil, score in risques.items(): if score >= 7: niveau = "Élevé" elif score >= 4: niveau = "Moyen" else: niveau = "Faible" print(appareil, ":", niveau) |
Output :
1 2 3 | Casque : Faible Capteur : Élevé Montre : Moyen |
Ces scores sont purement pédagogiques et ne constituent pas une évaluation réelle des vulnérabilités.
Exemple 6 : identifier les équipements nécessitant une mise à jour
Le programme suivant examine un inventaire fictif et affiche les équipements dont le firmware est indiqué comme non actualisé.
1 2 3 4 5 6 7 8 | appareils = { "Capteur": False, "Casque": True, "Montre": False } for appareil, a_jour in appareils.items(): if not a_jour: print("Mise à jour à vérifier :", appareil) |
Output :
1 2 | Mise à jour à vérifier : Capteur Mise à jour à vérifier : Montre |
Exemple 7 : vérifier la politique d'appairage
Le programme suivant représente une politique fictive interdisant certains modes d'appairage pour les équipements sensibles.
1 2 3 4 5 6 7 8 9 10 | appareils = { "Capteur critique": "Just Works", "Terminal sécurisé": "Numeric Comparison", "Clavier": "Passkey Entry" } for appareil, mode in appareils.items(): if mode == "Just Works": print(appareil, ": authentification à examiner") else: print(appareil, ": mode à évaluer :", mode) |
Output :
1 2 3 | Capteur critique : authentification à examiner Terminal sécurisé : mode à évaluer : Numeric Comparison Clavier : mode à évaluer : Passkey Entry |
La sécurité réelle dépend de la version Bluetooth, des capacités des appareils et des mécanismes effectivement utilisés.
Exemple 8 : simuler une politique d'autorisation GATT
Le programme suivant représente les permissions d'accès à des caractéristiques BLE fictives.
1 2 3 4 5 6 7 8 9 10 11 | caracteristiques = { "temperature": {"lecture"}, "configuration": {"lecture", "ecriture"}, "commande_critique": {"lecture"} } nom = "commande_critique" operation = "ecriture" if operation in caracteristiques[nom]: print("Opération autorisée") else: print("Opération refusée") |
Output :
1 | Opération refusée |
Dans un équipement réel, les permissions GATT doivent être complétées par des mécanismes d'authentification et d'autorisation adaptés.
Exemple 9 : détecter une modification de configuration
Le programme suivant compare deux configurations fictives et affiche les paramètres modifiés.
1 2 3 4 5 6 7 8 9 10 11 12 13 | avant = { "discoverable": False, "bonding": True, "chiffrement": True } apres = { "discoverable": True, "bonding": True, "chiffrement": True } for parametre in avant: if avant[parametre] != apres[parametre]: print("Modification :", parametre) |
Output :
1 | Modification : discoverable |
Exemple 10 : générer un rapport CSV d'audit Bluetooth
Le programme suivant crée un fichier CSV contenant un inventaire fictif d'équipements Bluetooth.
1 2 3 4 5 6 7 8 9 10 | import csv appareils = [ ["Nom", "Technologie", "Etat"], ["Casque", "Classic", "Autorisé"], ["Capteur", "BLE", "À vérifier"] ] with open("audit_bluetooth.csv", "w", newline="", encoding="utf-8") as fichier: writer = csv.writer(fichier) writer.writerows(appareils) print("Rapport créé") |
Output :
1 | Rapport créé |
Exemple 11 : installer Bleak
Pour utiliser Bluetooth Low Energy avec Python, il est possible d'installer la bibliothèque Bleak.
Le programme suivant vérifie si Bleak est disponible dans l'environnement Python. L'installation préalable peut être réalisée avec la commande python -m pip install bleak dans un terminal.
1 2 3 4 5 | try: import bleak print("Bleak est installé") except ImportError: print("Bleak n'est pas installé") |
Output si Bleak est installé :
1 | Bleak est installé |
Exemple 12 : découvrir les appareils BLE autorisés à proximité
Le programme suivant utilise BleakScanner pour découvrir les appareils BLE visibles à proximité pendant cinq secondes.
Il doit être utilisé dans un environnement de test autorisé. Les appareils découverts peuvent inclure des équipements qui n'appartiennent pas au laboratoire ; il convient de ne pas conserver ni diffuser leurs identifiants sans nécessité.
1 2 3 4 5 6 7 8 | import asyncio from bleak import BleakScanner async def main(): appareils = await BleakScanner.discover(timeout=5.0) print("Nombre d'appareils détectés :", len(appareils)) for appareil in appareils: print("Nom :", appareil.name or "Inconnu") asyncio.run(main()) |
Output possible :
1 2 3 | Nombre d'appareils détectés : 2 Nom : Capteur BLE Nom : Montre |
Le résultat dépend de l'environnement, de la compatibilité de l'adaptateur et des équipements visibles.
Exemple 13 : filtrer les appareils BLE selon leur nom
Le programme suivant utilise Bleak pour rechercher uniquement les appareils dont le nom correspond à celui d'un capteur de laboratoire.
1 2 3 4 5 6 7 8 | import asyncio from bleak import BleakScanner async def main(): appareils = await BleakScanner.discover(timeout=5.0) for appareil in appareils: if appareil.name == "Capteur BLE": print("Capteur de laboratoire détecté") asyncio.run(main()) |
Output possible :
1 | Capteur de laboratoire détecté |
Le nom Bluetooth peut être modifié ou usurpé. Ce filtrage ne constitue donc pas une authentification.
Exemple 14 : examiner les services GATT d'un équipement de laboratoire
Le programme suivant se connecte à un appareil BLE explicitement autorisé afin d'afficher les UUID de ses services.
Il faut remplacer l'identifiant d'exemple par celui de l'appareil de laboratoire. Sous Windows et Linux, l'identifiant peut prendre la forme d'une adresse Bluetooth ; sur macOS, il peut correspondre à un identifiant système différent.
1 2 3 4 5 6 7 8 9 10 11 | import asyncio from bleak import BleakClient IDENTIFIANT = "AA:BB:CC:DD:EE:FF" async def main(): try: async with BleakClient(IDENTIFIANT, timeout=10.0) as client: for service in client.services: print("Service :", service.uuid) except Exception as erreur: print("Connexion impossible :", type(erreur).__name__) asyncio.run(main()) |
Output possible avec un équipement compatible :
1 2 | Service : 00001800-0000-1000-8000-00805f9b34fb Service : 00001801-0000-1000-8000-00805f9b34fb |
Les UUID affichés dépendent des services réellement proposés par l'appareil.
Exemple 15 : examiner les caractéristiques GATT
Le programme suivant affiche les caractéristiques et leurs propriétés déclarées pour un appareil BLE de laboratoire.
1 2 3 4 5 6 7 8 9 10 11 12 13 | import asyncio from bleak import BleakClient IDENTIFIANT = "AA:BB:CC:DD:EE:FF" async def main(): try: async with BleakClient(IDENTIFIANT, timeout=10.0) as client: for service in client.services: for caracteristique in service.characteristics: print("UUID :", caracteristique.uuid) print("Propriétés :", caracteristique.properties) except Exception as erreur: print("Connexion impossible :", type(erreur).__name__) asyncio.run(main()) |
Output possible :
1 2 | UUID : 00002a00-0000-1000-8000-00805f9b34fb Propriétés : ['read'] |
Les propriétés indiquent les opérations annoncées par le serveur GATT. Elles ne suffisent pas, à elles seules, à déterminer toutes les conditions d'authentification ou d'autorisation.
Exemple 16 : mini tableau de bord de sécurité Bluetooth
Le programme suivant calcule des indicateurs à partir d'un inventaire fictif d'équipements Bluetooth.
1 2 3 4 5 6 7 8 9 10 11 12 13 | appareils = [ {"nom": "Casque", "autorise": True, "a_jour": True}, {"nom": "Capteur", "autorise": True, "a_jour": False}, {"nom": "Inconnu", "autorise": False, "a_jour": False} ] total = len(appareils) autorises = sum(a["autorise"] for a in appareils) non_autorises = total - autorises mises_a_jour = sum(not a["a_jour"] for a in appareils) print("Total :", total) print("Autorisés :", autorises) print("Non autorisés :", non_autorises) print("Mises à jour à vérifier :", mises_a_jour) |
Output :
1 2 3 4 | Total : 3 Autorisés : 2 Non autorisés : 1 Mises à jour à vérifier : 2 |
Laboratoire pédagogique Bluetooth avec Kali Linux
Un laboratoire pédagogique peut être constitué d'un ordinateur utilisant Kali Linux, d'un adaptateur Bluetooth compatible et d'un équipement BLE appartenant au testeur.
Les étapes recommandées sont les suivantes :
- Vérifier la présence d'un adaptateur Bluetooth compatible.
- Installer les composants Bluetooth nécessaires.
- Vérifier que l'adaptateur est reconnu par Kali Linux.
- Activer un appareil BLE de laboratoire.
- Utiliser un outil de découverte pour identifier cet appareil.
- Vérifier son identité à partir des informations documentées du laboratoire.
- Examiner les services et caractéristiques autorisés.
- Documenter les propriétés de sécurité observées.
- Vérifier les mises à jour disponibles.
- Rédiger un rapport d'audit et proposer des améliorations.
Ce laboratoire permet de découvrir les bases de l'analyse de sécurité Bluetooth sans chercher à compromettre des équipements tiers.
7. À retenir
Le Bluetooth Hacking désigne les techniques d'analyse et d'exploitation des vulnérabilités liées aux communications Bluetooth.
Le Bluetooth est utilisé dans de nombreux appareils, notamment les smartphones, ordinateurs, périphériques audio et objets connectés.
Les deux grandes familles étudiées sont le Bluetooth Classic et le Bluetooth Low Energy.
Les principaux mécanismes de sécurité concernent l'appairage, l'authentification, le chiffrement et la gestion des clés.
Les attaques Bluetooth comprennent notamment le Bluejacking, le Bluesnarfing, le Bluebugging, le MITM, le Spoofing et le DoS.
Des vulnérabilités historiques comme BlueBorne, KNOB, BLURtooth et BrakTooth montrent l'importance de maintenir les équipements à jour.
Les outils BlueZ, bluetoothctl, btmon, Wireshark et Bleak peuvent contribuer à l'analyse des communications et configurations Bluetooth.
Les mesures de protection comprennent les mises à jour, la vérification des demandes d'appairage, la limitation des permissions et la suppression des associations inutilisées.
Python permet de développer des outils pédagogiques d'inventaire, de surveillance et d'exploration des services BLE.
Enfin, les tests de sécurité Bluetooth doivent être réalisés uniquement sur des appareils appartenant au testeur ou dans un périmètre explicitement autorisé.
Auteur : Younes Derfoufi
Lieu de travail : CRMEF OUJDA
Site Web : www.tresfacile.net
Chaine YouTube : https://www.youtube.com/user/InformatiquesFacile
Me contacter : https://www.tresfacile.net/me-contacter/



