Pentesting BLE - Bluetooth Low Energy

Support HackTricks

Introduction

Bluetooth 4.0 spesifikasyonundan beri mevcut olan BLE, yalnızca 40 kanal kullanır ve 2400 ile 2483.5 MHz aralığını kapsar. Buna karşılık, geleneksel Bluetooth bu aynı aralıkta 79 kanal kullanır.

BLE cihazları, reklam paketleri (beaconlar) göndererek iletişim kurar; bu paketler, BLE cihazının varlığını diğer yakın cihazlara yayınlar. Bu beaconlar bazen veri de gönderir.

Dinleyici cihaz, merkezi cihaz olarak da adlandırılır, bir reklam paketine SCAN isteği ile yanıt verebilir; bu istek özel olarak reklam cihazına gönderilir. O tarama isteğine verilen yanıt, tam cihaz adını gibi ilk reklam isteğine sığmayan ek bilgilerle birlikte reklam paketinin aynı yapısını kullanır.

Preambül baytı frekansı senkronize ederken, dört baytlık erişim adresi bir bağlantı tanımlayıcısıdır; bu, birden fazla cihazın aynı kanallarda bağlantı kurmaya çalıştığı senaryolarda kullanılır. Sonraki Protokol Veri Birimi (PDU), reklam verilerini içerir. Birkaç PDU türü vardır; en yaygın olarak kullanılanlar ADV_NONCONN_IND ve ADV_IND'dir. Cihazlar, bağlantıları kabul etmiyorlarsa ADV_NONCONN_IND PDU türünü kullanır ve yalnızca reklam paketinde veri iletir. Cihazlar, bağlantılara izin veriyorlarsa ADV_IND kullanır ve bir bağlantı kurulduğunda reklam paketlerini göndermeyi durdurur.

GATT

Generic Attribute Profile (GATT), cihazın verileri nasıl biçimlendireceğini ve ileteceğini tanımlar. Bir BLE cihazının saldırı yüzeyini analiz ederken, genellikle dikkatinizi GATT (veya GATT'ler) üzerinde yoğunlaştırırsınız, çünkü bu, cihaz işlevselliğinin tetiklendiği ve verilerin nasıl depolandığı, gruplandığı ve değiştirildiğidir. GATT, bir cihazın özelliklerini, tanımlayıcılarını ve hizmetlerini 16 veya 32 bit değerler olarak bir tabloda listeler. Bir özellik, merkezi cihaz ile çevresel cihaz arasında gönderilen bir veri değeridir. Bu özellikler, onlara ek bilgi sağlayan tanımlayıcılar içerebilir. Özellikler, belirli bir eylemi gerçekleştirmekle ilgili olduklarında genellikle hizmetlerde gruplandırılır.

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, başka bir cihazla bağlantı kurmayı sağlar, o cihazın özelliklerini listeleyebilir ve niteliklerini okuyup yazabilir. GATTTool, -I seçeneği ile etkileşimli bir kabuk başlatabilir:

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
HackTricks'i Destekleyin

Last updated