6.3 KiB
{% hint style="success" %}
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
Einführung
Seit der Bluetooth 4.0-Spezifikation verwendet BLE nur 40 Kanäle, die den Bereich von 2400 bis 2483,5 MHz abdecken. Im Gegensatz dazu verwendet traditionelles Bluetooth 79 Kanäle im selben Bereich.
BLE-Geräte kommunizieren, indem sie Werbepakete (Beacons) senden, diese Pakete senden die Existenz des BLE-Geräts an andere nahegelegene Geräte. Diese Beacons senden manchmal auch Daten.
Das hörende Gerät, auch zentrales Gerät genannt, kann auf ein Werbepaket mit einer SCAN-Anfrage reagieren, die speziell an das werbende Gerät gesendet wird. Die Antwort auf diesen Scan verwendet die gleiche Struktur wie das Werbepaket mit zusätzlichen Informationen, die nicht in die ursprüngliche Werbeanfrage passten, wie den vollständigen Gerätenamen.
Das Präambel-Byte synchronisiert die Frequenz, während die vier Byte lange Zugangsadresse ein Verbindungsidentifikator ist, der in Szenarien verwendet wird, in denen mehrere Geräte versuchen, Verbindungen auf denselben Kanälen herzustellen. Als Nächstes enthält die Protokolldateneinheit (PDU) die Werbedaten. Es gibt mehrere Arten von PDU; die am häufigsten verwendeten sind ADV_NONCONN_IND und ADV_IND. Geräte verwenden den PDU-Typ ADV_NONCONN_IND, wenn sie keine Verbindungen akzeptieren, und übertragen Daten nur im Werbepaket. Geräte verwenden ADV_IND, wenn sie Verbindungen zulassen und aufhören, Werbepakete zu senden, sobald eine Verbindung hergestellt wurde.
GATT
Das Generic Attribute Profile (GATT) definiert, wie das Gerät Daten formatieren und übertragen sollte. Wenn Sie die Angriffsfläche eines BLE-Geräts analysieren, konzentrieren Sie oft Ihre Aufmerksamkeit auf das GATT (oder GATTs), da es bestimmt, wie die Gerätefunktionalität ausgelöst wird und wie Daten gespeichert, gruppiert und modifiziert werden. Das GATT listet die Merkmale, Deskriptoren und Dienste eines Geräts in einer Tabelle als 16- oder 32-Bit-Werte auf. Ein Merkmal ist ein Datenwert, der zwischen dem zentralen Gerät und dem Peripheriegerät gesendet wird. Diese Merkmale können Deskriptoren haben, die zusätzliche Informationen über sie bereitstellen. Merkmale werden oft in Diensten gruppiert, wenn sie mit der Durchführung einer bestimmten Aktion zusammenhängen.
Aufzählung
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 ermöglicht es, eine Verbindung mit einem anderen Gerät herzustellen, die Eigenschaften dieses Geräts aufzulisten und seine Attribute zu lesen und zu schreiben.
GATTTool kann mit der Option -I
eine interaktive Shell starten:
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
{% hint style="success" %}
Lerne & übe AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lerne & übe GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstütze HackTricks
- Überprüfe die Abonnementpläne!
- Tritt der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folge uns auf Twitter 🐦 @hacktricks_live.
- Teile Hacking-Tricks, indem du PRs zu den HackTricks und HackTricks Cloud GitHub-Repos einreichst.