hacktricks/radio-hacking/pentesting-ble-bluetooth-low-energy.md
2023-07-07 23:42:27 +00:00

9.3 KiB
Raw Blame History

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥

はじめに

Bluetooth 4.0の仕様から利用可能なBLEは、2400〜2483.5 MHzの範囲で40チャンネルのみを使用します。一方、従来のBluetoothは同じ範囲で79チャンネルを使用します。

BLEデバイスは、広告パケットビーコンを送信することで、他の近くのデバイスにBLEデバイスの存在を伝えます。これらのビーコンは、時にはデータを送信することもあります。

リスニングデバイス(またはセントラルデバイス)は、広告パケットに対してスキャンリクエストを送信することで、広告デバイスに特定のスキャンを行うことができます。そのスキャンへの応答は、初期の広告リクエストに収まらなかった追加情報を含む、同じ構造の広告パケットを使用します。追加情報には、デバイスの完全なデバイス名などが含まれます。

プリアンブルバイトは周波数を同期させ、4バイトのアクセスアドレスは複数のデバイスが同じチャンネルで接続を確立しようとするシナリオで使用される接続識別子です。次に、プロトコルデータユニット(PDU)には広告データが含まれます。いくつかの種類のPDUがありますが、最も一般的に使用されるのはADV_NONCONN_INDとADV_INDです。デバイスは、接続を受け入れない場合はADV_NONCONN_IND PDUタイプを使用し、データを広告パケットのみで送信します。デバイスは、接続を許可し、接続確立されると広告パケットの送信を停止する場合はADV_INDを使用します。

GATT

Generic Attribute ProfileGATTは、デバイスがデータをどのようにフォーマットし、転送するかを定義します。BLEデバイスの攻撃対象を分析する際には、GATTまたはGATTsに注目することが多いです。なぜなら、デバイスの機能がトリガーされ、データが格納、グループ化、変更される方法がGATTによって決まるからです。GATTは、デバイスの特性、ディスクリプタ、およびサービスを16ビットまたは32ビットの値として表すテーブルとしてリストアップされます。特性は、セントラルデバイスとペリフェラル間で送信されるデータ値です。これらの特性には、それに関する追加情報を提供するディスクリプタがあります。特性は、特定のアクションを実行するために関連している場合、サービスグループ化されることがよくあります。

列挙化

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オプションを使用して対話型シェルを起動することができます。

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

Bettercapは、Bluetooth Low EnergyBLEデバイスのペネトレーションテストに使用される強力なツールです。このツールは、BLEデバイスのスキャン、スニッフィング、スプーフィング、およびMITMMan-in-the-Middle攻撃など、さまざまな攻撃手法をサポートしています。

Bettercapを使用すると、BLEデバイスのセキュリティに関する脆弱性を特定し、悪用することができます。例えば、デバイスのMACアドレスをスプーフィングして、デバイスとの通信を傍受したり、改ざんしたりすることができます。

Bettercapは、コマンドラインインターフェースCLIを提供しており、シンプルで使いやすい操作性を備えています。さらに、プラグインシステムを使用して、機能を拡張することもできます。

Bettercapは、BLEデバイスのセキュリティ評価やペネトレーションテストにおいて、非常に有用なツールです。その強力な機能と柔軟性により、セキュリティ専門家やハッカーは、BLEデバイスの脆弱性を特定し、適切な対策を講じることができます。

# 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
☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