PoisonTap — вредоносная USB атака Raspberry Pi Zero

Перевод: Анна Давыдова
Источник: n0where.net

PoisonTap - вредоносная USB атака Raspberry Pi Zero

Вредоносная USB атака Raspberry Pi Zero: PoisonTap 

Скачать poisontap

PoisonTap использует заблокированные защищенные паролем компьютеры через USB, сбрасывает постоянный бэкдор основанный на WebSocket, раскрывает внутренний роутер и скачивает cookies, используя Raspberry Pi Zero & Node.js. PoisonTap производит каскадный эффект путем использования существующего доверия к различным механизмам машины и сети, включая USB/Thunderbolt, DHCP, DNS, и HTTP, для создания эффекта снежного кома с целью извлечения информации, получения доступа к сети и установки полупостоянных бэкдоров.

Еще немного малинки:

Когда PoisonTap (Raspberry Pi Zero & Node.js) подключен к заблокированному / защищенному паролем компьютеру, он:

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

PoisonTap обходит следующие механизмы защиты

PoisonTap обходит следующие механизмы защиты:

В двух словах, PoisonTap делает следующее:

Несанкционированное использование сети

  • Атакующий подключает PoisonTap (например, вооруженную Raspberry Pi Zero) к заблокированному компьютеру (даже если компьютер защищен паролем)
  • 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 серверов, или раскрытие уязвимостей аутентификации.

Один комментарий

Добавить комментарий для MonMJK Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *