Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Так історично склалося, більшість співробітників користуються бездротовими клавіатурами і мишами фірми Logitech. Вкотре вводячи свої паролі, ми – фахівці команди Raccoon Security – запитали себе: наскільки складно обійти механізми захисту бездротових клавіатур? Проведене дослідження виявило архітектурні недоліки та програмні помилки, які дозволяють отримати доступ до даних, що вводяться. Під катом – що в нас вийшло.

Чому Logitech?

На наш погляд, пристрої введення компанії Logitech є одними з найякісніших та найзручніших. Більшість наявних у нас пристроїв засновані на вирішенні Logitech об'єднавчий – це універсальний донгл-приймач, що дозволяє підключати до шести пристроїв. Всі сумісні з технологією Logitech Unifying маркуються відповідним логотипом. Просте у використанні додаток дозволяє керувати підключенням бездротових клавіатур до комп'ютера. Детально процес підключення клавіатури до донглу-приймача Logitech, як і сама технологія, освітлені, наприклад, тут.

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Донгл-приймач з підтримкою Logitech Unifying

Клавіатура може бути джерелом інформації для зловмисників. Компанія Logitech, враховуючи можливу загрозу, подбала про безпеку – застосувала алгоритм шифрування AES128 у радіоканалі бездротової клавіатури. Перша думка, яка може відвідати зловмисника за такого розкладу, – перехоплення ключової інформації під час її передачі радіоканалом у процесі процедури зв'язування. Адже за наявності ключа можна перехоплювати радіосигнали клавіатури та розшифровувати їх. Однак користувачеві дуже рідко (або навіть ніколи) доводиться пов'язувати клавіатуру Unifying-процедурою, і хакеру зі сканувальним радіоприймачем доведеться довго чекати. Крім того, не все так просто і з самим процесом перехоплення. В останньому дослідженні у червні 2019 року експерт з безпеки Маркус Менгс опублікував у мережі повідомлення про виявлення вразливості у старих прошивках USB-донглів Logitech. Вона дозволяє зловмисникам із фізичним доступом до пристроїв отримувати ключі шифрування радіоканалу та інжектувати натискання клавіш (CVE-2019-13054).

Ми розповімо про наше дослідження безпеки донгла Logitech на базі SoC NRF24 від Nordic Semiconductor. А почнемо, мабуть, із самого радіоканалу.

Як «летять» дані у радіоканалі

Для частотно-часового аналізу радіосигналу ми використовували SDR-приймач на базі пристрою Blade-RF у режимі аналізатора спектру (про це також можна почитати тут).

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Пристрій SDR Blade-RF

Ми також розглянули можливість запису квадратур радіосигналу на проміжній частоті, щоб проаналізувати їх із застосуванням методів цифрової обробки сигналів.

Державною комісією з радіочастот у Російській Федерації дозволений для використання пристроями малого радіусу дії діапазон частот 2400–2483,5 МГц. Це дуже «населений» діапазон, в якому чого тільки не зустрінеш: Wi-Fi, Bluetooth, всілякі пульти дистанційного керування, охоронні системи, бездротові сповіщувачі, миші з клавіатурами та інші бездротові цифрові пристрої.

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Спектр ділянки діапазону 2,4 ГГц

Перешкода в діапазоні досить складна. Але незважаючи на це компанія Logitech змогла забезпечити надійний та стійкий прийом за допомогою використання протоколу Enhanced ShockBurst у трансівері NRF24 у поєднанні з алгоритмами частотної адаптації.

Канали в діапазоні розміщені в позиціях цілих значень МГц, як визначено в специфікації NRF24 Nordic Semiconductor – всього 84 канали у сітці частот. Число одночасно використовуваних Logitech частотних каналів, звичайно, менше. Ми виявили використання щонайменше чотирьох. Через обмежену смугу огляду застосовуваного аналізатора спектра сигналів точний список використовуваних частотних позицій визначити не вдалося, але в цьому і не було необхідності. Інформація від клавіатури до донгла-приймача передається в режимі Burst (короткими включеннями трансмітера) з використанням двопозиційної частотної модуляції GFSK на символьній швидкості 1 Мбод:

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Радіосигнал клавіатури у тимчасовому поданні

Ресивер використовує кореляційний принцип прийому, тому у складі пакета, що передається, присутні преамбула і адресна частина. Перешкодостійке кодування не застосовується, тіло даних шифрується алгоритмом AES128.

Загалом радіоінтерфейс бездротової клавіатури Logitech можна характеризувати як повністю асинхронний зі статистичним ущільненням і частотною адаптацією. Це означає, що трансмітер клавіатури перемикає канал передачі кожного нового пакета. Приймачу невідомі заздалегідь ні час передачі, ні частотний канал, а відомий лише їх список. Приймач та передавач зустрічаються в каналі завдяки узгодженим алгоритмам обходу та прослуховування частот, а також механізмам підтверджень Enhanced ShockBurst. Ми не досліджували, чи є список каналів статичним. Ймовірно, його зміна зумовлена ​​алгоритмом частотної адаптації. Щось близьке до методу ППРЧ (псевдовипадкова перебудова робочої частоти) вгадується використання частотного ресурсу діапазону.

