mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
68 lines
4.3 KiB
Markdown
68 lines
4.3 KiB
Markdown
# Pentesting BLE - Bluetooth Low Energy
|
|
|
|
{{#include ../../banners/hacktricks-training.md}}
|
|
|
|
## Introduzione
|
|
|
|
Disponibile dalla specifica Bluetooth 4.0, BLE utilizza solo 40 canali, coprendo la gamma da 2400 a 2483,5 MHz. Al contrario, il Bluetooth tradizionale utilizza 79 canali nella stessa gamma.
|
|
|
|
I dispositivi BLE comunicano inviando **pacchetti pubblicitari** (**beacons**), questi pacchetti trasmettono l'esistenza del dispositivo BLE ad altri dispositivi nelle vicinanze. Questi beacon a volte **inviando dati**, too.
|
|
|
|
Il dispositivo in ascolto, chiamato anche dispositivo centrale, può rispondere a un pacchetto pubblicitario con una **richiesta SCAN** inviata specificamente al dispositivo pubblicitario. La **risposta** a quella scansione utilizza la stessa struttura del pacchetto **pubblicitario** con informazioni aggiuntive che non potevano essere incluse nella richiesta pubblicitaria iniziale, come il nome completo del dispositivo.
|
|
|
|
.png>)
|
|
|
|
Il byte di preambolo sincronizza la frequenza, mentre l'indirizzo di accesso di quattro byte è un **identificatore di connessione**, 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 pubblicità** pacchetti una volta che una **connessione** è stata **stabilita**.
|
|
|
|
### GATT
|
|
|
|
Il **Generic Attribute Profile** (GATT) definisce come il **dispositivo dovrebbe formattare e trasferire i dati**. Quando analizzi la superficie di attacco di un dispositivo BLE, spesso concentrerai la tua attenzione sul GATT (o GATTs), 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 **dati** **inviato** tra il dispositivo centrale e il 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 un'azione particolare.
|
|
|
|
## Enumerazione
|
|
```bash
|
|
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, elencando le **caratteristiche** di quel dispositivo e leggendo e scrivendo i suoi attributi.\
|
|
GATTTool può avviare una shell interattiva con l'opzione `-I`:
|
|
```bash
|
|
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
|
|
```bash
|
|
# 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
|
|
```
|
|
{{#include ../../banners/hacktricks-training.md}}
|