Pentesting BLE - Bluetooth Low Energy

Support HackTricks

Uvod

Dostupan od Bluetooth 4.0 specifikacije, BLE koristi samo 40 kanala, pokrivajući opseg od 2400 do 2483.5 MHz. Nasuprot tome, tradicionalni Bluetooth koristi 79 kanala u istom opsegu.

BLE uređaji komuniciraju slanjem oglasnih paketa (beacons), ovi paketi emitiraju postojanje BLE uređaja drugim obližnjim uređajima. Ovi beacons ponekad takođe šalju podatke.

Uređaj koji sluša, takođe nazvan centralni uređaj, može odgovoriti na oglasni paket sa SCAN zahtevom poslatim posebno oglasnom uređaju. Odgovor na taj sken koristi istu strukturu kao i oglasni paket sa dodatnim informacijama koje nisu mogle stati u inicijalni oglasni zahtev, kao što je puno ime uređaja.

Bajt preambule sinhronizuje frekvenciju, dok je četvorobajtna adresa pristupa identifikator veze, koji se koristi u scenarijima gde više uređaja pokušava da uspostavi veze na istim kanalima. Sledeće, Protokol Jedinica Podataka (PDU) sadrži oglasne podatke. Postoji nekoliko tipova PDU; najčešće korišćeni su ADV_NONCONN_IND i ADV_IND. Uređaji koriste ADV_NONCONN_IND PDU tip ako ne prihvataju veze, prenoseći podatke samo u oglasnom paketu. Uređaji koriste ADV_IND ako dozvoljavaju veze i prestaju da šalju oglasne pakete kada je veza uspostavljena.

GATT

Generički atributni profil (GATT) definiše kako uređaj treba da formatira i prenosi podatke. Kada analizirate površinu napada BLE uređaja, često ćete usmeriti svoju pažnju na GATT (ili GATTs), jer je to način na koji se funkcionalnost uređaja aktivira i kako se podaci čuvaju, grupišu i modifikuju. GATT navodi karakteristike, deskriptore i usluge uređaja u tabeli kao 16- ili 32-bitne vrednosti. Karakteristika je vrednost podataka poslata između centralnog uređaja i perifernog. Ove karakteristike mogu imati deskriptore koji pružaju dodatne informacije o njima. Karakteristike se često grupišu u usluge ako su povezane sa izvršavanjem određene radnje.

Enumeracija

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 omogućava uspostavljanje veze sa drugim uređajem, prikazujući karakteristike tog uređaja, kao i čitanje i pisanje njegovih atributa. GATTTool može pokrenuti interaktivnu ljusku sa -I opcijom:

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
Podržite HackTricks

Last updated