2. BlueToothの脆弱性と攻撃ツール

BlueToothの脆弱性と攻撃機

2.1. BlueToothの脆弱性

2.1.1. KNOB攻撃

KNOB攻撃は2019年8月に発表された**暗号化通信の鍵を1Byteにすることで、暗号化通信の鍵を容易に特定することができる****Bluetooth Classicの脆弱性を悪用した攻撃。

この脆弱性を悪用すると、暗号鍵を強制的に1バイトに制限することができてしまうためブルートフォース攻撃によって暗号鍵を容易に特定することが可能になる。 そのため中間者攻撃のリスクがある。

この脆弱性は後にマイクロソフト社やアップル社などからセキュリティパッチが提供された

POC: https://github.com/francozappa/knob

2.1.2. Blueborne

BlueBorne、2017年9月に公表されたBluetoothの脆弱性の総称。

攻撃者がこの脆弱性を悪用すると、ペアリングの仕組みを使わずともデバイスと接続できるようになり、マルウェア感染や乗っ取り、個人情報の窃取などの被害を受ける可能性がある。 脆弱性の発覚後、対応するアップデートが提供された

2.1.3. BlueFrag

BlueFragは2020年2月に報告されたAndroidにおける脆弱性でAndroid 8.0系、8.1系、9.0系での存在が確認された

この脆弱性があるデバイスでBluetoothが有効になっていると、近くの攻撃者がデバイスのMACアドレスを推測し、不正にアクセスすることでデバイスの管理権限を乗っ取ることが可能となる。

なおセキュリティパッチはすでにリリースされた

2.1.4. Apple Bleee

Apple Bleeeは2019年7月に報告されたApple製品におけるBluetoothの脆弱性。 iPhoneなどに実装されているBLEが持つ、常時データの送受信が可能である仕様を悪用したものとなっている。

この脆弱性では攻撃者はターゲットの電話番号やiOSのバージョンなどを盗み見ることができる。 iPhone 5S以降、またはiOS 11以上のiPhoneに関して注意が必要となる。

2.2. BlueToothの操作シェル/セキュリティツール

2.2.1 通常のLinuxコマンド

systemctl start bluetooth

systemctl start bluetoothはBlueTooth機能を有効化するコマンド。 GUI上での起動が安定しないことから使用される。

l2ping

l2ping <MACアドレス>はBluetoothデバイスが通信可能であるかどうかを確認したり、通信の遅延を測定したりすることができるコマンド

2.2.2 BlueZ

BlueZはOSSのBluetoothプロトコルスタック設定/制御ソフトウェア。 シェルからBlueZを操作するコマンドであるhciconfighcitoolhcidumpなどが含まれる。

BlueZ http://www.bluez.org

コマンド説明
hciconfig端末のBluetoothインターフェイス確認
hciconfig <インターフェイス> <up/down>Bluetoothインターフェイスの起動/停止
hcitoolBluetooth機器の検出/スキャン
hcitool lescanビーコンでアドバタイズしているBluetoothをスキャンする
hcitool lecc <MACアドレス>端末とBluetooth機器の接続
hcitool scan既に接続中のBluetoothを確認
hcidumpBluetoothパケットキャプチャ

2.2.3 BtleJuice

BtleJuiceはWebプロキシ利用のBLEの中間者攻撃/リプレイ攻撃用のツール

Github: https://github.com/DigitalSecurity/btlejuice

2.2.4 BtleJack

BtleJackはmicro:bitの利用前提のCLIのBLEハッキングツール。 機能としてはBLEパケットキャプチャ/スニッフィングに対応している。 またジャミングによるハイジャックも可能

micro:bitとは https://sanuki-tech.net/micro-bit/overview/about/

Github: https://github.com/virtualabs/btlejack

2.2.5. Crackle

CrackleはBLE暗号化の復号化を行える、BLEレガシーペアリングに基づいて接続をキャプチャした場合に適したツール。

Github: https://github.com/mikeryan/crackle.git

2.2.3. BetterCap

BLEのデバイスのペネトレーションテストに使用できるツール。

# BLEビーコンのリスニングを開始
sudo bettercap --eval "ble.recon on"
# Wait some time
ble.show # BLEデバイス一覧の表示
ble.enum <MACアドレス> # This will show the service, characteristics and properties supported

# Write data in a characteristic
ble.write <MACアドレス> <UUID> <HEX DATA>
ble.write MACアドレス> ff06 68656c6c6f # Write "hello" in ff0

2.3. UberTooth One

2.3.1. UberTooth Oneとは

UberTooth OneはBluetoothデバイスのセキュリティとプロトコルの解析を行うためのOSSワイヤレスツール。以下のことが可能。

  • Bluetoothモニタリング
  • Bluetoothパケット解析
  • Bleutoothセキュリティのテスト

2.3.2. UberToothを使用する

詳しくはコチラから。

BLEデバイスのスキャン

BLEデバイスは以下コマンドでスキャン可能。

sudo hcitool lescan

BLEデバイスの表示例

D5:AA:D0:41:A3:60 Mi Smart Band 4
78:A5:04:62:71:3D TepHeatB

BLEのスニッフィング

BLEデバイスのスキャンで得たBlueTooth Device Addressを指定することでデバイス間通信をキャプチャできる。

ubertooth-btle -f <BD_ADDR>
ubertooth-btle -f <BD_ADDR> -c <FilePath> #Fileに書き込む場合

WiresharkでBLEをキャプチャする

  1. ターミナルでmkfifo /tmp/pipe
  2. WireSharkを開く
  3. 「キャプチャ=>オプション」を選択
  4. 「Manage Interfaces」を選択
  5. 「新規」を選択し「パイプ」に「/tmp/pipe」と入力
  6. 「保存」「閉じる」
  7. 「/tmp/pipe」を選択して「開始」を選択
  8. ターミナルでubertooth-btle -f -c /tmp/pipeを実行
  9. うまくいかない場合は/tmp/pipeの実行/読み取り権限などを付与

UberToothスペクトルアナライザを使用する

2.4GHz帯を解析するツールであるスペクトラムアナライザを使用できる。

ubertooth-specan-ui

スペクトル

  • 緑色の振幅: 異なるチャネルの複数の 802.11b ネットワークの電波
  • 白い振幅: スキャン中に表示されるビーコン
最終更新 2025.01.19: Added ss command (683d062)