You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
>> ble.write <mac address of device> ff06 68656c6c6f # Write "hello" in ff06
71
71
```
72
72
73
-
{{#include ../../banners/hacktricks-training.md}}
73
+
## Sniffing and actively controlling unpaired BLE devices
74
+
75
+
Many low-cost BLE peripherals do not enforce pairing/bonding. Without bonding, the Link Layer encryption is never enabled, so ATT/GATT traffic is in cleartext. An off-path sniffer can follow the connection, decode GATT operations to learn characteristic handles and values, and any nearby host can then connect and replay those writes to control the device.
76
+
77
+
### Sniffing with Sniffle (CC26x2/CC1352)
78
+
79
+
Hardware: a Sonoff Zigbee 3.0 USB Dongle Plus (CC26x2/CC1352) re-flashed with NCC Group’s Sniffle firmware.
74
80
81
+
Install Sniffle and its Wireshark extcap on Linux:
82
+
83
+
```bash
84
+
if [ !-d /opt/sniffle/Sniffle-1.10.0/python_cli ];then
85
+
echo"[+] - Sniffle not installed! Installing at 1.10.0..."
Capture in Wireshark via the Sniffle extcap and quickly pivot to state-changing writes by filtering:
118
+
119
+
```text
120
+
_ws.col.info contains "Sent Write Command"
121
+
```
76
122
123
+
This highlights ATT Write Commands from the client; the handle and value often directly map to device actions (e.g., write 0x01 to a buzzer/alert characteristic, 0x00 to stop).
Alternative sniffer: Nordic’s nRF Sniffer for BLE + Wireshark plugin also works. On small/cheap Nordic dongles you typically overwrite the USB bootloader to load the sniffer firmware, so you either keep a dedicated sniffer dongle or need a J-Link/JTAG to restore the bootloader later.
136
+
137
+
### Active control via GATT
138
+
139
+
Once you’ve identified a writable characteristic handle and value from the sniffed traffic, connect as any central and issue the same write:
140
+
141
+
- With Nordic nRF Connect for Desktop (BLE app):
142
+
- Select the nRF52/nRF52840 dongle, scan and connect to the target.
143
+
- Browse the GATT database, locate the target characteristic (often has a friendly name, e.g., Alert Level).
144
+
- Perform a Write with the sniffed bytes (e.g., 01 to trigger, 00 to stop).
145
+
146
+
- Automate on Windows with a Nordic dongle using Python + blatann:
147
+
148
+
```python
149
+
import time
150
+
import blatann
151
+
152
+
# CONFIG
153
+
COM_PORT="COM29"# Replace with your COM port
154
+
TARGET_MAC="5B:B1:7F:47:A7:00"# Replace with your target MAC
- Prefer Sonoff+Sniffle on Linux for robust channel hopping and connection following. Keep a spare Nordic sniffer as a backup.
191
+
- Without pairing/bonding, any nearby attacker can observe writes and replay/craft their own to unauthenticated writable characteristics.
192
+
- Mitigations: require pairing/bonding and enforce encryption; set characteristic permissions to require authenticated writes; minimize unauthenticated writable characteristics; validate GATT ACLs with Sniffle/nRF Connect.
193
+
194
+
## References
195
+
196
+
-[Start hacking Bluetooth Low Energy today! (part 2) – Pentest Partners](https://www.pentestpartners.com/security-blog/start-hacking-bluetooth-low-energy-today-part-2/)
197
+
-[Sniffle – A sniffer for Bluetooth 5 and 4.x LE](https://github.com/nccgroup/Sniffle)
198
+
-[Firmware installation for Sonoff USB Dongle (Sniffle README)](https://github.com/nccgroup/Sniffle?tab=readme-ov-file#firmware-installation-sonoff-usb-dongle)
199
+
-[Sonoff Zigbee 3.0 USB Dongle Plus (ZBDongle-P)](https://sonoff.tech/en-uk/products/sonoff-zigbee-3-0-usb-dongle-plus-zbdongle-p)
200
+
-[Nordic nRF Sniffer for Bluetooth LE](https://www.nordicsemi.com/Products/Development-tools/nRF-Sniffer-for-Bluetooth-LE)
201
+
-[nRF Connect for Desktop](https://www.nordicsemi.com/Products/Development-tools/nRF-Connect-for-desktop)
202
+
-[blatann – Python BLE library for Nordic devices](https://blatann.readthedocs.io/en/latest/)
0 commit comments