hacktricks/radio-hacking/pentesting-ble-bluetooth-low-energy.md

80 lines
6 KiB
Markdown
Raw Normal View History

2023-06-03 01:46:23 +00:00
# Introducción
2022-05-01 16:32:23 +00:00
2023-06-03 01:46:23 +00:00
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.
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
Los dispositivos BLE se comunican enviando **paquetes publicitarios** (**balizas**), estos paquetes transmiten la existencia del dispositivo BLE a otros dispositivos cercanos. Estas balizas a veces **envían datos** también.
2022-05-01 16:32:23 +00:00
2023-06-03 01:46:23 +00:00
El dispositivo receptor, también llamado dispositivo central, puede responder a un paquete publicitario con una **solicitud de ESCANEO** enviada específicamente al dispositivo publicitario. La **respuesta** a ese escaneo utiliza la misma estructura que el **paquete publicitario** con información adicional que no pudo caber en la solicitud publicitaria inicial, como el nombre completo del dispositivo.
2022-02-28 09:13:08 +00:00
2022-05-01 16:17:23 +00:00
![](<../.gitbook/assets/image (201) (2) (1) (1).png>)
2022-02-28 09:13:08 +00:00
2023-06-03 01:46:23 +00:00
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 en los que varios dispositivos intentan establecer conexiones en los mismos canales. A continuación, la Unidad de Datos de Protocolo (**PDU**) contiene los **datos publicitarios**. 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 publicitario. Los dispositivos utilizan **ADV\_IND** si **permiten conexiones** y **dejan de enviar paquetes publicitarios** una vez que se ha **establecido una conexión**.
2022-02-28 09:13:08 +00:00
2022-05-01 16:32:23 +00:00
## GATT
2022-02-28 09:13:08 +00:00
2023-06-03 01:46:23 +00:00
El **Perfil de Atributo Genérico** (GATT) define cómo el **dispositivo debe formatear y transferir datos**. Cuando se analiza la superficie de ataque de un dispositivo BLE, a menudo se concentra la 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 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.
2022-02-28 09:13:08 +00:00
2023-06-03 01:46:23 +00:00
# Enumeración
2022-02-28 09:13:08 +00:00
```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
```
2022-05-01 16:32:23 +00:00
## GATTool
2022-02-28 09:13:08 +00:00
2023-06-03 01:46:23 +00:00
**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 una consola interactiva con la opción `-I`:
2022-02-28 09:13:08 +00:00
```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
```
2022-05-01 16:32:23 +00:00
## Bettercap
2022-02-28 09:13:08 +00:00
2023-06-03 01:46:23 +00:00
Bettercap es una herramienta de pentesting de red que se enfoca en la interceptación de tráfico y la manipulación de paquetes. Es compatible con Bluetooth Low Energy (BLE) y puede utilizarse para realizar ataques de spoofing y MITM en dispositivos BLE. Bettercap también puede utilizarse para escanear y enumerar dispositivos BLE cercanos y extraer información de ellos.
2022-02-28 09:13:08 +00:00
```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
```
2022-04-28 16:01:33 +00:00
<details>
2023-04-25 18:35:28 +00:00
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- ¿Trabajas en una **empresa de ciberseguridad**? ¿Quieres ver tu **empresa anunciada en HackTricks**? ¿O quieres tener acceso a la **última versión de PEASS o descargar HackTricks en PDF**? ¡Consulta los [**PLANES DE SUSCRIPCIÓN**](https://github.com/sponsors/carlospolop)!
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- Descubre [**The PEASS Family**](https://opensea.io/collection/the-peass-family), nuestra colección exclusiva de [**NFTs**](https://opensea.io/collection/the-peass-family)
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- Obtén la [**oficial PEASS & HackTricks swag**](https://peass.creator-spring.com)
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- **Únete al** [**💬**](https://emojipedia.org/speech-balloon/) **grupo de Discord** o al [**grupo de telegram**](https://t.me/peass) o **sígueme en** **Twitter** [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks_live)**.**
2022-04-28 16:01:33 +00:00
2023-06-03 01:46:23 +00:00
- **Comparte tus trucos de hacking enviando PRs al repositorio [hacktricks](https://github.com/carlospolop/hacktricks) y al repositorio [hacktricks-cloud](https://github.com/carlospolop/hacktricks-cloud)**.
2022-04-28 16:01:33 +00:00
</details>