Pentesting BLE - Bluetooth Low Energy
Reading time: 4 minutes
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.
Introduction
Доступний з специфікації Bluetooth 4.0, BLE використовує лише 40 каналів, охоплюючи діапазон від 2400 до 2483.5 МГц. На відміну від цього, традиційний Bluetooth використовує 79 каналів у тому ж діапазоні.
BLE пристрої спілкуються, надсилаючи advertising packets (beacons), ці пакети транслюють існування BLE пристрою іншим сусіднім пристроям. Ці маяки іноді також send data.
Слухач, також званий центральним пристроєм, може відповісти на advertising packet з SCAN request, надісланим спеціально до рекламного пристрою. Response на цей скан використовує ту ж структуру, що й advertising пакет з додатковою інформацією, яка не вмістилася в початковий advertising request, такою як повна назва пристрою.
Байт преамбули синхронізує частоту, тоді як чотирибайтовий адреса доступу є connection identifier, який використовується в сценаріях, коли кілька пристроїв намагаються встановити з'єднання на тих же каналах. Далі, Протокольна Дані Одиниця (PDU) містить advertising data. Існує кілька типів PDU; найчастіше використовуються ADV_NONCONN_IND та ADV_IND. Пристрої використовують тип PDU ADV_NONCONN_IND, якщо вони don’t accept connections, передаючи дані лише в advertising packet. Пристрої використовують ADV_IND, якщо вони allow connections і stop sending advertising пакети, як тільки connection було established.
GATT
Generic Attribute Profile (GATT) визначає, як пристрій повинен форматувати та передавати дані. Коли ви аналізуєте поверхню атаки BLE пристрою, ви часто зосереджуєте свою увагу на GATT (або GATTs), оскільки це те, як функціональність пристрою активується і як дані зберігаються, групуються та модифікуються. GATT перераховує характеристики, дескриптори та сервіси пристрою в таблиці як значення 16 або 32 біти. Characteristic - це data значення, яке sent між центральним пристроєм і периферійним. Ці характеристики можуть мати descriptors, які provide additional information about them. Characteristics часто grouped в services, якщо вони пов'язані з виконанням певної дії.
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 дозволяє встановити з'єднання з іншим пристроєм, перераховуючи характеристики цього пристрою та читаючи і записуючи його атрибути.
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
tip
Вивчайте та практикуйте AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Вивчайте та практикуйте GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Підтримайте HackTricks
- Перевірте плани підписки!
- Приєднуйтесь до 💬 групи Discord або групи telegram або слідкуйте за нами в Twitter 🐦 @hacktricks_live.
- Діліться хакерськими трюками, надсилаючи PR до HackTricks та HackTricks Cloud репозиторіїв на github.