Poisontap – устройство способное взломать любой компьютер

Энтузиаст, хакер и просто хороший специалист в области компьютерной безопасности — Сэми Камар поделился новым способом взлома компьютеров под управлением macOS и Windows. Для этого он разработал устройство под названием Poisontap, которое состоит из набирающего все большую популярность миин-ПК – Raspberry Pi. Если подключить гаджет к компьютеру, то он определяется, как Ethernet-устройство, позволяющее перенаправлять на себя весь сетевой трафик.

Сначала Poisontap скачивает с компьютера все cookies, которые, как известно, хранятся в кэше браузера, а затем перехватывает управление Wi-Fi-роутером, что дает возможность посредством интернет отправлять любой код на устройство-жертву. Причем, после отключение хакерского гаджета от компьютера, на нем остается бэкдор. Таким образом, решение позволяет обмануть антивирусы и экраны блокировки.

Если вы хотите узнать о нем больше, Сэми полностью раскрывает его детали на своем сайте: samy.pl/poisontap/

Там же приведен ряд советов, как обеспечить защиту от такого рода атаки – от запечатывания USB-портов компьютера цементным раствором или клеем, до следования не очень обнадеживающим и непрактичным советам от Microsoft «Не оставляйте ваши лэптопы и компьютеры без присмотра».

Прежде чем мы перейдем к функционалу, я расскажу вам как установить Raspbian и Poisontap.

Часть 1. Установка Raspbian

Нам понадобиться sd-карта весом в 16-32 гигабайта, картридер(как вариант можно обойтись переходником) и образ системы.

Скачиваем отсюда https://www.raspberrypi.org/downloads/raspbian/ образ системы который вам больше нравиться (я выбрал фулл версию с предустановленным софтом – Raspbian Full Buster). Далее прожигаем образ на флешку через Win32DiskImager (ссылка: https://sourceforge.net/projects/win32diskimager/files/latest/download )

Так выглядит Win32DiskImager:

В Device мы выбираем нашу флешку, а в Image File – образ ОС, после нажимаем Write, когда процесс завершиться можно вставить флешку в нашу малину и запускаться, далее будет простая настройка, где нужно будет выбрать язык системы и тд., не вижу смысла этого показывать.

Часть 2. Настройка служб и Установка Poisontap

Когда система установлена можно настроить базовые службы.

Для начала открываем консоль и пишем sudo raspi-config

Далее в появившемся окне выбираем все то, что показано в гифке:

https://imgflip.com/gif/3s5nyw

Когда мы все сделали перезагружаем малинку и после перезагрузки в консоли пишем sudo apt-get update.

В консоли пишем:

sudo apt-get install git npm

sudo npm install websocket

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash –

sudo apt-get install nodejs

git clone https://github.com/samyk/poisontap

cd poisontap

sudo node backend_server.js &

Дальше нам нужно создать bash скрипт – sudo nano install.sh.

Когда нажали Enter у вас откроется текстовый редактор, куда нужно поместить следущее:

# Instructions adjusted from https://gist.github.com/gbaman/50b6cca61dd1c3f88f41

sudo bash

echo -e “\nauto usb0\nallow-hotplug usb0\niface usb0 inet static\n\taddress 1.0.0.1\n\tnetmask 0.0.0.0” >> /etc/network/interfaces

echo “dtoverlay=dwc2” >> /boot/config.txt

echo -e “dwc2\ng_ether” >> /etc/modules

sudo sed –in-place “/exit 0/d” /etc/rc.local

echo “/bin/sh /home/pi/poisontap/pi_startup.sh” >> /etc/rc.local

mkdir /home/pi/poisontap

chown -R pi /home/pi/poisontap

apt-get update

apt-get -y install isc-dhcp-server dsniff screen nodejs

Выйти должно что-то такое:

Нажимаем CTRL + X, Y и Enter

Пишем в консоли sudo chmod +x install.sh и теперь можно запустить наш скрипт.

Как вы видите пришлось написать exit что бы скрипт пошел дальше, так что держите это в уме.

Если скрипт остановиться, используем exit снова.

