Pentesting BLE - Bluetooth Low Energy

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks

Introducci贸n

Disponible desde la especificaci贸n Bluetooth 4.0, BLE utiliza solo 40 canales, cubriendo el rango de 2400 a 2483.5 MHz. En contraste, el Bluetooth tradicional utiliza 79 canales en ese mismo rango.

Los dispositivos BLE se comunican enviando paquetes de publicidad (beacons), estos paquetes transmiten la existencia del dispositivo BLE a otros dispositivos cercanos. Estos beacons a veces tambi茅n env铆an datos.

El dispositivo receptor, tambi茅n llamado dispositivo central, puede responder a un paquete de publicidad con una solicitud SCAN enviada espec铆ficamente al dispositivo de publicidad. La respuesta a ese escaneo utiliza la misma estructura que el paquete de publicidad con informaci贸n adicional que no pudo caber en la solicitud de publicidad inicial, como el nombre completo del dispositivo.

El byte de pre谩mbulo sincroniza la frecuencia, mientras que la direcci贸n de acceso de cuatro bytes es un identificador de conexi贸n, que se utiliza en escenarios donde m煤ltiples dispositivos intentan establecer conexiones en los mismos canales. A continuaci贸n, la Unidad de Datos de Protocolo (PDU) contiene los datos de publicidad. Hay varios tipos de PDU; los m谩s com煤nmente utilizados son ADV_NONCONN_IND y ADV_IND. Los dispositivos utilizan el tipo de PDU ADV_NONCONN_IND si no aceptan conexiones, transmitiendo datos solo en el paquete de publicidad. Los dispositivos utilizan ADV_IND si permiten conexiones y dejan de enviar publicidad una vez que se ha establecido una conexi贸n.

GATT

El Perfil de Atributo Gen茅rico (GATT) define c贸mo el dispositivo debe formatear y transferir datos. Cuando est谩s analizando la superficie de ataque de un dispositivo BLE, a menudo concentrar谩s tu atenci贸n en el GATT (o GATTs), porque es c贸mo se activa la funcionalidad del dispositivo y c贸mo se almacenan, agrupan y modifican los datos. El GATT lista las caracter铆sticas, descriptores y servicios de un dispositivo en una tabla como valores de 16 o 32 bits. Una caracter铆stica es un valor de datos enviado entre el dispositivo central y el perif茅rico. Estas caracter铆sticas pueden tener descriptores que proporcionan informaci贸n adicional sobre ellas. Las caracter铆sticas a menudo se agrupan en servicios si est谩n relacionadas con la realizaci贸n de una acci贸n particular.

Enumeraci贸n

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 permite establecer una conexi贸n con otro dispositivo, listando las caracter铆sticas de ese dispositivo y leyendo y escribiendo sus atributos.
GATTTool puede lanzar un shell interactivo con la opci贸n -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

tip

Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks