
Blueborne CVE-2017-0781: vulnerabilità di heap overflow su Android
Questa è un'implementazione della vulnerabilità di heap overflow su Android CVE-2017-0781 descritta nel whitepaper Blueborne pubblicato da Armis. Approfondimenti: https://www.armis.com/blueborne/
Nello stato attuale, questo codice dimostra solo l'overflow e la capacità di mandare in crash il servizio bluetooth. Ribadisco, non è una remote code execution completamente sviluppata, ma potrebbe diventarlo.
Installa 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
Installa pybluez.
apt-get install bluetooth libbluetooth-dev
pip install pybluez==0.22
Per questo ho usato gli strumenti hciconfig e btmgmt, entrambi inclusi nel pacchetto bluez. Se il tuo modulo bluetooth risulta bloccato, rfkill potrebbe aiutare.
Esegui btmgmt.
Il comando info mostrerà gli indici dei tuoi dispositivi.
Inserendo select 0 si attiva il primo controller bluetooth. Una scorciatoia è avviare lo strumento con btmgmt --index 0.
Assicurati di poter scoprire dispositivi con il comando find. Lo schermo del tuo Android deve essere acceso e la schermata delle impostazioni bluetooth deve essere aperta affinché il dispositivo sia rilevabile. Nota che la rilevabilità non è un prerequisito per sfruttare questa vulnerabilità, come dettagliato nel whitepaper pubblicato da Armis.
Affinché l'exploit funzioni senza associazione manuale, devi impostare le capacità IO del tuo host con io-cap 0x03 nello strumento btmgmt.
Con questa impostazione, esegui il codice con python CVE-2017-0781.py TARGET=XX:XX:XX:XX:XX:XX e il servizio bluetooth del tuo dispositivo Android dovrebbe andare in crash. Potrebbero essere necessari alcuni tentativi. Attualmente il codice invia 30 di questi pacchetti non validi per corrompere abbastanza memoria da far crashare il processo.
Happy hacking ;)
Assicurati di vedere il tuo dispositivo bluetooth sull'host con il comando hciconfig.
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
Se non è UP ma piuttosto DOWN come mostrato qui, risolvilo con hciconfig <intf> up
user-pc user # hciconfig hci0 up
Can't init device hci0: Operation not possible due to RF-kill (132)
Se ricevi messaggi su rf-kill, prova il comando 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
Lo sblocco può essere eseguito con rfkill unblock <id>.
Se vedi che il tuo dispositivo chiede ancora il codice di associazione dopo aver impostato le capacità IO sull'host, allora probabilmente questo metodo non è attualmente possibile sul tuo dispositivo.