
Эксплойт отказа в обслуживании для портала устройств Microsoft HoloLens через повторные запросы на сопряжение API, вызывающий перегрузку ЦП и неотзывчивость системы.
Tânia Silva, António Pinto, Pedro Pinto и Sara Paiva
DoS-атака направлена на перегрузку целевой системы таким образом, что она постепенно перестает отвечать на все отправленные ей запросы. Таким образом, легитимный пользователь теряет доступ к сервису, что в зависимости от области применения может быть критичным для его процесса. Для этого вопроса мы проанализировали гарнитуры HoloLens, которые обеспечивают Mixed Reality (MR) опыт. HoloLens 1 и 2 предоставляют фреймворк для удаленного управления и манипулирования контентом и функциями на HoloLens. Инструмент называется «Device Portal», как показано на рисунке 1.1, и позволяет пользователю управлять приложениями, документами и мультимедийным контентом, хранящимися на носимом устройстве. Этот инструмент также обеспечивает визуализацию в реальном времени действий пользователя на устройстве и немедленную запись или захват экрана. Кроме того, этот инструмент позволяет отслеживать компоненты системы, а также управлять процессами, запущенными в данный момент в системе.
Рисунок 1.1: HoloLens Device Portal
На рисунке 1.2 показана архитектура выполненной атаки. Для проведения атаки злоумышленнику необходимо быть подключенным к той же сети, что и цель. Это подключение позволяет хакеру использовать сканер безопасности для анализа всей сети с целью выявления доступных устройств.
Любое устройство, подключенное к сети, может получить доступ к «Device Portal», просто введя соответствующий IP-адрес HoloLens в браузере. Из информации, полученной сканером, атакующий может определить IP и использовать его для попытки доступа к службе удаленного управления. Анализируя сетевой трафик при выполнении действия в «Device Portal», хакер получает доступ к запросам, отправленным к API устройства. С этой информацией они могут разработать скрипт для последовательного выполнения этих запросов к API. При получении всех этих запросов ЦП перегружается, и, как следствие, система перестает отвечать на команды легитимных пользователей, блокируя использование HoloLens. Даже если пользователь решит перезагрузить гарнитуры, атака продолжается, пока IP остается неизменным или атакующий не решит ее остановить.
Рисунок 1.2: Архитектура DoS-атаки на HoloLens
Необходимые требования для правильного воспроизведения данной атаки:
Для выполнения атаки не требуется наличие определенной операционной системы. Используемый для DoS скрипт должен быть адаптирован в соответствии с требованиями выбранного инструмента для его запуска.
Злоумышленник начинает атаку, выбирая инструмент сканирования сети для определения текущего IP-адреса гарнитур, подключенных к сети. Для доступа к домашней странице «Device Portal» достаточно ввести IP-адрес гарнитуры в браузере. На этой странице будет предложено ввести учетные данные. Однако после трех неверных попыток пользователь перенаправляется на страницу, где можно запросить новое сопряжение с гарнитурой и, впоследствии, создать нового пользователя. Просматривая элементы этой веб-страницы, можно проанализировать сетевые запросы к API HoloLens. Эти запросы содержат информацию о теле и заголовках запроса, которые можно легко воспроизвести в другом инструменте, как показано на рисунке 1.3. Возможность отправлять эти запросы была выявленным вектором атаки.
Рисунок 1.3: Запрос к API HoloLens
При каждом новом запросе сопряжения процессы HoloLens приостанавливаются, и поверх изображения пользователя накладывается PIN-код, который необходимо ввести на веб-странице для продолжения сопряжения устройства, как показано на рисунке 1.4. HoloLens возобновляет нормальную работу только после исчезновения этого PIN-кода. Чтобы он исчез, пользователь может завершить процесс сопряжения на веб-странице или открыть меню настроек, где можно вернуться к обычному виду HoloLens.
Рисунок 1.4: PIN-код сопряжения HoloLens
Для тестирования этой проблемы был разработан скрипт, который многократно отправляет запросы сопряжения к API, игнорируя любые возможные ошибки, пока этот процесс не будет остановлен вручную атакующим (см. рисунок 1.5 и Приложение A). Этот скрипт был разработан для Windows PowerShell, поскольку существует возможность запланировать его запуск при каждом включении компьютера. Таким образом, атакующий может установить скрипт на целевые машины, которые обычно подключены к той же сети, что и HoloLens. Атака выполняется в фоновом режиме незаметно для пользователей, делая оборудование непригодным для использования. PowerShell предоставляет команду «New-ScheduledTask», которая позволяет создать триггер для запуска вредоносного скрипта при каждом включении компьютера.
Рисунок 1.5: Скрипт PowerShell
При каждом запросе сопряжения PIN-код сопряжения накладывается поверх обзора пользователя. В результате тестов, проведенных с предыдущим скриптом, было замечено, что непрерывная отправка запросов заставляет HoloLens постоянно накладывать новые PIN-коды на обзор пользователя, не позволяя ему выполнять какие-либо другие задачи. У пользователя есть возможность открыть меню поверх этого PIN-кода, однако, поскольку гарнитуры постоянно получают новые запросы, у пользователя нет времени на выполнение каких-либо операций в этом меню. Со временем очки начинают давать сбои, и HoloLens с трудом распознает жесты или голосовые команды пользователя. Таким образом, пользователь не может использовать устройство до тех пор, пока атака не будет остановлена.
Атака была протестирована в различных сценариях и доказала свою полную эффективность. Когда пользователь пытается перезагрузить HoloLens, как и ожидалось, API перестает отвечать. Однако, как определено в скрипте, ошибки, возвращаемые сервером, должны игнорироваться, что позволяет ему продолжать работу в фоновом режиме. Как только обнаруживается, что HoloLens восстановил подключение к сети, атака продолжается, не позволяя пользователю выполнять какие-либо другие задачи. Тест также проводился, когда доверенное устройство уже было сопряжено с гарнитурами. Результат был тем же: атака возможна, если IP-адрес отправителя отличается от уже сопряженного.
В ходе проведенных тестов было замечено, что гарнитуры перегревались из-за перегрузки ЦП. На рисунке 1.6 показана загрузка ЦП и памяти гарнитур во время атаки. Как видно, в определенные моменты загрузка ЦП поднимается до очень высоких уровней, вызывая перегрев оборудования и задерживая его реакцию на другие службы.
Рисунок 1.6: Загрузка ЦП и памяти