Pentesting BLE - Bluetooth Low Energy

Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Introduzione

Disponibile dalla specifica Bluetooth 4.0, BLE utilizza solo 40 canali, coprendo l'intervallo da 2400 a 2483,5 MHz. Al contrario, il Bluetooth tradizionale utilizza 79 canali nello stesso intervallo.

I dispositivi BLE comunicano inviando pacchetti pubblicitari (beacon), questi pacchetti trasmettono l'esistenza del dispositivo BLE ad altri dispositivi nelle vicinanze. A volte questi beacon inviano anche dati.

Il dispositivo in ascolto, chiamato anche dispositivo centrale, può rispondere a un pacchetto pubblicitario con una richiesta di SCANSIONE inviata specificamente al dispositivo pubblicitario. La risposta a quella scansione utilizza la stessa struttura del pacchetto pubblicitario con informazioni aggiuntive che non potevano essere inserite nella richiesta pubblicitaria iniziale, come il nome completo del dispositivo.

Il byte di preambolo sincronizza la frequenza, mentre l'indirizzo di accesso a quattro byte è un identificatore di connessione, che viene utilizzato in scenari in cui più dispositivi stanno cercando di stabilire connessioni sugli stessi canali. Successivamente, l'Unità di Dati di Protocollo (PDU) contiene i dati pubblicitari. Ci sono diversi tipi di PDU; i più comunemente usati sono ADV_NONCONN_IND e ADV_IND. I dispositivi utilizzano il tipo di PDU ADV_NONCONN_IND se non accettano connessioni, trasmettendo dati solo nel pacchetto pubblicitario. I dispositivi utilizzano ADV_IND se consentono connessioni e smettono di inviare pacchetti pubblicitari una volta che una connessione è stata stabilita.

GATT

Il Profilo Attributo Generico (GATT) definisce come il dispositivo dovrebbe formattare e trasferire i dati. Quando si analizza la superficie di attacco di un dispositivo BLE, spesso si concentra l'attenzione sul GATT (o sui GATT), perché è così che viene attivata la funzionalità del dispositivo e come i dati vengono memorizzati, raggruppati e modificati. Il GATT elenca le caratteristiche, i descrittori e i servizi di un dispositivo in una tabella come valori a 16 o 32 bit. Una caratteristica è un valore di dati inviato tra il dispositivo centrale e periferico. Queste caratteristiche possono avere descrittori che forniscono informazioni aggiuntive su di esse. Le caratteristiche sono spesso raggruppate in servizi se sono correlate all'esecuzione di una particolare azione.

Enumerazione

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 consente di stabilire una connessione con un altro dispositivo, elencare le caratteristiche di quel dispositivo, e leggere e scrivere i suoi attributi. GATTTool può avviare una shell interattiva con l'opzione -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
Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Last updated