
Blueborne CVE-2017-0781 Android heap overflow vulnerability
Dies ist eine Implementierung der CVE-2017-0781 Android-Heap-Overflow-Schwachstelle, die im von Armis veröffentlichten Blueborne-Whitepaper beschrieben wird. Weiterführende Informationen: https://www.armis.com/blueborne/
Im aktuellen Zustand demonstriert dieser Code nur den Overflow und die Fähigkeit, den Bluetooth-Dienst zum Absturz zu bringen. Noch einmal, dies ist keine vollständig entwickelte Remote-Code-Ausführung, aber es könnte eine werden.
pwntools installieren.
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 installieren.
apt-get install bluetooth libbluetooth-dev
pip install pybluez==0.22
Ich habe die Tools hciconfig und btmgmt dafür verwendet, beide sind im bluez-Paket enthalten. Falls Ihr Bluetooth-Modul gesperrt ist, könnte rfkill helfen.
Führen Sie btmgmt aus.
Der Befehl info zeigt die Indizes Ihrer Geräte an.
Die Eingabe von select 0 macht den ersten Bluetooth-Controller aktiv. Eine Abkürzung dafür ist, das Tool mit btmgmt --index 0 zu starten.
Stellen Sie sicher, dass Sie mit dem Befehl find Geräte entdecken können. Der Bildschirm Ihres Android-Geräts muss eingeschaltet und die Bluetooth-Einstellungen-Ansicht geöffnet sein, damit es erkennbar ist. Beachten Sie, dass Erkennbarkeit keine Voraussetzung für die Ausnutzung dieser Schwachstelle ist, wie im von Armis veröffentlichten Whitepaper beschrieben.
Damit der Exploit ohne manuelles Pairing funktioniert, müssen Sie die IO-Fähigkeiten Ihres Hosts mit io-cap 0x03 im btmgmt-Tool setzen.
Damit ausgestattet, führen Sie den Code mit python CVE-2017-0781.py TARGET=XX:XX:XX:XX:XX:XX aus und der Bluetooth-Dienst Ihres Android-Geräts sollte abstürzen. Es könnte ein paar Versuche dauern. Derzeit sendet der Code 30 dieser ungültigen Pakete, um genügend Speicher zu korrumpieren, damit der Prozess abstürzt.
Viel Spaß beim Hacken ;)
Stellen Sie sicher, dass Sie Ihr Bluetooth-Gerät auf dem Host mit dem Befehl hciconfig sehen.
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
Wenn es nicht UP sondern DOWN ist, wie hier gezeigt, dann beheben Sie es mit hciconfig <intf> up
user-pc user # hciconfig hci0 up
Can't init device hci0: Operation not possible due to RF-kill (132)
Wenn Sie Meldungen über rf-kill erhalten, versuchen Sie den Befehl 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
Das Entsperren kann mit rfkill unblock <id> durchgeführt werden.
Wenn Sie sehen, dass Ihr Gerät nach dem Setzen der IO-Fähigkeiten auf dem Host immer noch nach einem Pairing-Code fragt, dann ist diese Methode auf Ihrem Gerät wahrscheinlich derzeit nicht möglich.