Poison Tap
Last modified by Justin Morgan on 2019/11/19 03:55
About
PoisonTap is built for the $5 Raspberry Pi Zero without any additional components other than a micro-USB cable & microSD card, or can work on any Raspberry Pi (1/2/3) with an Ethernet-to-USB/Thunderbolt dongle, or can work on other devices that can emulate USB gadgets such as USB Armory and LAN Turtle.
When PoisonTap (Raspberry Pi Zero & Node.js) is plugged into a locked/password protected computer, it:
- emulates an Ethernet device over USB (or Thunderbolt)
- hijacks all Internet traffic from the machine (despite being a low priority/unknown network interface)
- siphons and stores HTTP cookies and sessions from the web browser for the Alexa top 1,000,000 websites
- exposes the internal router to the attacker, making it accessible remotely via outbound WebSocket and DNS rebinding (thanks Matt Austin for rebinding idea!)
- installs a persistent web-based backdoor in HTTP cache for hundreds of thousands of domains and common Javascript CDN URLs, all with access to the user’s cookies via cache poisoning
- allows attacker to remotely force the user to make HTTP requests and proxy back responses (GET & POSTs) with the user’s cookies on any backdoored domain
- does not require the machine to be unlocked
- backdoors and remote access persist even after device is removed and attacker sashays away
PoisonTap evades the following security mechanisms:
- Password Protected Lock Screens
- Routing Table priority and network interface Service Order
- Same-Origin Policy
- X-Frame-Options
- HttpOnly Cookies
- SameSite cookie attribute
- Two-Factor/Multi-Factor Authentication (2FA/MFA)
- DNS Pinning
- Cross-Origin Resource Sharing (CORS)
- HTTPS cookie protection when Secure cookie flag & HSTS not enabled
More info: https://samy.pl/poisontap/
Guide