Aug 14th 2014
Know How... 106
Bad USB, I Am Groot, and Defcon
USB flash drive could be reprogramed to act like a keyboard
A USB hack that will make you drop your packets, Patrick Delahanty shows how he built the "Baby Groot" out of common parts, see soundwaves, lock picking, and Defcon wrap up.
"Bad USB"
- German Researchers Karsten Knoll and Jacob Lell discovered an exploit in the way USB works
- ALL USB devices use some form of controller. They're small computers that interface the USB serial communications protocol with whatever device we want to connect via USB.
- That controller is actually a small computer... and the computer runs an operating system that is determined by firmware.
What's the Exploit?
- The way that USB was created, that firmware is updateable. It's updateable because the creators of the USB standard wanted manufacturers to be able to reprogram the firmware if a flaw was ever discovered in that firmware.
- HOWEVER, that also means that a malicious user (hacker) could reprogram the firmware to make the device act in a way that the manufacturers had not intended.
What does that all mean?
- This means that a USB flash drive could be reprogrammed to act like a keyboard
- So after you plug it in, it issues a series of keystrokes that (for example) open Internet Explorer, navigate to a page that contains malware, then close the browser... all in a matter of seconds
- Or a USB flash drive could be reprogrammed to act like a network adapter
- All the traffic you send and receive from your network would pass through this new network adapter, which would forward the packet stream to another computer before sending your trafic to the proper destinations.
Worse still... since your computer has USB devices INTEGRATED into the system (Keyboard, Mouse, Webcamera, Card Reader) a compromised USB device could be used to compromise the USB devices in your computer, which would then compromise any USB device that connects to your computer.
Ok... so why not just run an anti-virus? Or copy over new firmware? Or just make USB firmware non-programmable?
Let's take that one at a time:
Anti-Virus
- Your system cannot see past the controller of a USB device.
- The way USB devices work, the system can query the controller, and the controller will tell the system the status of the USB device.
- If the controller is compromised, then you cannot trust it to report the correct status
- In other words, the only way an Anti-Virus would work would be if the malware infecting the USB device was programmed to tell the system that it was compromising the controller... an unlikely scenario.
Copying New Firmware:
- As with the Anti-Virus question, the system cannot see past the controller.
- When you update firmware on a USB device, the new firmware is loaded into memory, then the controller is responsible for overwriting its old firmware and reporting back to the system with the new firmware status.
- If I was writing BadUSB malware, the first thing I would to would be to disable that process: Allow the controller to copy the new firmware to memory, then strip off the revision number of the new firmware and report THAT to the system.
- The system thinks it has new firmware, but the malware is still there.
Making USB devices unprogrammable:
- This is the most likely solution, but there are two MAJOR problems
- It doesn't fix the BILLIONS of USB devices that are already in the wild.
- If a manufacturer ever discovers a problem with their firmware (say, an exploit) there is no way to patch it.
Connect with us!
Don't forget to check out our large library of projects at https://twit.tv/shows/know-how.
Tweet at us at @padresj, @Cranky_Hippo, and @Anelf3