
Исторически так сложилось, че повечето служители използват безжични клавиатури и мишки на компанията Logitech. При повторно въвеждане на паролите си, ние – специалистите от екипа Raccoon Security – се запитахме: колко трудно е да се заобиколят защитните механизми на безжичните клавиатури? Проведеното изследване разкри архитектурни недостатъци и софтуерни грешки, които позволяват достъп до въведените данни. Подробности – какво постигнахме.
Защо Logitech?
Според нас, входните устройства на компанията Logitech са едни от най-качествените и удобни. Повечето от устройствата, които имаме, са базирани на решението Logitech – универсален донгъл-приемник, който позволява свързване на до 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 GHz.
Поглед върху проблема отвътре
За изследването избрахме една от наличните клавиатури Logitech K330 и донгъл Logitech Unifying.

Logitech K330
Нека погледнем вътре в клавиатурата. Интересен елемент за изследване на платката е чипът SoC NRF24 от Nordic Semiconductor.

SoC NRF24 на платката на безжичната клавиатура Logitech K330
Фърмуерът е разположен в вътрешната памет, механизмите за четене и отстраняване на грешки са изключени. За съжаление, фърмуерът не е публикуван в откритите източници. Затова решихме да подходим към проблема от друга страна – да проучим вътрешното съдържание на донгъл-приемника Logitech.
Вътрешният свят на донгл приемника е устроен доста интересно. Донгълът лесно се разглобява, разполага с познатия NRF24 с вграден USB контролер и може да бъде препрограмиран както от USB, така и директно от програмист.

Донгъл Logitech без корпус
Тъй като съществува стандартен механизъм за обновяване на фърмуера с помощта на (от което може да бъде извлечена актуализирана версия на фърмуера), няма нужда да се търси фърмуерът вътре в донгъл.
Какво беше направено: от тялото на приложението Firmware Update Tool беше извлечен фърмуерът RQR_012_005_00028.bin. За проверка на целостта му контролерът на донгъла беше свързан с кабел :

Кабелната връзка на донгъла 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 ~~~~~~~~~~~~~~~~~~~~~~~~~<Побочният канал се организира на установената от нас честота с определени характеристики на скоростта на манипулация и структурата на пакета.
Работа на трансивера в чипа е основана на графа състояния, в който органично е вписан протоколът 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 – специален екип от експерти на НТЦ «Вулкан» в областта на практическата информационна безопасност, криптографията, схемотехниката, обратната разработка и създаването на нискониво софтуер.
Източник: habr.com
