Pentesting BLE - Bluetooth Low Energy

Support HackTricks

Wprowadzenie

Dostępny od specyfikacji Bluetooth 4.0, BLE używa tylko 40 kanałów, obejmujących zakres od 2400 do 2483,5 MHz. W przeciwieństwie do tego, tradycyjny Bluetooth używa 79 kanałów w tym samym zakresie.

Urządzenia BLE komunikują się, wysyłając pakiety reklamowe (beacons), które ogłaszają istnienie urządzenia BLE innym pobliskim urządzeniom. Te beacons czasami również wysyłają dane.

Urządzenie nasłuchujące, zwane również urządzeniem centralnym, może odpowiedzieć na pakiet reklamowy za pomocą żądania SCAN wysłanego specjalnie do urządzenia reklamowego. Odpowiedź na to skanowanie używa tej samej struktury co pakiet reklamowy z dodatkowymi informacjami, które nie mogły zmieścić się w początkowym żądaniu reklamowym, takimi jak pełna nazwa urządzenia.

Bajt preambuły synchronizuje częstotliwość, podczas gdy czterobajtowy adres dostępu jest identyfikatorem połączenia, który jest używany w scenariuszach, w których wiele urządzeń próbuje nawiązać połączenia na tych samych kanałach. Następnie Jednostka Danych Protokolarnej (PDU) zawiera dane reklamowe. Istnieje kilka typów PDU; najczęściej używane to ADV_NONCONN_IND i ADV_IND. Urządzenia używają typu PDU ADV_NONCONN_IND, jeśli nie akceptują połączeń, przesyłając dane tylko w pakiecie reklamowym. Urządzenia używają ADV_IND, jeśli pozwalają na połączenia i przestają wysyłać pakiety reklamowe, gdy połączenie zostało nawiązane.

GATT

Ogólny Profil Atrybutów (GATT) definiuje, jak urządzenie powinno formatować i przesyłać dane. Gdy analizujesz powierzchnię ataku urządzenia BLE, często skupiasz swoją uwagę na GATT (lub GATTach), ponieważ to sposób, w jaki funkcjonalność urządzenia jest wywoływana i jak dane są przechowywane, grupowane i modyfikowane. GATT wymienia cechy, deskryptory i usługi urządzenia w tabeli jako wartości 16- lub 32-bitowe. Cechą jest wartość danych wysyłana między urządzeniem centralnym a peryferyjnym. Te cechy mogą mieć deskryptory, które dostarczają dodatkowe informacje o nich. Cechy są często grupowane w usługach, jeśli są związane z wykonywaniem określonej akcji.

Enumeracja

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 umożliwia nawiązanie połączenia z innym urządzeniem, wylistowanie charakterystyk tego urządzenia oraz odczytywanie i zapisywanie jego atrybutów. GATTTool może uruchomić interaktywną powłokę z opcją -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
Wsparcie HackTricks

Last updated