hacktricks/radio-hacking/pentesting-ble-bluetooth-low-energy.md

6.6 KiB

Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :

Introduction

Disponible depuis la spécification Bluetooth 4.0, le BLE utilise seulement 40 canaux, couvrant la gamme de 2400 à 2483,5 MHz. En contraste, le Bluetooth traditionnel utilise 79 canaux dans cette même gamme.

La manière dont les appareils BLE communiquent est en envoyant des paquets publicitaires (balises), ces paquets diffusent l'existence de l'appareil BLE aux autres appareils à proximité. Ces balises envoient parfois des données également.

L'appareil à l'écoute, également appelé appareil central, peut répondre à un paquet publicitaire avec une demande de SCAN envoyée spécifiquement à l'appareil publicitaire. La réponse à ce scan utilise la même structure que le paquet publicitaire avec des informations supplémentaires qui ne pouvaient pas tenir dans la demande publicitaire initiale, telles que le nom complet de l'appareil.

Le préambule d'un octet synchronise la fréquence, tandis que l'adresse d'accès de quatre octets est un identifiant de connexion, qui est utilisé dans des scénarios où plusieurs appareils tentent d'établir des connexions sur les mêmes canaux. Ensuite, l'Unité de Données de Protocole (PDU) contient les données publicitaires. Il existe plusieurs types de PDU ; les plus couramment utilisés sont ADV_NONCONN_IND et ADV_IND. Les appareils utilisent le type de PDU ADV_NONCONN_IND s'ils n'acceptent pas de connexions, transmettant des données uniquement dans le paquet publicitaire. Les appareils utilisent ADV_IND s'ils permettent des connexions et arrêtent d'envoyer des paquets publicitaires une fois qu'une connexion a été établie.

GATT

Le Profil d'Attribut Générique (GATT) définit comment l'appareil doit formater et transférer les données. Lorsque vous analysez la surface d'attaque d'un appareil BLE, vous vous concentrerez souvent sur le GATT (ou les GATTs), car c'est ainsi que la fonctionnalité de l'appareil est déclenchée et comment les données sont stockées, regroupées et modifiées. Le GATT répertorie les caractéristiques, descripteurs et services d'un appareil dans un tableau sous forme de valeurs de 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ées dans des services si elles sont liées à l'exécution d'une action particulière.

Énumération

hciconfig #Check config, check if UP or DOWN
# If DOWN try:
sudo modprobe -c bluetooth
sudo hciconfig hci0 down && sudo hciconfig hci0 up

# Spoof MAC
spooftooph -i hci0 -a 11:22:33:44:55:66

GATTool

GATTool permet d'établir une connexion avec un autre appareil, de lister les caractéristiques de cet appareil, et de lire et écrire ses attributs.
GATTTool peut lancer un shell interactif avec l'option -I :

gatttool -i hci0 -I
[ ][LE]> connect 24:62:AB:B1:A8:3E Attempting to connect to A4:CF:12:6C:B3:76 Connection successful
[A4:CF:12:6C:B3:76][LE]> characteristics
handle: 0x0002, char properties: 0x20, char value handle:
0x0003, uuid: 00002a05-0000-1000-8000-00805f9b34fb
handle: 0x0015, char properties: 0x02, char value handle:
0x0016, uuid: 00002a00-0000-1000-8000-00805f9b34fb
[...]

# Write data
gatttool -i <Bluetooth adapter interface> -b <MAC address of device> --char-write-req <characteristic handle> -n <value>
gatttool -b a4:cf:12:6c:b3:76 --char-write-req -a 0x002e -n $(echo -n "04dc54d9053b4307680a"|xxd -ps)

# Read data
gatttool -i <Bluetooth adapter interface> -b <MAC address of device> --char-read -a 0x16

# Read connecting with an authenticated encrypted connection
gatttool --sec-level=high -b a4:cf:12:6c:b3:76 --char-read -a 0x002c

Bettercap

# Start listening for beacons
sudo bettercap --eval "ble.recon on"
# Wait some time
>> ble.show # Show discovered devices
>> ble.enum <mac addr> # This will show the service, characteristics and properties supported

# Write data in a characteristic
>> ble.write <MAC ADDR> <UUID> <HEX DATA>
>> ble.write <mac address of device> ff06 68656c6c6f # Write "hello" in ff06
Apprenez le hacking AWS de zéro à héros avec htARTE (HackTricks AWS Red Team Expert)!

Autres moyens de soutenir HackTricks :