Pentesting BLE - Bluetooth Low Energy

Support HackTricks

Introduction

Beskikbaar sedert die Bluetooth 4.0 spesifikasie, gebruik BLE slegs 40 kanale, wat die reeks van 2400 tot 2483.5 MHz dek. In teenstelling hiermee gebruik tradisionele Bluetooth 79 kanale in dieselfde reeks.

BLE toestelle kommunikeer deur advertensie pakkette (beacons) te stuur, hierdie pakkette versprei die bestaan van die BLE toestel na ander nabygeleë toestelle. Hierdie beacons stuur soms data ook.

Die luistertoestel, ook genoem 'n sentrale toestel, kan op 'n advertensie pakket reageer met 'n SCAN versoek wat spesifiek na die advertensie toestel gestuur word. Die antwoord op daardie skandering gebruik dieselfde struktuur as die advertensie pakket met bykomende inligting wat nie op die aanvanklike advertensie versoek kon pas nie, soos die volle toestelnaam.

Die preamble byte sinkroniseer die frekwensie, terwyl die vier-byte toegang adres 'n verbinding identifiseerder is, wat gebruik word in scenario's waar verskeie toestelle probeer om verbindings op dieselfde kanale te vestig. Volgende, die Protokol Data Eenheid (PDU) bevat die advertensie data. Daar is verskeie tipes PDU; die mees algemeen gebruikte is ADV_NONCONN_IND en ADV_IND. Toestelle gebruik die ADV_NONCONN_IND PDU tipe as hulle nie verbindings aanvaar nie, en stuur slegs data in die advertensie pakket. Toestelle gebruik ADV_IND as hulle verbindinge toelaat en stop met die stuur van advertensie pakkette sodra 'n verbinding gevestig is.

GATT

Die Generic Attribute Profile (GATT) definieer hoe die toestel data moet formateer en oordra. Wanneer jy 'n BLE toestel se aanval oppervlak analiseer, sal jy dikwels jou aandag op die GATT (of GATTs) konsentreer, omdat dit is hoe toestelfunksionaliteit geaktiveer word en hoe data gestoor, gegroepeer en gewysig word. Die GATT lys 'n toestel se eienskappe, beskrywings en dienste in 'n tabel as of 16- of 32-bits waardes. 'n Eienskap is 'n data waarde wat gestuur word tussen die sentrale toestel en die perifere toestel. Hierdie eienskappe kan beskrywings hê wat bykomende inligting oor hulle verskaf. Eienskappe word dikwels gegroepeer in dienste as hulle verband hou met die uitvoering van 'n spesifieke aksie.

Enumeration

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 stel in staat om 'n verbinding met 'n ander toestel te vestig, daardie toestel se kenmerke op te lys, en sy eienskappe te lees en te skryf. GATTTool kan 'n interaktiewe skulp met die -I opsie begin:

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
Ondersteun HackTricks

Last updated