🔋BLE
Bluetooth Low Energy
Description
Le BLE consomme beaucoup moins d'énergie que le Bluetooth traditionnel, mais il peut transmettre très efficacement de petites quantités de données. BLE utilise seulement 40 canaux, couvrant l'intervalle de fréquence de 2400 à 2483,5 MHz contrairement au Bluetooth traditionnel qui utilise 79 canaux dans ce même intervalle.
Structure d'un paquet BLE
Generic Access Profile et Generic Attribute Profile
Tous les équipements utilisant le BLE possédent un GAP (Generic Access Profile) leur permettant de définir comment ils peuvent se connecter à d'autres équipements, comment communiquer avec et comment se rendre disponible à la decouverte au travers du broadcast.
Un périphérique peut être connecté à un seul appareil central, alors qu'un appareil central peut se connecter à autant de périphériques que le périphérique central peut en supporter. Une fois une connexion établie, plus aucune connexion n'est permise.
Le GATT (Generic Attribute Profile) quant à lui permet de définir le formatage et la transmission de données. Le GATT répertorie les caractéristiques, les descripteurs et les services d'un appareil dans une table sous forme de valeurs 16 ou 32 bits. Une caractéristique est une valeur de données envoyée entre l'appareil central et le périphérique. Ces caractéristiques peuvent avoir des descripteurs qui fournissent des informations supplémentaires à leur sujet. Les caractéristiques sont souvent regroupés en services s'ils sont liés à l'exécution d'une action. Les services peuvent avoir plusieurs caractéristiques comme montré ci-dessous.
Setup
Afin de communiquer avec le protocole BLE, il faut utiliser un équipement spécifique tel qu'un ESP32 Wroom (ESP possédant un module Bluetooth).
Prérequis: driver BlueZ (http://www.bluez.org/download/)
Vérifier si l'interface bluetooth est activée
$ hciconfig
Si l'interface n'est pas visible, vérifier les config du module avec modprobe comme ceci:
$ modprobe -c bluetooth
Vous pourvez également essayer de relancer l'interface:
$ hciconfig hci0 down && hciconfig hci0 up
$ hciconfig hci0 reset
Reconnaissance
Si un appareil IoT compatible BLE n'est pas correctement protégé, vous pouvez intercepter, analyser, modifier et retransmettre ses communications. Dans l'ensemble, lors de l'évaluation de la sécurité d'un appareil IoT avec BLE, vous devez suivre ce processus:
Chercher les adresses des équipements BLE.
Énumérer les serveurs GATT.
Identifier leur fonctionnalité à travers les caractéristiques listées, les services, et attributs.
Manipuler les fonctionnalités de l'appareil via des opérations de lecture et d'écriture.
GATTTool
GaTTTool est un outil appartenant à BlueZ permettant de faire ses actions.
GATTTool peut lancer un shell interactif avec l'option -I.
$ gatttool -i hci0 -I
Une fois cela fait il faut se connecter à l'équipement grâce à son adresse MAC.
>connect <adresse mac>
puis > characteristics
pour lister les caractéristiques.
Une fois cela fait, on obtiens des handles, values et services mais ils ne sont pas directement lisible contrairement a bettercap.
Lecture
$ gatttool -i <interface bluetooth> -b <adresse mac> --char-write-req <handler> <donnée>
Ecriture
$ gatttool -i <interface bluetooth> -b <adresse mac> --char-read -a <handler>
Bettercap
Bettercap est un outil permettant d'effectuer des attaques contre les protocoles opérants à la fréquence de 2,4 GHz. Bettercap est natif à kali.
ressource: https://www.bettercap.org/
Découverte d'hôtes
$ bettercap --eval "ble.recon" on
puis,
>> ble.show #Pour visualiser les informations des équipements trouvés
Énumération des caracteristiques, services et descripteurs
>> ble.enum
Ecriture
>> ble.write <adresse mac> <UUID> <Données hexadécimales>
Mobile
Recupération du traffic bluetooth depuis un téléphone android via ADB.
Activer le mode développeur
Dans les options développeur, activer la journalisation HCI Bluetooth
Faire ses manipulations avec l'appareil bluetooth
Via adb,
$ adb bugreport bugreport
Décompresser le fichier
bugreport.zip
Trouver le fichier
btsnoop_hci.log
($ find . -name "btsnoop_hci.log"
)Ouvrir le fichier avec Wirehark
Filtrer les requêtes avec les filtres
bthci_evt.bd_addr == xx:xx:xx:xx:xx:xx || bthci_cmd.bd_addr == xx:xx:xx:xx:xx:xx || bluetooth.addr == xx:xx:xx:xx:xx:xx
où xx:xx:xx:xx:xx:xx correspond à l'adresse MAC du device bluetooth testé.
Dernière mise à jour