Так исторически сложилось, что большинство сотрудников пользуются беспроводными клавиатурами и мышами фирмы 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.
Logitech K330
Заглянем внутрь клавиатуры. Интересный для исследования элемент на плате – чип 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-репорта:
// Keyboard HID report structure. // See https://flylib.com/books/en/4.168.1.83/1/ (last access 2018 december) // "Reports and Report Descriptors", "Programming the Microsoft Windows Driver Model" typedef struct{ uint8_t Modifiers; uint8_t Reserved; uint8_t KeyCode[6]; }HidKbdReport_t;
Непосредственно перед передачей HID-структуры на хост инжектированный код получает управление, копирует в памяти 8 байт нативных HID-данных и отправляет их на побочный радиоканал в открытом виде. В коде это выглядит так:
//~~~~~~~~~ Send data via radio ~~~~~~~~~~~~~~~~~~~~~~~~~> // Profiling have shown time execution ~1.88 mSec this block of code SaveRfState(); // save transceiver state RfInitForTransmition(TransmitRfAddress); // configure for special trnsmition hal_nrf_write_tx_payload_noack(pDataToSend,sizeof(HidKbdReport_t)); // Write payload to radio TX FIFO CE_PULSE(); // Toggle radio CE signal to start transmission RestoreRfState(); // restore original transceiver state //~~~~~~~~~ Send data via radio ~~~~~~~~~~~~~~~~~~~~~~~~~<
Побочный канал организуется на установленной нами частоте с определенными характеристиками скорости манипуляции и структуры пакета.
Работа трансивера в чипе 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 Unifying2.50.25 Бесплатная34314 Мб Простое в использовании приложение, которое позволяет подключать сразу несколько беспроводных устройств к одному Unifying-ресиверу. Скачать
Logitech Unifying — небольшое приложение, которое позволяет обладателям одноименных ресиверов подключать к оным несколько беспроводных устройств одновременно. Программа является официальной, так что не думайте, что перед вами какой-то «костыль» от сторонних разработчиков. В общей сложности приложение позволяет подключить к одному приемнику до шесть разных гаджетов.
Небольшой ликбез для тех, кто не в курсе что это вообще за ресивер такой и зачем он нужен. Logitech Unifying — небольшой приемник, который используют для «связи» с ПК различные модели мышей и клавиатур от швейцарского производителя. Ресивер является универсальным и подключается к USB-разъему. Его главное техническое преимущество заключается в небольших размерах, которые особенно критичны при подключении периферии в боковой порт ноутбука. Также он отличается довольно стабильным соединением и высокой скоростью отклика, которая удовлетворить даже заядлых игроков.
Так вот, данная программа выступает неким драйвером, которое добавляет ресиверу поддержку одновременного подключения нескольких беспроводных гаджетов. Кому она может понадобиться? Ну, например, тем, кто пользуется клавиатурой и мышью от Logitech. Теперь им не нужно подключать к компьютеру сразу два ресивера и бороться с проблемой «перебивания» беспроводного канала. Так что программа не только помогает освободить лишний USB-порт, но еще и решает ряд технических неполадок. Кстати, в диспетчере устройств все подключенные к ресиверу устройства будут отображаться раздельно.
Утилита выполнена в виде пошагового мастеру и полностью переведена на русский язык. При первом запуске она автоматически распознает подключенный ресивер и поддерживаемые гаджет в области его действия. Все они будут отображены в едином окне, которое можно вызвать левым кликом на иконку Logitech Unifying в панели уведомлений Windows. Данная программа (а скорее драйвер), не испытывает проблем совместимости с любыми версиями операционной системы от Microsoft и не «конфликтует» с другим подобным ПО, установленным на компьютере.
Ключевые особенности
- возможность подключить до шести беспроводных гаджетов Logitech к одному приемнику;
- простая пошаговая установка;
- отсутствие конфликтов с другими драйверами периферийных устройств;
- наличие русской локализации;
- удобный менеджер подключений;
- автоматическое распознавание подключенного ресивера;
- поддержка всех современных версий Windows.
Разработчик: LogitechОбновлено: 30-07-2017Версия ОС: Windows XP и вышеРусский язык: ПрисутствуетЛицензия: БесплатнаяСкачать(размер файла: 4 Мб)
Logitech Unifying — как подключить шесть устройств к одному приемнику?
Мало кто знает об интересной возможности, которой могут воспользоваться владельцы беспроводных устройств компании Logitech. Технология называется Unifying (от англ. «unify» — «объединять») и позволяет подключить до шести совместимых беспроводных устройств на один USB-приемник. Следовательно, можно освободить USB-порты, что особенно полезно для ноутбуков, где USB-портов и так немного. Также, эта возможность поможет в ситуации, когда один из приемников «умирает» и нужно срочно перекинуть устройство на другой приемник или когда один из приемников потерялся. В данной статье мы расскажем, какие приемники обеспечивают технологию Logitech Unifying, как привязать несколько устройств к одному приемнику и как вернуть все как было, и что делать, если потерялся или сломался приемник Logitech.
Какие устройства совместимы с приемниками Logitech Unifying?
Если у вас уже есть мышь или клавиатура от Logitech, то определить ее совместимость с приемниками Unifying можно за одну секунду. Просто осмотрите свое устройство – на нижней стороне устройства, на наклейке с технической информацией или прямо на корпусе должен быть изображен значок – это значит, что ваша модель поддерживает технологию Unifying. Кроме того, такой значок должен находиться на самом приемнике.
Многие устройства, выпускаемые Logitech в последнее время, совместимы с Unifying-приемниками. Список самых популярных моделей, поддерживающих описанную функцию объединения устройств, содержится в конце статьи.
Обратите внимание, что связать между собой можно только те устройства, которые совместимы с приемниками Unifying (т.е. имеют значок ). Это значит, что привязать к приемнику Logitech Unifying любое другое устройство, которое не поддерживает эту технологию, невозможно.
Как подключить несколько устройств Logitech на один приемник Unifying?
Прежде всего, нам понадобятся два устройства (или больше), которые совместимы с Logitech Unifying. В нашем примере мы используем мышь Logitech M215 и клавиатуру Logitech K360. И, самое главное, нужно скачать и установить программу от Logitech, в которой и будем сопрягать наши устройства.
Шаг 1. Подключаем один из ресиверов к компьютеру и запускаем программу Logitech Unifying. Возможность подключения толькоодного приемника для сопряжения нескольких устройств будет очень полезной, если второй приемник сломался или потерялся.
Шаг 2. Чтобы начать процесс объединения (или «сопряжения») устройств, нажимаем кнопку «далее». Программа выдает понятные инструкции с картинками, тем самым сильно облегчая задачу. Если было подключено два приемника, то сначала нужно отсоединить от компьютера один из приемников Unifying, оставив только тот, к которому будут подключаться все остальные устройства. После этого должна стать активной кнопка «далее», нажимаем на неё.
Шаг 3. Выключаем и включаем устройство, которое нужно привязать к приемнику.
После перезапуска устройства, в нашем случае – клавиатуры, автоматически появляется окошко с уведомлением о том, что клавиатура готова к использованию, с чем нас и поздравляют:
Теперь мы можем подключить следующее устройство, нажав на кнопку «подключить дополнительно устройство» или закончить работу с программой.
«Хочу вернуть всё, как было». Разрываем связь Logitech Unifying, присваиваем каждому приемнику по одному устройству.
В случае, если требуется разорвать связь (например, если вы продаете одно из устройств или хотите подключить его отдельно к другому компьютеру), это так же не займет много времени и сил.
Шаг 1. Подключаем к компьютеру «чистый» приемник и запускаем программу Logitech Unifying.
Шаг 2. На стартовой странице программы нажимаем кнопку «дополнительно» и видим приблизительно следующую картину:
Это значит, что к первому приемнику «привязано» два устройства – мышь и клавиатура, а второй приемник пуст. На пустой приемник нам нужно перепривязать одно из двух устройств, таким образом у нас получится 1 приемник = 1 устройство.
Шаг 3. Выделяем устройство, которое нужно отвязать от первого приемника, и нажимаем кнопку «разорвать связь». Если есть выбор между мышкой и клавиатурой, то лучше отвязывать клавиатуру, поскольку после разрыва связи компьютер не будет откликаться на ваши действия с устройством, а мышка нам пригодится в ближайшую минуту (в отличии от клавиатуры).
Шаг 4. Выделяем пустой приемник и нажимаем кнопку «Связать новое устройство». Появится окошко, в котором нам предлагают выключить и включить подключаемое устройство. Перезапускаем это устройство (в нашем примере это клавиатура), после чего устройство привяжется ко второму приемнику и полностью готово к работе.
Я потерял приемник от клавиатуры или мышки Logitech, что делать? Приемник Logitech сломался, как быть?
К сожалению, иногда приемники Logitech ломаются. Еще чаще они теряются. Если ваше устройство, оставшееся без приемника, поддерживает технологию Logitech Unifying (т.е. имеет специальный значок ), то вы можете купить такой Logitech Unifying USB приемник на AliExpress. Однако, учитывая сравнительно высокую стоимость отдельного приемника (500-800 рублей) и долгие сроки доставки из Китая (не менее двух-трех недель), возможно, Вам было бы комфортнее заказать новую мышку или клавиатуру Logitech Unifying. Например, если у вас есть клавиатура Logitech со сломанным приемником Unifying, вы можете порадовать себя и купить недорогую мышку, поддерживающую ту же технологию, и подключить клавиатуру к приемнику мышки (см. раздел Как подключить несколько устройств Logitech на один приемник Unifying?) . Это будет ненамного дороже отдельного приемника, зато в разы быстрее.
Бонус: какие устройства поддерживают технологию Logitech Unifying?
Мышки
Wireless Mouse M235
Wireless Mouse M317
Wireless Mouse M325
Wireless Mouse M345
Wireless Mouse M525
Мышь Wireless Mouse M560
Touch Mouse M600
Marathon Mouse M705
Мышка-трекбол
Wireless Trackball M570
Клавиатуры
Wireless Keyboard K230
Wireless Keyboard K270
Wireless Keyboard K360
Wireless Touch Keyboard K400
Wireless Solar Keyboard K750
Wireless Illuminated Keyboard K800
Комплекты Клавиатура + Мышь
Wireless Combo MK270
Logitech Wireless Combo MK330
Wireless Combo MK520
Если вам по каким-то причинам не подошли перечисленные модели, зато приглянулись другие, однако их Unifying-совместимость неизвестна – вы можете проверить технические характеристики на официальном сайте Logitech
—> Используемые источники:
- https://habr.com/post/479374/
- http://softrare.ru/windows/logitech-unifying
- https://fuflometr.ru/logitech-unifying-kak-podklyuchit-shest-ustrojstv-k-odnomu-priemniku/