Теперь нам нужно редактировать файл  rc.local, по перед этим мы его забекапим на рабочий стол:

sudo cp /etc/rc.local /home/pi/Desktop/

sudo nano /etc/rc.local

Убираем все строки из файла, что бы он выглядел вот так:

Проделываем почти тоже самое с dhcpd.conf:

sudo cp /etc/dhcp/dhcpd.conf /home/pi/Desktop/

sudo cp dhcpd.conf /etc/dhcp/dhcpd.conf

На этом установка завершена, можно подключать наш rpi0 к компьютеру, но перед этим проверьте файл /etc/network/interfaces, в нем должны быть примерно такие строчки:

auto usb0

   allow-hotplug usb0

   iface usb0 inet static

   address 1.0.0.1

   netmask 0.0.0.0

Так же стоит добавить в файл /etc/default/isc-dhcp-server строчку:

INTERFACES=”usb0″

Часть 3. Функционал Poisontap

Когда PoisonTap подключен к компьютеру, он:

  • Эмулирует Ethernet устройство через USB (или Thunderbolt);
  • Захватывает весь интернет-трафик с компьютера (несмотря на то, что он является низкоприоритетным / неизвестным сетевым интерфейсом);
  • Перекачивает и хранит HTTP cookies и sessions из браузера для top 1,000,000 сайтов Alexa;
  • Предоставляет внутренний маршрутизатор атакующему, делая его доступным удаленно через исходящие соединения WebSocket и DNS;
  • Устанавливает постоянный бэкдор основанный на веб-браузере в кеш HTTP для сотен тысяч доменов и обычных Javascript CDN URL, каждый из которых имеет доступ к cookie через отравление кеша;
  • Позволяет атакующей стороне удаленно заставлять пользователя создавать HTTP-запросы и ответы прокси-сервера (GET & POST) с помощью кукифайлов пользователя в любом домене, который имеет бэкдор;
  • Бэкдоры и удаленный доступ сохраняются даже после извлечения устройства и окончания атаки.

Что еще умеет Poisontap?

PoisonTap эмулирует Ethernet устройство (например, Ethernet через USB/Thunderbolt) — по умолчанию, Windows, OS X и Linux распознают ethernet устройство, автоматически загружают его как низкоприоритетное устройство сети и подают запрос через него, даже если машина заблокирована или защищена паролем.

PoisonTap отвечает на DHCP запрос и предоставляет машине IP адрес, однако, DHCP ответ создан для того, чтобы сообщить машине, что внешнее IPv4 пространство (0.0.0.0 – 255.255.255.255) является частью локальной сети PoisonTap, а не маленькой подсети (например, 192.168.0.0 – 192.168.0.255)

  • Обычно не имеет значения, подключено ли вторичное сетевое устройство к машине, поскольку ему будет предоставлен более низкий приоритет, чем существующему (доверенному) сетевому устройству, и он не заменит шлюз для интернет трафика, но …
  • Любая таблица маршрутизации / приоритетность шлюза / порядок безопасности службы сетевого интерфейса легко обходится ввиду приоритетности “LAN traffic” над “Internet traffic”.
  • PoisonTap использует этот сетевой доступ даже в качестве низкоприоритетного сетевого устройства, поскольку подсеть
  • низкоприоритетного сетевого устройства имеет более высокий приоритет, чем шлюз (маршрут по умолчанию) устройства с наивысшимприоритетом.
  • Это означает, то, что если трафик предназначен для 1.2.3.4, тогда как обычно данный трафик попадает в маршрут/шлюз по умолчанию для первичного (не PoisonTap) сетевого устройства, PoisonTap на самом деле получает трафик, потому что локальная сеть / подсеть PoisonTap, как предполагается, содержит 1.2.3.4, и каждый другой существующий IP-адрес.
  • Ввиду перечисленных выше причин, весь интернет трафик проходит через PoisonTap, даже если машина подключена к другому устройству сети с более высоким приоритетом и надлежащим шлюзом (подлинный wifi, ethernet,и т. д.)

