6.4 KiB
Pentesting BLE - Bluetooth Low Energy
Aprende hacking en AWS desde cero hasta experto con htARTE (Experto en Equipos Rojos de AWS de HackTricks)!
Otras formas de apoyar a HackTricks:
- Si deseas ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF Consulta los PLANES DE SUSCRIPCIÓN!
- Obtén la merchandising oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
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 (balizas), estos paquetes transmiten la existencia del dispositivo BLE a otros dispositivos cercanos. Estas balizas 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 de ESCANEO enviada específicamente al dispositivo publicitario. 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 varios dispositivos intentan establecer conexiones en los mismos canales. A continuación, la Unidad de Datos del Protocolo (PDU) contiene los datos de publicidad. Hay varios tipos de PDU; los más 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 enumera 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 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 realizar una acción específica.
Enumeración
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, listar las características de ese dispositivo, y leer y escribir sus atributos.
GATTTool puede lanzar un shell interactivo con la opción -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
Aprende hacking en AWS de cero a héroe con htARTE (Experto en Red Team de AWS de HackTricks)!
Otras formas de apoyar a HackTricks:
- Si quieres ver tu empresa anunciada en HackTricks o descargar HackTricks en PDF Consulta los PLANES DE SUSCRIPCIÓN!
- Obtén el swag oficial de PEASS & HackTricks
- Descubre La Familia PEASS, nuestra colección exclusiva de NFTs
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @carlospolopm.
- Comparte tus trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.