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

92 lines
6.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

{% hint style="success" %}
Learn & practice AWS Hacking:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
Learn & practice GCP Hacking: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>Support HackTricks</summary>
* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)!
* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.**
* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
</details>
{% endhint %}
# はじめに
Bluetooth 4.0仕様から利用可能なBLEは、2400から2483.5 MHzの範囲をカバーする40のチャネルのみを使用します。それに対して、従来のBluetoothは同じ範囲で79のチャネルを使用します。
BLEデバイスは、**広告パケット****ビーコンズ**を送信することで通信します。これらのパケットは、BLEデバイスの存在を近くの他のデバイスにブロードキャストします。これらのビーコンズは、時には**データ**を送信することもあります。
リスニングデバイス、つまり中央デバイスは、広告パケットに対して**SCANリクエスト**を送信することで応答できます。このスキャンに対する**応答**は、**広告**パケットと同じ構造を持ち、初期の広告リクエストに収まらなかった追加情報(デバイスの完全な名前など)を含みます。
![](<../.gitbook/assets/image (201) (2) (1) (1).png>)
プレアンブルバイトは周波数を同期させ、4バイトのアクセスアドレスは**接続識別子**であり、複数のデバイスが同じチャネルで接続を確立しようとするシナリオで使用されます。次に、プロトコルデータユニット(**PDU**)は**広告データ**を含みます。PDUにはいくつかのタイプがあり、最も一般的に使用されるのはADV\_NONCONN\_INDとADV\_INDです。デバイスは**接続を受け付けない**場合、**ADV\_NONCONN\_IND** PDUタイプを使用し、広告パケット内でのみデータを送信します。デバイスは**接続を許可する**場合、**ADV\_IND**を使用し、**接続**が**確立**されると広告パケットの送信を停止します。
## GATT
**汎用属性プロファイル**GATTは、**デバイスがデータをフォーマットし転送する方法**を定義します。BLEデバイスの攻撃面を分析する際、GATTまたはGATTsに注意を集中させることがよくあります。なぜなら、これが**デバイス機能をトリガーする方法**であり、データが保存、グループ化、変更される方法だからです。GATTは、デバイスの特性、記述子、およびサービスを16ビットまたは32ビットの値として表形式でリストします。**特性**は、中央デバイスと周辺デバイスの間で**送信される**データ値です。これらの特性には、**追加情報を提供する**記述子がある場合があります。**特性**は、特定のアクションを実行することに関連している場合、**サービス**に**グループ化**されることがよくあります。
# 列挙
```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** は、別のデバイスとの **接続****確立** し、そのデバイスの **特性** をリストし、属性を読み書きすることを可能にします。\
GATTTool は `-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
```
## ベターキャップ
```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
```
{% hint style="success" %}
AWSハッキングを学び、実践する:<img src="/.gitbook/assets/arte.png" alt="" data-size="line">[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)<img src="/.gitbook/assets/arte.png" alt="" data-size="line">\
GCPハッキングを学び、実践する: <img src="/.gitbook/assets/grte.png" alt="" data-size="line">[**HackTricks Training GCP Red Team Expert (GRTE)**<img src="/.gitbook/assets/grte.png" alt="" data-size="line">](https://training.hacktricks.xyz/courses/grte)
<details>
<summary>HackTricksをサポートする</summary>
* [**サブスクリプションプラン**](https://github.com/sponsors/carlospolop)を確認してください!
* **💬 [**Discordグループ**](https://discord.gg/hRep4RUj7f)または[**テレグラムグループ**](https://t.me/peass)に参加するか、**Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**をフォローしてください。**
* **[**HackTricks**](https://github.com/carlospolop/hacktricks)と[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud)のgithubリポジトリにPRを提出してハッキングトリックを共有してください。**
</details>
{% endhint %}