Таким чином, в умовах частотно-часової невизначеності для гарантованого прийому всіх сигналів клавіатури зловмиснику знадобиться контролювати в постійному режимі всю сітку частот діапазону з 84 позицій, що вимагає значних витрат часу. Тут стає зрозуміло, чому вразливість вилучення ключа через USB (CVE-2019-13054) у джерелах позиціонується як можливість інжектування натискань клавіші, а не отримання доступу зловмисника до даних, що вводяться з клавіатури. Очевидно, що радіоінтерфейс бездротової клавіатури влаштований досить складно та забезпечує надійний радіозв'язок між пристроями Logitech в умовах складної завадової обстановки в діапазоні 2,4 ГГц.

Погляд на проблему зсередини

Для дослідження ми вибрали одну з клавіатур Logitech K330, що є у нас, і донгл Logitech Unifying.

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Logitech K330

Заглянемо усередину клавіатури. Цікавий для дослідження елемент на платі – чип SoC NRF24 від Nordic Semiconductor.

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

SoC NRF24 на платі бездротової клавіатури Logitech K330

Прошивка розміщена у внутрішній пам'яті, механізми читання та налагодження вимкнені. На жаль, прошивка у відкритих джерелах не опублікована. Тому ми вирішили підійти до проблеми з іншого боку – вивчити внутрішній зміст донгл-приймача Logitech.

«Внутрішній світ» донгл-приймача влаштований досить цікаво. Донгл легко розуміється, несе на борту знайомий нам NRF24 у релізі з вбудованим USB-контролером і може бути перепрограмований як з боку USB, так і безпосередньо програматором.

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Донгл Logitech без корпусу

Оскільки існує штатний механізм оновлення прошивки з використанням програми Firmware Update Tool (з якого можна витягти оновлену версію прошивки), шукати прошивку всередині донгла немає необхідності.

Що було виконано: з тіла програми Firmware Update Tool було вилучено прошивку RQR_012_005_00028.bin. Для перевірки її цілісності контролера донгла було підключено шлейфом до програматора ChipProg-48:

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Шлейф підключення донгла 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-дані у відкритому вигляді передаються радіоефіру. Структура пакета в побічному каналі представлена ​​на малюнку нижче, епюри сигналу отримані після демодуляції і до відновлення тактової синхронізації даних. Значення адреси вибрано для зручності візуальної ідентифікації пакета.

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Демодулований сигнал Burst-пакету в побічному каналі

Після завершення передачі пакета побічний канал інжектований код відновлює стан трансівера. Тепер він знову готовий до роботи у штатному режимі у контексті оригінальної прошивки.

У частотній та частотно-часовій областях побічний канал виглядає так, як показано на малюнку:

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Спектральне та частотно-часове подання побічного каналу

Для перевірки роботи чіпа NRF24 зі зміненою прошивкою ми зібрали стенд, до якого увійшли Logitech-донгл із модифікованою прошивкою, бездротова клавіатура та приймач, зібраний на базі китайського модуля із чіпом NRF24.

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Схема перехоплення радіосигналу бездротової клавіатури Logitech

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Модуль на базі NRF24

На стенді при нормальній роботі клавіатури після підключення її до донгла Logitech ми спостерігали передачу відкритих даних про натискання клавіш у побічному радіоканалі та нормальну передачу шифрованих даних в основному радіоінтерфейсі. Таким чином, нам вдалося забезпечити пряме перехоплення клавіатурного введення користувача:

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Результат перехоплення клавіатурного введення

Інжектований код вносить невеликі затримки роботи прошивки донгла. Однак вони занадто малі для того, щоб користувач міг їх помітити.

Як ви розумієте, для такого вектора атаки можна використовувати будь-яку клавіатуру Logitech, сумісну з Unifying технологією. Оскільки атака спрямована на приймач Unifying, що входить до комплекту більшості клавіатур Logitech, вона не залежить від конкретної моделі клавіатури.

Висновок

Отримані результати дослідження підштовхують до думки про можливе використання розглянутого сценарію зловмисниками: якщо хакер замінить жертві донгл-приймач для бездротової клавіатури Logitech, він зможе дізнатися паролі до облікових записів жертви з усіма наслідками. Не варто забувати про те, що інжектувати натискання клавіш теж можливо, а значить, виконати довільний код на комп'ютері жертви не складно.

А якщо раптом зловмисник зможе віддалено модифікувати прошивку будь-якого Logitech-Донглу через USB? Тоді з близьких донглів можна скласти мережу ретрансляторів і збільшити дистанцію витоку. Хоча «фінансово забезпеченому» зловмиснику сучасні засоби радіоприймання з високоселективними системами, чутливими радіоприймачами з малим часом перебудови частоти та вузькоспрямованими антенами дозволять «слухати» клавіатурне введення та натискати клавіші навіть із сусідньої будівлі.

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Професійне обладнання для радіоприймання

Оскільки бездротовий канал передачі даних клавіатури Logitech досить добре захищений, знайдений вектор атаки вимагає фізичного доступу до ресивера, що сильно обмежує атакуючого. Єдиним варіантом захисту в даному випадку могло б бути використання механізмів криптографічного захисту для прошивки ресивера, наприклад перевірка підпису прошивки, що завантажується на стороні ресивера. Але, на жаль, NRF24 це не підтримує і в рамках поточної архітектури пристрою реалізувати захист неможливо. Так що бережіть ваші донгли, адже описаний варіант атаки потребує фізичного доступу до них.

Бережіть ваші донгли: дослідження безпеки ресивера клавіатур Logitech

Raccoon Security – спеціальна команда експертів НТЦ «Вулкан» у галузі практичної інформаційної безпеки, криптографії, схемотехніки, зворотної розробки та створення низькорівневого програмного забезпечення.

Джерело: habr.com

Додати коментар або відгук