PoisonTap - выуживает cookie-файлы, раскрывает внутренний роутер и устанавливает веб-бэкдор на заблокированных компьютерах
Создано @SamyKamkar || https://samy.pl
Когда PoisonTap (Raspberry Pi Zero и Node.js) подключается к заблокированному/защищённому паролем компьютеру, он:
- эмулирует Ethernet-устройство через USB (или Thunderbolt)
- перехватывает весь интернет-трафик машины (несмотря на то, что является сетевым интерфейсом с низким приоритетом/неизвестным)
- выуживает и сохраняет HTTP-cookie и сессии веб-браузера для сайтов из Alexa top 1,000,000
- раскрывает внутренний роутер атакующему, делая его доступным удалённо через исходящий WebSocket и DNS rebinding (спасибо Matt Austin за идею rebinding!)
- устанавливает постоянный веб-бэкдор в HTTP-кэш для сотен тысяч доменов и распространённых Javascript CDN URL, предоставляя доступ к cookie пользователя через отравление кэша
- позволяет атакующему удалённо принуждать пользователя выполнять HTTP-запросы и проксировать ответы (GET и POST) с cookie пользователя на любом бэкдор-домене
- не требует разблокировки машины
- бэкдоры и удалённый доступ сохраняются даже после извлечения устройства и ухода атакующего

(невероятная HTML5 canvas-анимация от Ara)
PoisonTap обходит следующие механизмы безопасности:
Демонстрация
PoisonTap создан для Raspberry Pi Zero за $5 и не требует дополнительных компонентов, кроме micro-USB кабеля и microSD-карты. Также он может работать на любом Raspberry Pi (1/2/3) с переходником Ethernet-to-USB/Thunderbolt или на других устройствах, способных эмулировать USB-гаджеты, таких как USB Armory и LAN Turtle.
Живая демонстрация и дополнительные подробности доступны в видео:

Контактное лицо: @SamyKamkar // https://samy.pl
Релиз: 16 ноября 2016 года
Исходный код и загрузка: https://github.com/samyk/poisontap
Как работает PoisonTap
PoisonTap создаёт каскадный эффект, эксплуатируя существующее доверие к различным механизмам машины и сети, включая USB/Thunderbolt, DHCP, DNS и HTTP, и тем самым вызывает эффект снежного кома: эксфильтрацию информации, доступ к сети и установку полупостоянных бэкдоров.

Если кратко, PoisonTap выполняет следующее:
Перехват сети
- Атакующий подключает PoisonTap (например, «вооружённый» Raspberry Pi Zero) к заблокированному компьютеру (даже если компьютер защищён паролем)
- PoisonTap эмулирует Ethernet-устройство (например, Ethernet через USB/Thunderbolt) -- по умолчанию Windows, OS X и Linux распознают Ethernet-устройство, автоматически загружая его как сетевое устройство с низким приоритетом и выполняя через него DHCP-запрос, даже когда машина заблокирована или защищена паролем
- PoisonTap отвечает на DHCP-запрос и выдаёт машине IP-адрес, однако DHCP-ответ формируется так, чтобы сообщить машине, что всё IPv4-пространство (0.0.0.0 - 255.255.255.255) является частью локальной сети PoisonTap, а не небольшая подсеть (например, 192.168.0.0 - 192.168.0.255)
- Обычно было бы неважно, если к машине подключается вторичное сетевое устройство, поскольку ему будет присвоен более низкий приоритет, чем существующему (доверенному) сетевому устройству, и оно не заменит шлюз для интернет-трафика, но...
- Любая защита на основе таблицы маршрутизации / приоритета шлюза / порядка служб сетевых интерфейсов обходится из-за приоритета «LAN-трафика» над «интернет-трафиком»
- PoisonTap использует этот сетевой доступ, даже оставаясь устройством с низким приоритетом, потому что подсеть устройства с низким приоритетом получает более высокий приоритет, чем шлюз (маршрут по умолчанию) устройства с самым высоким приоритетом
- Это означает, что если трафик направляется на 1.2.3.4, то в обычных условиях он попал бы на маршрут по умолчанию/шлюз основного (не-PoisonTap) сетевого устройства, но PoisonTap на самом деле получает этот трафик, потому что «локальная» сеть/подсеть PoisonTap якобы содержит 1.2.3.4 и любой другой существующий IP-адрес ;)
- Из-за этого весь интернет-трафик проходит через PoisonTap, даже если машина подключена к другому сетевому устройству с более высоким приоритетом и настоящим шлюзом (реальному Wi-Fi, Ethernet и т.д.)
