KeySweeper – Arduino-based passive wireless keyboard sniffer
samy.pl
samy.pl
Using a legitimate USB charger. The GSM radio for 2G internet broadcast. The built in battery for short term unplugged continued sniffing. Trigger word SMS messages. Live streaming web portal.
That is very, very cool. This is the kind of stealth monitoring device people just would never think to check and could easily be replaced without the user being any the wiser.
This is a beautiful example of a real hack superbly executed. Bravo.
Edit: Just realised this is the guy (or team?) behind EverCookie.
> Felonies: Felonies are the most serious types of crimes... ...Felonies are usually crimes that are viewed severely by society, and include crimes such as murder, rape, burglary, kidnapping, or arson. However, felonies can also be punished in a range of ways so that the punishment matches the severity of the crime. - http://criminal.findlaw.com/criminal-law-basics/what-disting...
Then again, it has happened to me that I didn't have the security clearance necessary to check out the code I was working on from a repository (this caused me to make a second repository on the laptop I carried back and forth, which more than defeats the point - dumbly enough, they were fine with this).
I love that 'desktop as website' theme, gonna steal it.
edit: It seems like this guy really likes to show how useless NAT is. His "NAT pinning" demonstration is quite scary.
Sounds like some public-key crypto could make it safe: embed some unique keys at manufacturing time and use some small crypto library (like tweetnacl) to communicate and have mutual authentication. For the paranoid there could be a way to update the keys so that not even the vendor can sniff the keystrokes. Isn't there a RFC for something similar?
The datasheet for the nRF24LE1 talks about it's AES encryption/decryption accelerator (section 15) and thermal noise random number generator (section 16), but the power consumption specs (section 26.1) talk about the rng using 0.5mA and don't even mention the AES hardware (even though they list other modules all the way down to 0.5uA). The RX/TX modules use over 10mA, so an order of magnitude more than the hardware RNG, and possibly 4 orders of magnitude more than the AES hardware.
I doubt the encryption would even register in battery life - completely obscured by the power consumed by the TX/RX modules.
http://www.nordicsemi.com/eng/content/download/2443/29442/fi...
Hold my beer while I perform a table flip and throw away all my Microsoft Wireless Keyboards
I'm unsure if Logitech keyboard are affected in a similar way, I know that this attack only affects Microsoft keyboards but they may have similar issues.
[1] http://www.logitech.com/images/pdf/roem/Logitech_Adv_24_Ghz_...
https://penturalabs.wordpress.com/2013/09/04/bluetooth-sniff...
https://penturalabs.wordpress.com/2014/02/20/ubertooth-updat...
As far as I can tell, bluetoooth keyboards should be a bit better off. Not sure how the "secure" modes work (presumably some kind of DH-exchange?) - but apparently they're not immune to brute forcing.
http://www.remote-exploit.org/articles/keykeriki_v2_0__8211_...
it doesnt apply to ANY bluetooth keyboard, only to some old Microsoft branded wireless keyboards.
It's a pretty cool proof-of-concept, but I wouldn't connect anything to the USB port. These issues could be solved for deployment by potting or by using a custom smaller PCB integrating the various boards.
0. https://www.eff.org/files/2014/01/06/20131230-appelbaum-nsa_...
(I know all this because I have done a lot of work with the nRF24LE1. It is cheap: $4 for a fully assembled module on eBay [2]. It "supports" Bluetooth by bit-banging it [3]. And code for the builtin 8051 core can be compiled by the open source compiler sdcc. These are reasons why I selected this chip for my DIY home automation system.)
In fact the nRF24 radios are so popular that the vast majority of non-Bluetooth wireless keyboards use them. And I guarantee you that even though they use different protocols, they are almost certainly just as insecure as these Microsoft keyboards. The only reason vendors do not implement secure protocols is because customers do not know or care about security. The very few vendors who do such as [4] sell keyboards for hundreds of dollars... there is again zero reasons why it would cost that much given that it could be done with a standard nRF24LE1 :-(
[1] http://www.keil.com/dd/docs/datashts/nordic/nrf24le1_ds_v1_1...
[2] The $1 chip Sammy is talking about is another variant: the nRF24L01 which is just the bare radio without the 8051 core
[3] http://dmitry.gr/index.php?r=05.Projects&proj=11.%20Bluetoot...
[4] http://matias.ca/securepro/pc/ ($170!)
Edit #1: a colleague of mine opened up the Matias Secure Pro keyboard and confirmed it uses an nRF24LE1.
Edit #2: @cortesoft: The way I would support this "one dongle many devices" feature is by doing the key generation during pairing (sometimes done by pressing a small switch under the keyboard) instead of during manufacturing. The only window of attack would be if an active attacker was present during pairing and pretended to be the dongle. It would still be significantly more secure than current keyboard protocols.
The invisible hand, fumbling as usual.
The strong fist of the government never fumbles.
If you have a unique key embedded in each keyboard/dongle pair, you would lose the ability to do this. In addition, if you lost the dongle, you would be SOL.
I think more people will care about the convenience instead of the security.
Ideally, you could have both; what if the keyboard had a USB slot that you plug in a dongle to pair it? You could have it generate a random key whenever a dongle is plugged in, to prevent someone plugging in their dongle to your keyboard (it would only pair with one dongle at a time).
What about initializing the key during pairing? See parent's edit
I posted my reply before the parent's edit. I don't think this is an intractable problem; my suggestion of a physical connection for pairing or even a remote pairing with a button press would work fine. My ONLY point was that hard coding a symmetric key into the keyboard/dongle pair and then using that key for all communication wouldn't be practical.
I'm not sure I understand why? If public/private key cryptography were used then each dongle & keyboard would contain a private key. The dongle then contains a store for up to X public keys.
The pairing procedure starts due to a physical button press on the two devices, they find each other and exchange public keys. All future communication is then encrypted & signed using the private keys these devices hold. The attack described in venaoy's edit still applies though, an active attacker present during pairing may pretend to be an access point & keyboard, overpowering the original access point and acting as a sort of relay. The link would however break if this relay were to leave the vicinity.
After I posted my reply, the comment was edited to mention this sort of public key exchange you describe happening with a button push. My comment does not apply to this sort of functionality. It would work great, with only the concern you mentioned about a relay attacker. I was only saying having a symmetric key generated at manufacture wouldn't allow for dongle changing and/or dongle consolidation.
As I understand it, the encryptiion key is generated at the time of pairing in both the the keyboard and the receiver independently, and thus never transmitted wirelessly.
This is accomplished by having a secret algorithm that is encoded in both devices and produces the key based on some random input data that is shared between the devices at the time of pairing.
Further information here:
http://www.logitech.com/images/pdf/roem/Logitech_Adv_24_Ghz_...
The cryptography method uses a key of 4 bytes and is reused constantly, that's pretty much reason alone to dump keyboards using that encryption scheme.
[1] http://therightscoop.com/breaking-centcom-twitter-youtube-ac...