Pentesting BLE - Bluetooth Low Energy

Support HackTricks

Вступ

Доступний з специфікації Bluetooth 4.0, BLE використовує лише 40 каналів, охоплюючи діапазон від 2400 до 2483,5 МГц. На відміну від цього, традиційний Bluetooth використовує 79 каналів у тому ж діапазоні.

BLE пристрої спілкуються, надсилаючи рекламні пакети (beacons), ці пакети транслюють існування BLE пристрою іншим сусіднім пристроям. Ці beacons іноді також надсилають дані.

Пристрій, що слухає, також званий центральним пристроєм, може відповісти на рекламний пакет з SCAN запитом, надісланим спеціально до рекламного пристрою. Відповідь на цей скан використовує ту ж структуру, що й рекламний пакет, з додатковою інформацією, яка не вмістилася в початковий рекламний запит, такою як повна назва пристрою.

Байт преамбули синхронізує частоту, тоді як чотирибайтовий адреса доступу є ідентифікатором з'єднання, який використовується в сценаріях, коли кілька пристроїв намагаються встановити з'єднання на тих же каналах. Далі, Протокольна Дані Одиниця (PDU) містить рекламні дані. Існує кілька типів PDU; найчастіше використовувані - це ADV_NONCONN_IND та ADV_IND. Пристрої використовують тип PDU ADV_NONCONN_IND, якщо вони не приймають з'єднання, передаючи дані лише в рекламному пакеті. Пристрої використовують ADV_IND, якщо вони дозволяють з'єднання і припиняють надсилання рекламних пакетів, як тільки з'єднання було встановлено.

GATT

Generic Attribute Profile (GATT) визначає, як пристрій повинен форматувати та передавати дані. Коли ви аналізуєте поверхню атаки BLE пристрою, ви часто зосереджуєте свою увагу на GATT (або GATTs), оскільки це те, як функціональність пристрою активується і як дані зберігаються, групуються та модифікуються. GATT перераховує характеристики, дескриптори та сервіси пристрою в таблиці як значення 16 або 32 біти. Характеристика - це значення даних, що надсилається між центральним пристроєм і периферійним. Ці характеристики можуть мати дескриптори, які надають додаткову інформацію про них. Характеристики часто групуються в сервіси, якщо вони пов'язані з виконанням певної дії.

Перерахування

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 дозволяє встановити з'єднання з іншим пристроєм, перерахувати характеристики цього пристрою та читати і записувати його атрибути. GATTTool може запустити інтерактивну оболонку з опцією -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
Підтримайте HackTricks

Last updated