Kevin Finistere and
myself gave a Bluetooth Presentation at the 23C3 congress
in Berlin on the 29.12 at 14:00 local time. We released a bit of 0day and a bit of protocol bugs and tidbits. See for yourself :) Thanks to everybody that made this possible also thanks to the CCC for organising this event, while I couldn't really participate as a spectator at least I can judge about the behind the scene work. I was impressed.
The organisation was good and poeple very friendly and helpfull.
Releases during 23C3 :
- Bluetooth hacking revisited - The slides
- BTCrack v1.0 -Pin and Link key cracker (Download)
- HIDattack - Attack Bluetooth VNC style (Download @ Collin Mulliner)
- The Remote Root Bluetooth Code by Kevin Finistere
There now are underlying protocol security issues not only pure implementation issues :
What is important to understand is that non-discoverable mode no longer represents a protection. Naturaly before attacking a devicey ou have to know it's there, previosuly you could try to bruteforce the address (bd_addr) in order to find it, if it was in non-discoverable state. This however is a unreliable and takes a very long time.
During this talk i released information on how to PASSIVELY discover 90% of the address and bruteforce the 8-bit remaining. Which is reliable and fast.
THIS means the the only protection Bluetooth has to protect you from connecting to my device is GONE.
Also the paradigm shift from toys to workstations is also considerable:
- We can eavedrop on your Laptops Microphone, we can compromise it and take control over it.
- The random number generators and the encryption affected by them is weak.
- New Re-pairing attack, making the pairing attack INTERESTING.
- Your drivers lack control, no update function and are flawed beyhond comprehension
- Live demo on how to take over a PC and get a remote shell over Bluetooth
Key points from the Lecture :
- Pin and Link key recovery is practicaly possible (code release and live demo)
- If you use Bluetooth beyboards or mice, your PC has a HID server, these may be attached to inject commands (!) as if you were typing on the keyboard
- The random numbers used for encryption and so forth may be very weak for your device
- The Pin is not that usefull the Link key is !
- Swap over to Bluetooth 2.1 (as soon as possible) and use "Secure Simply Pairing"
- Regard the quality of the encryption Bluetooth offers (E0) as a PRIVACY feature NOT a security feature. (Compare it to WEP)
- New re-pairing attack : Connect to the master pretending to be from the piconet, use a fake linkkey, master will think (oops lost the pairing) and will re-initiate the pairing given an attacker the choice to capture the exchange and crack it.
- Don't trust encryption taking place, sometimes the devices negotiate Security Mode 2, and you don't know your data is actually transferred in clear text (after being authenticated) and you can't actually check as you don't have a Bluetooth Sniffer.
- The Bluetooth PIN is actually a Bluetooth Passkey, it supports characters not only digits (this has security implications)
- Passively decrypt the traffic
- Connect to the slaves pretending to be the master and have full access (no pin required)
- Connect to the master pretending to be one of the slaves have full access (no pin required)
- Plant the link key on a BT capable machine and have a remote encrypted stealth channel to that machine
- Widcomm, Toshiba, Bluesoil, ALL vulnerable
- Don't rely on Windows update for that, your BT stack may be from a third party vendor (very likely)
- Listening on the Microphone and recording is also possible on PCs (not only cars)
General Recommendations :
- Delete your existing pairings as soon as you don't need them
- Pair in "secure places" SIG recommendation
- As soon as your device asks for a PIN again, don't enter it you might be snooped on (see previously mentioned pairing attack)
- Don't trust Bluetooth 1.0 - 1.2 (can't tell for 2.0-2.1 yet)
- Mitigate and Monitor.
Companies using Bluetooth for Industrial purposes :
- Regenerate a new key every 5 minutes, use 16 chars.
- PLEASE implement the GUI to use the possibility for bluetooth to use characters (UTF8) NOT ONLY DIGITS.
- Please be more transparent towards your device driver version numbers and propose an easy way to update.