Как работает перекачивание cookie?

  • До тех пор, пока в веб-браузере работает фон, одна из открытых страниц, вероятно, будет выполнять HTTP-запрос в фоновом режиме (например, загружать новую рекламу, отправлять данные на аналитическую платформу или просто продолжать отслеживать вашу веб-активность) через AJAX или динамические теги script/iframe
  • Вы можете увидеть это самостоятельно, просто зайдите в свой devtools / inspector (обычно Cmd + Shift + I или Ctrl + Shift + I), перейдите на самый посещаемый веб-сайт, перейдите на вкладку Network («Сеть») и наблюдайте, как удаленные ресурсы продолжают быть доступными, даже если вы не предпринимаете никаких действий на странице.
  • По этому HTTP запросу, так как весь трафик выходит на PoisonTap устройство, PoisonTap DNS быстро возвращает свой адрес, заставляя, таким образом, HTTP запрос попадать на PoisonTap сервер (Node.js).
  • Если DNS сервер указывает на внутренний IP (LAN), к которому PoisonTap не может получить права доступа, атака продолжает функционировать, поскольку внутренний DNS-сервер будет генерировать публичные IP-адреса для различных атакуемых доменов, и это те общедоступные IP-адреса, которые PoisonTap уже перехватил.
  • Как только внутренний DNS сервер отвечает, браузер попадает на общедоступный IP адрес, в итоге, попадая на веб-сервер PoisonTap (Node.js) в любом из сценариев.
  • Когда Node веб-сервер получает запрос, PoisonTap отвечает откликом, который может быть интерпретирован как HTML или Javascript, оба из которых выполняются правильно (многие веб-сайты загружают HTML или JS в фоновых запросах)
  • Затем страница HTML/JS-agnostic производит множество скрытых iframes, один iframe для каждого домена Alexa-top-1-million
  • Любая “X-Frame-Options” безопасность на домене теперь с легкостью обходится, т.к. PoisonTap сейчас является HTTP сервером и сам выбирает, какие заголовки отправлять клиенту.
  • Так как каждый iframe HTTP запрос на сайт выполняется (например, ), HTTP cookies отправляются из браузера на «общедоступный IP » уже украденный PoisonTap, который быстро протоколирует информацию о cookies и аутентификации, записывая десятки тысяч пользовательских cookies на PoisonTap
  • Любая “HttpOnly” cookie безопасность легко обходится и эти cookies захватываются, ввиду того, что Javascript не выполняется на самом домене, а используется в первую очередь только для загрузки iframe.
  • Любая безопасность Cross-Origin Resource Sharing или Same-Origin Policy также обходится без проблем, потому что способ, с помощью которого был получен доступ к домену, браузеру кажется вполне законным/легитимным
  • Все это происходит потому, что мы перехватываем cookies, а не учетные данные, и поэтому любые 2FA/MFA, реализованные на сайте, очень просто обходятся, когда атакующий использует cookie для входа. Так происходит ввиду того, что мы, на самом деле, не выполняем функцию входа, а продолжаем уже существующую сессию, которая не запускает двухфакторную проверку подлинности.
  • Если сервер использует HTTPS, но в файлах cookie явно не выставлена отметка Secure cookie, защита HTTPS без проблем обходится и cookie отправляются в PoisonTap.

