
Слабое шифрование в беспроводной клавиатуре Acer SK-9662 позволяет злоумышленнику, находящемуся в физической близости, как расшифровывать беспроводные нажатия клавиш, так и внедрять произвольные беспроводные нажатия клавиш.
Я обнаружил слабое шифрование, используемое в беспроводном протоколе клавиатуры Acer Wireless Keyboard SK-9662 (FCC ID: H4IKB9662). Это слабое шифрование позволяет злоумышленнику легко отслеживать и записывать нажатия клавиш, а также вводить произвольные нажатия.
Клавиатура использует чип Texas Instruments CC2545, передавая данные по протоколу Enhanced Shockburst, разработанному Nordic Semiconductors. Полезная нагрузка состоит из 12 байт: первый байт, по-видимому, является константой (в моих тестах — 0x48). Второй байт — это байт модификатора (Ctrl, Shift и т.д.), третий и четвёртый — потребительские кнопки и кнопки управления питанием. С пятого по десятый байты — это коды клавиш. Одиннадцатый байт выполняет роль контрольной суммы, а двенадцатый байт — это случайное число, используемое для шифрования.
Шифрование полезной нагрузки начинается с генерации случайного байта из радиошума. Другой байт, хранящийся в прошивке (keyvalue), используется в качестве ключа для AES. Оба ключа и случайный байт дополняются нулями до 128 бит и отправляются на сопроцессор AES на CC2545. Сопроцессор AES настроен на режим CBC с нулевым IV. Вывод сопроцессора AES будет называться xorkey. Первые одиннадцать байт полезной нагрузки XORятся с соответствующими байтами из xorkey. Случайный байт является последним байтом полезной нагрузки, чтобы приёмник мог расшифровать её.
Расшифровка полезной нагрузки аналогична шифрованию. Двенадцатый байт полезной нагрузки (случайное значение) вместе с keyvalue (известным приёмнику заранее) используется для генерации xorkey и XORятся с зашифрованной полезной нагрузкой.
Эта схема шифрования легко обходится из-за использования всего лишь однобайтового ключа AES. Поскольку ключ ограничен только 256 возможными значениями, ключ можно легко подобрать перебором за считанные секунды. Скрипт Python в этом репозитории демонстрирует дешифровку перебором захваченного зашифрованного пакета.
Чтобы использовать эту уязвимость, злоумышленник должен иметь возможность захватывать радиотрафик на частоте 2,4 ГГц. Это требует близкого физического расположения к целевой клавиатуре. Однако, как только захвачен один пакет, ключ AES может быть подобран перебором за секунды, что позволяет вести запись нажатий клавиш и внедрять нажатия в реальном времени, получая доступ к компьютеру жертвы. Популярный инструмент для взлома беспроводных устройств, jackit (https://github.com/insecurityofthings/jackit), может быть расширен для поддержки сниффинга и внедрения нажатий клавиш в клавиатуры SK-9662 поблизости, используя недорогой USB-донгл 2,4 ГГц.
Клавиатура SK-9662 — устаревший продукт. Механизм обновления для этой клавиатуры отсутствует, и пользователям следует прекратить использование уязвимой клавиатуры. Acer рекомендует перейти на более новую модель клавиатуры.