Приемник unifying что это
Берегите ваши донглы: исследование безопасности ресивера клавиатур Logitech
Так исторически сложилось, что большинство сотрудников пользуются беспроводными клавиатурами и мышами фирмы Logitech. В очередной раз вводя свои пароли, мы – специалисты команды Raccoon Security – задались вопросом: насколько сложно обойти механизмы защиты беспроводных клавиатур? Проведенное исследование выявило архитектурные недостатки и программные ошибки, которые позволяют получить доступ к вводимым данным. Под катом – что у нас получилось.
Почему Logitech?
На наш взгляд, устройства ввода компании Logitech являются одними из самых качественных и удобных. Большинство имеющихся у нас устройств основаны на решении Logitech Unifying – это универсальный донгл-приемник, позволяющий подключать до 6 устройств. Все совместимые с технологией Logitech Unifying устройства маркируются соответствующим логотипом. Простое в использовании приложение позволяет управлять подключением беспроводных клавиатур к компьютеру. Подробно процесс подключения клавиатуры к донглу-приемнику Logitech, как и сама технология, освещены, например, здесь.
Донгл-приемник с поддержкой Logitech Unifying
Клавиатура может стать источником информации для злоумышленников. Компания Logitech, учитывая возможную угрозу, позаботилась о безопасности – применила алгоритм шифрования AES128 в радиоканале беспроводной клавиатуры. Первая мысль, которая может посетить злоумышленника при таком раскладе, – перехват ключевой информации при ее передаче по радиоканалу в процессе процедуры связывания. Ведь при наличии ключа можно перехватывать радиосигналы клавиатуры и расшифровывать их. Однако пользователю очень редко (или даже никогда) приходится связывать клавиатуру Unifying-процедурой, и хакеру со сканирующим радиоприемником придется долго ждать. Кроме того, не все так просто обстоит и с самим процессом перехвата. В последнем исследовании в июне 2019 года эксперт по безопасности Маркус Менгс опубликовал в сети сообщение об обнаружении уязвимости в старых прошивках USB-донглов Logitech. Она позволяет злоумышленникам с физическим доступом к устройствам получать ключи шифрования радиоканала и инжектировать нажатия клавиш (CVE-2019-13054).
Мы расскажем про наше исследование безопасности донгла Logitech на базе SoC NRF24 от Nordic Semiconductor. А начнем, пожалуй, с самого радиоканала.
Как «летят» данные в радиоканале
Для частотно-временного анализа радиосигнала мы использовали SDR-приемник на базе устройства Blade-RF в режиме анализатора спектра (об этом также можно почитать здесь).
Устройство SDR Blade-RF
Мы также рассмотрели возможность записи квадратур радиосигнала на промежуточной частоте, чтобы затем проанализировать их с применением методов цифровой обработки сигналов.
Государственной комиссией по радиочастотам в Российской Федерации разрешен к использованию устройствами малого радиуса действия диапазон частот 2400–2483,5 МГц. Это очень «населенный» диапазон, в котором чего только не встретишь: Wi-Fi, Bluetooth, всевозможные пульты ДУ, охранные системы, беспроводные извещатели, мыши с клавиатурами и другие беспроводные цифровые устройства.
Спектр участка диапазона 2,4 ГГц
Помеховая обстановка в диапазоне достаточно сложная. Но несмотря на это компания Logitech смогла обеспечить надежный и устойчивый прием с помощью использования протокола Enhanced ShockBurst в трансивере NRF24 в сочетании с алгоритмами частотной адаптации.
Каналы в диапазоне размещены в позициях целых значений МГц, как определено в спецификации NRF24 Nordic Semiconductor – всего 84 канала в сетке частот. Число одновременно используемых Logitech частотных каналов, конечно, меньше. Мы выявили использование как минимум четырех. Из-за ограниченной полосы обзора применяемого анализатора спектра сигналов точный список используемых частотных позиций определить не удалось, но в этом и не было необходимости. Информация от клавиатуры к донглу-приемнику передается в режиме Burst (короткими включениями трансмиттера) с использованием двухпозиционной частотной модуляции GFSK на символьной скорости 1 Мбод:
Радиосигнал клавиатуры во временном представлении
Ресивер использует корреляционный принцип приема, поэтому в составе передаваемого пакета присутствуют преамбула и адресная часть. Помехоустойчивое кодирование не применяется, тело данных шифруется алгоритмом AES128.
В общем, радиоинтерфейс беспроводной клавиатуры Logitech можно характеризовать как полностью асинхронный со статистическим уплотнением и частотной адаптацией. Это означает, что трансмиттер клавиатуры переключает канал для передачи каждого нового пакета. Приемнику неизвестны заранее ни время передачи, ни частотный канал, а известен только их список. Приемник и передатчик встречаются в канале благодаря согласованным алгоритмам обхода и прослушивания частот, а также механизмам подтверждений Enhanced ShockBurst. Мы не исследовали, является ли список каналов статическим. Вероятно, его изменение обусловлено алгоритмом частотной адаптации. Что-то близкое к методу ППРЧ (псевдослучайная перестройка рабочей частоты) угадывается в использовании частотного ресурса диапазона.
Таким образом, в условиях частотно-временной неопределенности для гарантированного приема всех сигналов клавиатуры злоумышленнику понадобится контролировать в постоянном режиме всю сетку частот диапазона из 84 позиций, что требует значительных временных затрат. Здесь становится понятно, почему уязвимость извлечения ключа через USB (CVE-2019-13054) в источниках позиционируется как возможность инжектирования нажатий клавиши, а не получения доступа злоумышленника к вводимым с клавиатуры данным. Очевидно, что радиоинтерфейс беспроводной клавиатуры устроен достаточно сложно и обеспечивает надежную радиосвязь между устройствами Logitech в условиях сложной помеховой обстановки в диапазоне 2,4 ГГц.
Взгляд на проблему изнутри
Для исследования мы выбрали одну из имеющихся у нас клавиатур Logitech K330 и донгл Logitech Unifying.
Заглянем внутрь клавиатуры. Интересный для исследования элемент на плате – чип SoC NRF24 от Nordic Semiconductor.
SoC NRF24 на плате беспроводной клавиатуры Logitech K330
Прошивка размещена во внутренней памяти, механизмы чтения и отладки выключены. К сожалению, прошивка в открытых источниках не опубликована. Поэтому мы решили подойти к проблеме с другой стороны – изучить внутреннее содержание донгл-приемника Logitech.
«Внутренний мир» донгл-приемника устроен достаточно интересно. Донгл легко разбирается, несет на борту знакомый нам NRF24 в релизе со встроенным USB-контроллером и может быть перепрограммирован как со стороны USB, так и непосредственно программатором.
Донгл Logitech без корпуса
Поскольку существует штатный механизм обновления прошивки с использованием приложения Firmware Update Tool (из которого можно извлечь обновленную версию прошивки), искать прошивку внутри донгла нет необходимости.
Что было выполнено: из тела приложения Firmware Update Tool была извлечена прошивка RQR_012_005_00028.bin. Для проверки ее целостности контроллер донгла был подключен шлейфом к программатору ChipProg-48:
Шлейф подключения донгла Logitech к программатору ChipProg 48
Для контроля целостности прошивки она была успешно размещена в памяти контроллера и заработала корректно, клавиатура и мышь были подключены к донглу через Logitech Unifying. Возможна заливка модифицированной прошивки с помощью штатного механизма обновления, т. к. каких-либо механизмов криптографической защиты прошивки не предусмотрено. Мы же в целях исследования использовали физическое подключение к программатору, поскольку так проводить отладку гораздо быстрее.
Исследование прошивки и атака на пользовательский ввод
Чип NRF24 спроектирован на основе вычислительного ядра Intel 8051 в традиционной гарвардской архитектуре. Для ядра трансивер выступает в качестве периферийного устройства и размещен в адресном пространстве как набор регистров. Документацию на чип и примеры исходных текстов можно найти в Интернете, поэтому дизассемблирование прошивки не представляет трудности. В ходе реверс-инжиниринга мы локализовали функции получения данных о нажатиях клавиш из радиоканала и преобразования их в формат HID для передачи на хост по USB-интерфейсу. В свободных адресах памяти был размещен код инъекции, в который вошли инструменты перехвата управления, сохранения и восстановления оригинального контекста исполнения, а также функциональный код.
Принятый донглом из радиоканала пакет нажатия или отпускания клавиши дешифруется, преобразуется в стандартный HID-репорт и направляется в USB-интерфейс как от обычной клавиатуры. В рамках исследования для нас наибольший интерес представляет часть HID-репорта, содержащая байт флагов-модификаторов и массив из 6 байт с кодами нажатий клавиш (для справки информация о HID здесь).
Непосредственно перед передачей HID-структуры на хост инжектированный код получает управление, копирует в памяти 8 байт нативных HID-данных и отправляет их на побочный радиоканал в открытом виде. В коде это выглядит так:
Побочный канал организуется на установленной нами частоте с определенными характеристиками скорости манипуляции и структуры пакета.
Работа трансивера в чипе NRF24 основана на графе состояний, в который органично вписан протокол Enhanced ShockBurst. Мы выяснили, что непосредственно перед передачей HID-данных в USB-интерфейс хоста трансивер находился в состоянии IDLE. Это делает возможным его безопасное переконфигурирование для работы в побочном канале. Инжектированный код перехватывает управление, сохраняет оригинальную конфигурацию трансивера в полном объеме и переводит его в новый режим передачи на побочный канал. Механизм подтверждений Enhanced ShockBurst в этом режиме выключен, HID-данные в открытом виде передаются в радиоэфир. Структура пакета в побочном канале представлена на рисунке ниже, эпюры сигнала получены после демодуляции и до восстановления тактовой синхронизации данных. Значение адреса выбрано для удобства визуальной идентификации пакета.
Демодулированный сигнал Burst-пакета в побочном канале
После завершения передачи пакета в побочный канал инжектированный код восстанавливает состояние трансивера. Теперь он снова готов к работе в штатном режиме в контексте оригинальной прошивки.
В частотной и частотно-временной областях побочный канал выглядит так, как показано на рисунке:
Спектральное и частотно-временное представление побочного канала
Для проверки работы чипа NRF24 с измененной прошивкой мы собрали стенд, в который вошли Logitech-донгл с модифицированной прошивкой, беспроводная клавиатура и приемник, собранный на базе китайского модуля с чипом NRF24.
Схема перехвата радиосигнала беспроводной клавиатуры Logitech
Модуль на базе NRF24
На стенде при нормальной работе клавиатуры после подключения ее к донглу Logitech мы наблюдали передачу открытых данных о нажатиях клавиш в побочном радиоканале и нормальную передачу шифрованных данных в основном радиоинтерфейсе. Таким образом, нам удалось обеспечить прямой перехват клавиатурного ввода пользователя:
Результат перехвата клавиатурного ввода
Инжектированный код вносит небольшие задержки в работу прошивки донгла. Однако они слишком малы для того, чтобы пользователь мог их заметить.
Как вы понимаете, для такого вектора атаки можно использовать любую клавиатуру Logitech, совместимую с технологией Unifying. Поскольку атака направлена на приемник Unifying, который входит в комплект большинства клавиатур Logitech, то она не зависит от конкретной модели клавиатуры.
Заключение
Полученные результаты исследования подталкивают к мысли о возможном использовании рассмотренного сценария злоумышленниками: если хакер заменит жертве донгл-приемник для беспроводной клавиатуры Logitech, то он сможет узнать пароли к учетным записям жертвы со всеми вытекающими последствиями. Не стоит забывать о том, что инжектировать нажатие клавиш тоже возможно, а значит, выполнить произвольный код на компьютере жертвы не представляет трудности.
А если вдруг злоумышленник сможет удаленно модифицировать прошивку любого Logitech-донгла через USB? Тогда из близко расположенных донглов можно сложить сеть ретрансляторов и увеличить дистанцию утечки. Хотя «финансово обеспеченному» злоумышленнику современные средства радиоприема с высокоселективными системами, чувствительными радиоприемниками с малым временем перестройки частоты и узконаправленными антеннами позволят «слушать» клавиатурный ввод и нажимать клавиши даже из соседнего здания.
Профессиональное оборудование для радиоприема
Поскольку беспроводной канал передачи данных клавиатуры Logitech достаточно хорошо защищен, найденный вектор атаки требует наличия физического доступа к ресиверу, что сильно ограничивает атакующего. Единственным вариантом защиты в данном случае могло бы быть использование механизмов криптографической защиты для прошивки ресивера, например проверка подписи загружаемой прошивки на стороне ресивера. Но, к сожалению, NRF24 это не поддерживает и в рамках текущей архитектуры устройства реализовать защиту невозможно. Так что берегите ваши донглы, ведь описанный вариант атаки требует физического доступа к ним.
Raccoon Security – специальная команда экспертов НТЦ «Вулкан» в области практической информационной безопасности, криптографии, схемотехники, обратной разработки и создания низкоуровневого программного обеспечения.
Приемники Logitech Unifying (LUR) часто входят в состав беспроводной клавиатуры, мыши и комбинированных наборов Logitech и могут быть приобретены отдельно. Некоторые периферийные устройства Logitech позволяют хранить приемник внутри.
По состоянию на октябрь 2019 года программное обеспечение Logitech Unifying для Windows последний раз обновлялось до версии 2.50.25 30 марта 2010 года.
СОДЕРЖАНИЕ
Совместимость и использование
Некоторые старые устройства Unifying ограничивают количество допустимых изменений сопряжения до 45 раз. После выполнения 45-го подключения такое устройство больше невозможно подключить к другому приемнику. Для пользователей, которые часто переключают устройство Unifying между несколькими ПК или ноутбуками с отдельными приемниками, это ограничение на количество подключений может стать проблемой. Например, пользователь, который часто переключает мышь между двумя приемниками (например, на работе и дома), быстро исчерпает лимит доступных переключателей сопряжения. Logitech советует клиентам, у которых возникла эта проблема, обращаться в службу поддержки. Новые устройства могут переключать пары неограниченное количество раз.
Программное обеспечение для сопряжения доступно от Logitech для Microsoft Windows и Mac OS X. Беспроводные устройства, использующие Unifying Receiver, поддерживаются начиная с Linux 3.2. Программное обеспечение для управления устройствами Unifying в Linux доступно от сторонних разработчиков, таких как Solaar.
Многие компании сделали периферийные устройства, которые подключаются через беспроводные USB- приемники, очень похожими на устройства Logitech; Устройства Logitech несовместимы со многими приемниками других производителей.
Существует множество различных аппаратных версий унифицирующего приемника. Самый распространенный из них используется для повседневного использования и имеет маркировку CU-0007 на металлической оболочке. CU-0008 распространяется с игровыми устройствами и отличается более низкой задержкой.
Безопасность
В 2016 и 2019 годах было зарегистрировано несколько уязвимостей системы безопасности системы Logitech Unifying, и были выпущены исправления.
MouseJacking и keyjacking
Затронутые устройства и прошивки
Устройство | USB ID |
---|---|
Унифицирующий приемник | 046d: c52b |
Унифицирующий приемник | 046d: c539 |
Беспроводная игровая мышь Logitech G900 | 046d: c081 |
Беспроводная клавиатура Logitech K360 | 046d: 4004 |
Многофункциональная беспроводная клавиатура Logitech K370s | 046d: 4061 |
Многофункциональная беспроводная клавиатура Logitech K375s | 046d: 4061 |
Беспроводная сенсорная клавиатура Logitech K400r | 046d: 400e, 046d: 4024 |
Беспроводная сенсорная клавиатура Logitech K400 Plus | 046d: 404d |
Беспроводная клавиатура Logitech Wireless Solar Keyboard K750 | 046d: 4002 |
Беспроводная клавиатура Logitech Multi-Device K780 | 046d: 405b |
Клавиатура Logitech для гостиной K830 с подсветкой | 046d: 404c, 046d: 4032 |
Беспроводная клавиатура Logitech Performance MK850 | 046d: 4062 |
Беспроводная мышь Logitech Wireless Mouse M335 | |
Мышь Logitech Zone Touch Mouse T400 | 046d: 4026 |
Беспроводная мышь Logitech Wireless Mouse M545 | |
Беспроводная мышь Logitech Wireless Mouse M560 | |
Мышь Logitech Touch Mouse M600 | 046d: 401a |
Мышь Logitech Touch Mouse T620 | 046d: 4027 |
Беспроводная аккумуляторная тачпад Logitech T650 | 046d: 4101 |