Как внешне безобидный инсайдер с Raspberry Pi способен взломать вашу корпоративную сеть
Часто ли вы выключаете свой компьютер, уходя домой с работы? Скорее всего вы его оставляете включенным, чтобы не ждать, пока он загрузится утром. Возможно, что коллеги приучили вас блокировать систему всякий раз, когда вы отлучаетесь от рабочего места, однако даже заблокированный компьютер — не препятствие для атак нового типа, описание которых набирает популярность на специализированных форумах, посвященным микрокомпьютерам Raspberry Pi.
Ранее мы выясняли, безопасно ли заряжать смартфон по USB. Сейчас речь пойдет о подключении к USB-порту микрокомпьютеров, с помощью которых осуществляется перехват аутентификационных данных. Как нам удалось установить в ходе исследования, эта атака успешна и против заблокированных систем и может быть использована для похищения реквизитов доступа пользователей с административными правами. Опасность утечки прав администратора хорошо иллюстрирует пример Carbanak — злоумышленникам, чьи действия были раскрыты в 2015 году, удалось похитить, по разным оценкам, до миллиарда долларов. Важной частью «успеха» Carbanak было выявление и перехват реквизитов системных администраторов, для чего была выстроена и реализована сложная целевая атака.
В нашем исследовании мы покажем, что для похищения администраторских реквизитов достаточно краткосрочного подключения по USB к произвольному компьютеру внутри корпоративной сети. Стоимость необходимого «железа» при этом составляет порядка $20, а саму атаку может реализовать человек любой квалификации, имеющий доступ в помещение. Например, уборщица, которую можно попросить «воткнуть эту коробочку в любой включенный компьютер» на время уборки.
Для наших экспериментов мы выбрали самый обычный Raspberry Pi Zero, который был сконфигурирован таким образом, чтобы «представиться» подключаемой системе как USB-Ethernet-адаптер. Наш выбор был не случаен — Raspberry Pi Zero является лидером по числу упоминаний на форумах, где обсуждается возможность взлома машин с помощью одноплатных компьютеров. Скорее всего, такая популярность связана с габаритами устройства и его вычислительной мощностью при очень демократичной цене. Разработчики смогли уместить все элементы питания, чип и интерфейсы в корпусе размером чуть больше привычной «флэшки».
Сама идея использовать микрокомпьютеры для перехвата и анализа сетевых пакетов или в качестве универсальной платформы для взлома далеко не нова. Большинство миниатюрных вычислительных устройств построено на микропроцессорах архитектуры ARM, и для них есть специальный дистрибутив операционной системы Kali Linux, предназначенной для тестирования информационной безопасности ИТ-систем.
Также на рынке существуют специализированные предложения для выполнения тестов на проникновение, например, USB Armory. Однако при всех своих достоинствах, в числе которых привычный разъем USB Type A (для Raspberry Pi требуется переходник), USB Armory стоит существенно дороже (около $135) и не идет ни в какое сравнение по распространенности с Raspberry Pi. Первые заявления о возможности кражи хэшей «через USB» к компьютеру (под управлением как Windows, так и Mac OS) появились уже в 2016 году, а немного позже мы увидели на рынке специальные версии Raspberry Pi Zero, «заточенные» не только на перехват хэшей паролей, но и файлов cookie в браузере. Мы не будем останавливаться в этом блогпосте на том, что означает перехват хэша пароля и насколько сложно восстановить исходный пароль пользователя (что, вообще говоря, не всегда и необходимо).
Итак, вооружившись одним из самых распространенных и доступных на текущий момент микрокомпьютеров, мы провели два эксперимента: в первом мы постарались перехватить реквизиты пользователей в корпоративной сети, подключаясь к компьютерам под управлением разных операционных систем, а во втором — попытались перехватить файлы cookie из браузера с целью восстановить предыдущую пользовательскую сессию на одном из популярных веб-сайтов.
Эксперимент 1: перехват реквизитов доступа в домен
Методология
Ключевой особенностью атаки является эмуляция устройством сетевого адаптера. Модуль для Raspbian OS, эмулирующий Ethernet-устройство, был найден без труда (на момент публикации данной статьи аналогичного модуля для Kali Linux мы обнаружить не смогли). Чтобы Raspberry Pi Zero распознавалась компьютером, необходимо внести небольшие изменения в конфигурационные файлы cmdline.txt и config.txt.
Дополнительно устанавливаем интерпретатор python, библиотеки для управления БД sqlite3 и специальное приложение Responder, которое собственно и осуществляет перехват пакетов аутентификации:
apt-get install -y python git python-pip python-dev screen sqlite3
pip install pycrypto
git clone https://github.com/spiderlabs/responder
Но это еще не все. Нам понадобится собственный DHCP-сервер isc-dhcp-server, в котором нужно настроить диапазонвыдачи IP-адресов и маску подсети, чтобы отделить «внутреннюю кухню» микрокомпьютера от подключаемой системы Windows или Mac, в которую мы хотим «влезть». Остались последние штрихи: настроить интерфейс usb0 и прописать автоматический запуск Responder и DHCP-сервера. После чего устройство готово к использованию.
Результаты
Мы начали проверять работу нашего «заряженного» микрокомпьютера на Windows 10 и сразу убедились, что подключенная Raspberry Pi Zero автоматически распознается как новое «проводное» LAN-соединение, причем более приоритетное, чем все остальные. В «Центре управления сетевыми подключениями» Windows эмулируемая сеть показывается как неопознанная сеть, в «Диспетчере устройств» эмулируемое устройство отображается как Remote NDIS based Internet sharing device:
Далее Responder анализирует запросы, проходящие через эмулируемую сеть, и в нужный момент подставляет фейковый сервер HTTPS и HTTP- или NTLM‑аутентификации. Ключевая особенность программы заключается в том, что она поддерживает версии NTLMv1 и NTLMv2.
Атака сработает в случае, когда фоновые приложения сами отсылают аутентификационные данные или же при их вводе в стандартные окна запроса учетных данных браузера или «Проводника» при доступе к удаленной папке/принтеру.
Автоматический перехват хэша без вмешательства извне (который также эффективен против заблокированных систем) работает только при наличии у компьютера другого подключения к сети Интернет.
Нас интересовало три сценария реализации атаки:
- на корпоративный компьютер в доменной сети;
- на корпоративный компьютер в общественной сети;
- на домашний компьютер.
В первом сценарии устройство перенаправляло на себя не только запросы владельца компьютера, но и сетевые запросы от приложений других корпоративных пользователей домена с использованием NTLM. Мы даже попробовали определить зависимость количества перехваченных хэшей от времени подключения к корпоративной сети, который отразили на графике:
Поэкспериментировав со временем работы нашей «машинки» в диапазоне от нескольких минут до получаса, мы увидели, что чем дольше устройство подключено к системе, тем больше хэшей удается перехватить. Экстраполируя наши приблизительные данные, мы пришли к выводу, что нам удастся перехватить около 50 хэшей в час. Скорее всего, этот показатель зависит от топологии корпоративной сети (в частности, от количества пользователей в одном сегменте) и их активности в данное время суток. Мы не рискнули долго использовать устройство, поскольку перехват пакетов имеет дополнительные побочные эффекты, о которым мы расскажем чуть ниже.
Вот как выглядит сам файл с перехваченными хэшами:
Во втором случае (корпоративный компьютер в общественной сети) удалось перехватить данные доменной учетной записи пользователя и данные его аккаунта в Windows. Возможно, «добыча» была бы крупнее, если бы в общественной сети были развернуты сетевые ресурсы, требующие аутентификации, но мы оставим это предположение за рамками настоящего исследования.
В третьем сценарии нашей «добычей» стал только хэш личного пароля от домашнего компьютера, который не состоял в домене. Дополнительно отметим, что компьютеры домашней сети не имели никаких общих политик безопасности, как и общего доступа к файлам, папкам и принтерам.
Описанный выше метод перехвата хэшей также сработал на Mac OS, но не в автоматическом режиме. При входе на сайт с использованием доменного имени пользователя, нас встретил баннер, предупреждающий, что сертификат сервера, возможно, не является подлинным.
Из интересных побочных эффектов стоит отметить, что когда устройство находится в работе — подключено к хосту, соединенному с корпоративной сетью, то оно напрочь блокирует все запросы печати и доступа к удаленным папкам (протокол SMB), — т.е., производит «мини-диверсию». Вот что мы увидели на другом (т.е. к которому не был подключен «заряженный» Raspberry Pi) компьютере под управлением Mac OS в этом же сегменте сети:
вод доменного имени и пароля в окне аутентификации сетевого принтера, как нетрудно догадаться, не приводит к разблокировке задачи печати, а лишь пополняет список доменных имен и соответствующих им хэшей в логе.
Bonus
Когда NTLM-системы Windows и Mac OS успешно пали перед натиском микрокомпьютера, у нас возник вопрос — а что насчет Linux? И тогда у нас возникла шальная мысль — а почему бы не попробовать атаковать… саму Raspberry Pi, ведь Raspbian OS построена на ядре Debian Weezy.
Мы воспроизвели эксперимент, выбрав в качестве цели для атаки Raspberry Pi 3, подключенный к корпоративной сети через интерфейс Ethernet. И вот тут нас ждал приятный сюрприз: Raspbian OS при выборе из двух сетей с разными интерфейсами всегда предпочитает Ethernet. По этой причине Responder на Raspberry Pi Zero был активен, но не регистрировал пакетов аутентификации, так как они через него не ретранслировались. Если отключить Ethernet и оставить атакуемой системе единственное сетевое подключение через USB, то Responder перехватывает хэши по схеме, полностью аналогичной вышеописанному сценарию с Windows.
Аналогичную картину мы наблюдали и на «десктопной» версии Debian (запущенной на Chromebook) — система не назначает автоматически USB-адаптер приоритетным сетевым интерфейсом. Таким образом, атака путем присоединения микрокомпьютера к системе, подключенной по Ethernet к корпоративной сети, будет неэффективна. Подключение типа Raspberry PI-in-the-middle не выглядит перспективным вариантом, поскольку сложнее реализуется и легче обнаруживается.
Эксперимент 2: кража cookie
Методология
Услышав сообщение о возможности кражи cookie с помощью Raspberry Pi Zero, мы решили его проверить. Мы нашли приложение, называемое poisontap, которое впоследствии энтузиасты объединили с приложением Responder из первого эксперимента. Такая связка была названа HackPi.
Настройки микрокомпьютера в этом эксперименте аналогичны настройкам для предыдущего, однако в HackPi был усовершенствован механизм распознавания устройства десктопными ОС: оно автоматически устанавливает драйвер сетевого устройства на Windows 7/8/10, Mac OS, и Unix-системах.
Сразу после загрузки ОС запускается эмулятор сетевого устройства, появляется новое подключение локальной сети, которое должно быть определено системой как приоритетное — иначе пакеты не будут через него перенаправлены. Существенным отличием от предыдущего эксперимента является то, что вместо перехвата пакетов аутентификации приложением, выполняется XSS-атака и запускается вредоносный Java Script из подгружаемой веб-страницы. Дополнительно, веб-сервер poisontap сохраняет копию cookie с сайтов по заранее определенному списку.
Результаты
Если компьютер не заблокирован и пользователь открывает браузер, установленный по умолчанию, JavaScript начинает переадресацию веб-запросов на зараженную страницу, подгружаемую из скрипта. Далее инициируется переход по заранее заданному списку сайтов. Выглядит довольно зрелищно:
Если же никаких действий пользователем не производится, то Raspberry Pi Zero запускает браузер со страницей go.microsoft.com в адресной строке, на которой подгружается зараженная страница со встроенного веб-сервера и далее процесс, описанный выше, повторяется. Однако, радоваться злоумышленникам рано — если в браузере по умолчанию сохраненных cookies нет, то доступа к сайтам из «списка интересов» они не получат.
Среди сайтов, прописанных в скрипте: youtube.com, google.com, vk.com, facebook.com, twitter.com, yandex.ru, mail.ru и еще более 100 веб-адресов. Вот как выглядит лог с добытыми cookie:
Мы проверили валидность полученных cookie на примере pikabu.ru, вставив данные в поля абсолютно чистого браузера другой машины и успешно получили доступ к аккаунту вместе с его статистикой активности на сайте.
Гораздо более серьезную опасность представляет потеря cookie на одном из российских сайтов, хранящем персональные данные своих клиентов в их личном профиле. Мы создали тестовый аккаунт и смогли заполучить пользовательский токен этого сайта. С его помощью мы получили возможность распоряжаться скомпрометированным аккаунтом на другом компьютере, поскольку для аутентификации передается единственный идентификатор сессии LtpaToken2:
В случае реальной атаки в распоряжении злоумышленника окажется доступ к ряду данных, подпадающих под категорию персональных:
Среди достоинств этого метода — возможность использования практически на всех операционных системах и платформах: Windows 7/8/10, Mac OS X. Однако, именно этот сценарий не работает на заблокированном компьютере – по крайней мере, пока. Хотя мы не рекомендуем расслабляться и предлагаем исходить из того, что обойти ограничения блокировки для такой атаки всего лишь вопрос времени и энтузиазма умельцев, число которых каждый день растет.
Но самое главное — зараженная страница блокируется всеми без исключения продуктами «Лаборатории Касперского», определяющих ее как зараженную Trojan.JS.Poisontap.a. Также, по нашим данным, эта страница будет заблокирована защитным ПО и других ведущих вендоров.
Выводы
Одноплатные микрокомпьютеры представлены в широком ассортименте: от Raspberry Pi Zero до специально заточенных под подобные задачи устройств, внешне не отличимых от флэшки. Отвечая на главный вопрос о том, насколько серьезна данная проблема, можем резюмировать — масштаб бедствия на данный момент скорее преувеличен. Впрочем, не стоит недооценивать злоумышленников — при планировании мероприятий по обеспечению безопасности лучше исходить из того, что те трудности, с которыми мы столкнулись в своем эксперименте, ими уже либо преодолены, либо будут преодолены в ближайшее время.
На текущий же момент мы можем констатировать, что перехват хэша с помощью микрокомпьютеров наиболее «легко» происходит при их подключении к системам, работающим под управлением Windows. Причем наличие последней версии этой операционной системы с автоматической установкой драйверов — однозначный минус, поскольку позволяет реализовать первую часть атаки (перехват данных аутентификации в домене) даже на заблокированном компьютере. Наличие же прав локального администратора или их отсутствие никак не влияет на успешность атаки. Эта же атака при подключении к системам под управлением Mac OS работает лишь в том случае, если присоединяемому устройству удается обойти ограничения системы и подключиться в качестве сетевого адаптера с более высоким приоритетом.
Перехват cookie-файлов требует разблокировки компьютера, что сразу понижает шансы на успех, а также использует перенаправление трафика через зараженную страницу, что достаточно просто блокируется защитным решением. Кроме того, использование перехваченных cookies возможно лишь на тех веб-ресурсах, которые не используют дополнительные меры защиты.
Рекомендации
Чтобы не стать мишенью для злоумышленников следует помнить о нескольких простых правилах.
Для пользователей
1. Никогда не оставляйте свой компьютер разблокированным, особенно если вам нужно отлучиться на секунду, а вы находитесь в общественном месте.
2. Вернувшись, стоит проверить — не появилось ли новых USB-устройств. Торчит какая-то флэшка? А это точно флэшка? Если вы ее не вставляли, ее нужно вытащить.
3. Если вас просят записать информацию на внешний накопитель, стоит убедиться, что это действительно накопитель. Лучше отправить данные по почте.
4. Возьмите в привычку нажимать кнопку «Выход» по завершении работы на сайтах, требующих аутентификации.
5. Не забывайте регулярно менять пароли (от учетной записи на ПК, и веб-ресурсов). Помните, что далеко не все сайты используют механизмы защиты от подстановки данных сессии из cookie. Чтобы упростить и облегчить себе жизнь, можете использовать специализированное ПО, например, Kaspersky Password Manager.
6. Включите двухэтапную аутентификацию, когда в дополнение общепринятой пары логин-пароль сервер запрашивает проверочный код клиента или активируйте подтверждение логина с помощью аппаратного токена (двухфакторная аутентификация).
7. И, конечно, не стоит пренебрегать установкой и регулярным обновлением защитного решения.
Для администраторов
1. Если топология сети позволяет, используйте только протокол аутентификации Kerberos. Если есть необходимость поддержки legacy-систем LLNMR, NTLM, настоятельно рекомендуется разбивать доменную сеть на сегменты таким образом, чтобы исключить возможность «прослушки» всей сети целиком.
2. Запретите использование привилегированных доменных учетных записей (особенно доменных администраторов) для доступа в legacy-системы.
3. Доменные пароли пользователей должны регулярно меняться. Если по каким-то причинам в политике безопасности организации еще не прописана регулярная смена паролей пользователей, сделайте это сейчас же.
4. На все компьютеры внутри корпоративной сети должны быть установлены защитные решения и должна быть обеспечено их обновления регулярное обновление.
5. Для предотвращения подключения «несанкционированных» USB-устройств также полезно будет задействовать функцию Device Control, доступную в Kaspersky Endpoint Security for Business.
6. Если вы являетесь владельцем веб-ресурса, рекомендуем активировать режим HSTS (HTTP strict transport security), что позволит защитить пользователей от подмены используемого протокола с HTTPS на HTTP.
7. По возможности отключите режим прослушивания и активируйте настройку Client Isolation (AP Isolation) на Wi-Fi роутерах и коммутаторах, не позволяющие получить рабочей станции чужой трафик.
8. От атаки с подменой DHCP сервера можно защититься активацией настройки DHCP Snooping в вашем роутере/маршрутизаторе.
В заключение рекомендуем проверить ваши учетные данные на предмет утечки из веб-сайтов, где вы зарегистрированы, с помощью сервиса HaveIbeenPwned.
Перепечатка с Securelist.ru.