Удаленно доступные веб-бэкдоры

  • В то время как PoisonTap создавал тысячи iframes, заставляя браузер загружать каждый из них, эти iframes являются не просто пустыми страницами, а скорее HTML + Javascript бэкдорами.
  • Поскольку PoisonTap force-кэширует эти бэкдоры в каждом домене, бэкдор привязан к этому домену, позволяя атакующему использовать cookie домена и запускать запросы того же источника в будущем, даже если пользователь в настоящий момент не вошел в систему.
  • Например, когда http://nfl.com/PoisonTap iframe загружен, PoisonTap принимает отклоненный интернет трафик и отвечает на HTTP запросы через Node веб-сервер.
  • Добавлены дополнительные заголовки HTTP для кэширования страницы как неопределенной.
  • Фактический ответ страницы представляет собой комбинацию HTML и Javascript, которая создает постоянный WebSocket на веб-сервере атакующего (через Интернет, а не на PoisonTap устройстве)
  • WebSocket остаётся открытой, позволяя атакующему, в любой момент времени в будущем, подключиться к машине с бэкдором и выполнить запрос к любому источнику, где реализован данный бэкдор (Alexa top 1,000,000 sites — смотри ниже)
  • Если бэкдор открыт на сайте (например, nfl.com), но пользователь хочет провести атаку против другого домена (например, pinterest.com), атакующий может загрузить iframe с nfl.com в бэкдор pinterest.com (http://pinterest.com/PoisonTap)
  • И снова обращаю ваше внимание, что любая безопасность “X-Frame-Options”, Cross-Origin Resource Sharing, и Same-Origin Policy на домене полностью обходится, т.к. запрос попадет в кэш, из которого вышел PoisonTap, а не в подлинный домен.

Бэкдор для роутера и удаленный доступ

  • Есть одна сеть, которую PoisonTap не может взломать, и этой сетью является реальная LAN подсеть подлинного сетевого интерфейса (например, если пользовательской wifi подсетью является 192.168.0.x, то эта сеть останется незатронутой), но…
  • PoisonTap force – кэширует бэкдор на специальном хосте, в частности IP-адрес целевого маршрутизатора, добавленный к «.ip.samy.pl», например. 192.168.0.1.ip.samy.pl, по существу осуществляя постоянную атаку перезапуска DNS.
  • При использовании PoisonTap в качестве DNS сервера (жертва использует общедоступный DNS сервер), PoisonTap временно отвечает специальными PoisonTap IP (1.0.0.1), подразумевая то, что любой запрос в данный момент попадет на PoisonTap веб-сервер.
  • Если вместо этого DNS-сервер установлен во внутреннюю сеть (например, 192.168.0.x), дополнительный специально созданный запрос поступает на 1.0.0.1.pin.ip.samy.pl, который сообщает моему DNS серверу (в общедоступном интернете), что необходимо временно отвечать на любой [ip.address].ip.samy.pl адрес с «прикрепленным» адресом (1.0.0.1) на протяжении нескольких секунд
  • Затем PoisonTap быстро устанавливает бэкдор на http://192.168.0.1.ip.samy.pl/PoisonTap, который на данный момент указывает на устройство PoisonTap в 1.0.0.1, что позволяет обращаться к бэкдору и кэшировать с устройства PoisonTap
  • Защита DNS пиннинга и DNS перепривязки легко обходится ввиду истощения таблицы DNS пиннинга
  • из-за сотен тысяч ранее запрошенных запросов, и повторное связывание не должно произойти в будущем, что делает эту атаку устойчивой в течение длительных периодов времени (спасибо Мэтту Остину за то, что он поделился этой атакой со мной!)
  • Теперь, когда бэкдор принудительно кэшируется по адресу http://192.168.0.1.ip.samy.pl/PoisonTap, любые будущие запросы к 192.168.0.1.ip.samy.pl будут обращаться к незакрепленному IP-адресу, запуская 192.168. 0,1 и указывая непосредственно на маршрутизатор.
  • Это означает, что если вы загружаете хост 192.168.0.1.ip.samy.pl/PoisonTap в iframe удаленно через бэкдор, вы теперь можете выполнить AJAX GET/POSTs на любой другой странице на внутреннем роутере, полностью удаленно, таким образом открывая удаленный доступ к внутреннему роутеру.
  • Это может привести к другим атакам на роутер, к которым у атакующего могло бы и вообще не быть доступа, к таким как использование учетных данных администратора по умолчанию для перезаписи DNS серверов, или раскрытие уязвимостей аутентификации.

Вас ебали, ебут и будут ебать. Государство, хакеры, чиновники.

Остановить эту свингер-пати невозможно. Но я научу предохраняться. Я покажу и расскажу вам то о чём не пишет журнал “Хакер” и не рассказывают или просто не знают другие каналы. Здесь ты найдешь подборку лучших статей и видеоматериалов на тему кибербезопасности. Все, от аудита Wi-Fi до вскрытия автомобилей (если вы потеряли ключи). А также горячие новости с авторскими коментариями.

Обо всем этом вам расскажу только я на канале @cybersecs