
History has shown that most employees use wireless keyboards and mice from Logitech. As we entered our passwords once again, we – the Raccoon Security team specialists – asked ourselves: how difficult is it to bypass the protection mechanisms of wireless keyboards? The research conducted revealed architectural flaws and software bugs that allow access to the data being entered. Below, we present our findings.
Why Logitech?
In our opinion, Logitech input devices are among the highest quality and most convenient. Most of the devices we have are based on Logitech's solution. is a universal dongle receiver that allows you to connect up to 6 devices. All devices compatible with Logitech Unifying technology are marked with the corresponding logo. Easy to use, it allows you to manage the connection of wireless keyboards to the computer. The process of connecting a keyboard to the Logitech dongle receiver, as well as the technology itself, is detailed, for example, The dongle receiver with Logitech Unifying support .

can become a source of information for attackers. Considering the potential threat, Logitech has ensured security by applying the AES128 encryption algorithm in the wireless keyboard's radio channel. The first thought that might occur to an attacker in this situation is to intercept key information during its transmission over the radio channel during the pairing procedure. After all, with the key, one can intercept the keyboard's radio signals and decrypt them. However, users very rarely (or even never) need to pair their keyboards using the Unifying procedure, and a hacker with a scanning radio receiver will have to wait a long time. Moreover, the process of interception is not that simple either. In the latest study in June 2019, security expert Markus Mengs published online
on discovering a vulnerability in the old firmware of Logitech USB dongles. It allows attackers with physical access to the devices to obtain the encryption keys for the radio channel and inject key presses (CVE-2019-13054). We will discuss our security research of the Logitech dongle based on the NRF24 SoC from Nordic Semiconductor. Let's start, perhaps, with the radio channel.
Мы расскажем про наше исследование безопасности донгла Logitech на базе SoC NRF24 от Nordic Semiconductor. А начнем, пожалуй, с самого радиоканала.
Jak dane „przemieszczą się” w radiokanałach
Do analizy czasowo-częstotliwościowej sygnału radiowego wykorzystaliśmy odbiornik SDR oparty na urządzeniu Blade-RF w trybie analizatora widma (można o tym również przeczytać ).

Urządzenie SDR Blade-RF
Rozważyliśmy także możliwość zapisania kwadratur sygnału radiowego na częstotliwości pośredniej, aby następnie przeanalizować je przy użyciu metod cyfrowego przetwarzania sygnałów.
Państwowa Komisja ds. Częstotliwości w Federacji Rosyjskiej na użycie przez urządzenia o małym zasięgu pasma częstotliwości 2400–2483,5 MHz. To bardzo „zatłoczone” pasmo, w którym można spotkać cokolwiek: Wi-Fi, Bluetooth, różne piloty zdalnego sterowania, systemy alarmowe, bezprzewodowe czujniki, myszki z klawiaturami i inne bezprzewodowe urządzenia cyfrowe.

Widmo pasma 2,4 GHz
Sytuacja zakłóceń w paśmie jest dość skomplikowana. Mimo to firma Logitech zdołała zapewnić niezawodne i stabilne odbieranie dzięki zastosowaniu protokołu Enhanced ShockBurst w nadajniku NRF24 w połączeniu z algorytmami adaptacji częstotliwości.
Kanały w paśmie są rozmieszczone w pozycjach całkowitych MHz, jak określono w NRF24 firmy Nordic Semiconductor – łącznie 84 kanały w siatce częstotliwości. Liczba jednocześnie używanych kanałów częstotliwości przez Logitech jest oczywiście mniejsza. Zidentyfikowaliśmy użycie co najmniej czterech. Z powodu ograniczonej szerokości pasma analizatora widma dokładna lista używanych pozycji częstotliwości nie mogła zostać ustalona, ale nie było to konieczne. Informacja z klawiatury do odbiornika dongle przesyłana jest w trybie Burst (krótkimi aktywacjami nadajnika) z wykorzystaniem dwupozycyjnej modulacji częstotliwości GFSK przy szybkości symboli 1 Mb/s:

Sygnał radiowy z klawiatury w przedstawieniu czasowym
Odbiornik wykorzystuje koherentną zasadę odbioru, dlatego w przesyłanym pakiecie znajdują się preambuła i część adresowa. Kodowanie odporne na zakłócenia nie jest stosowane, a ciało danych jest szyfrowane algorytmem AES128.
Ogólnie rzecz biorąc, interfejs radiowy bezprzewodowej klawiatury Logitech można scharakteryzować jako całkowicie asynchroniczny z statycznym kompresowaniem i adaptacją częstotliwości. Oznacza to, że nadajnik klawiatury przełącza kanał do przesyłania każdego nowego pakietu. Odbiornik nie zna z góry ani czasu transmisji, ani kanału częstotliwości, a zna tylko ich listę. Odbiornik i nadajnik spotykają się na kanale dzięki uzgodnionym algorytmom omijania i nasłuchu częstotliwości, a także mechanizmom potwierdzenia Enhanced ShockBurst. Nie badaliśmy, czy lista kanałów jest statyczna. Prawdopodobnie jej zmiana jest związana z algorytmem adaptacji częstotliwości. Coś bliskiego metodzie PPRC (pseudolosowa przebudowa częstotliwości roboczej) można wywnioskować z użycia zasobów częstotliwości zakresu.
Dlatego w warunkach niepewności czasowo-częstotliwościowej, aby niezawodnie odbierać wszystkie sygnały z klawiatury, napastnik musiałby nieprzerwanie monitorować całą siatkę częstotliwości w zakresie 84 pozycji, co wymaga znacznych nakładów czasowych. Wydaje się oczywiste, dlaczego występuje podatność na wyciąganie klucza przez USB (CVE-2019-13054) pozycjonowana jest jako możliwość wstrzykiwania naciśnięć klawiszy, a nie jako uzyskanie dostępu do danych wprowadzanych z klawiatury przez napastnika. Oczywiście, interfejs radiowy bezprzewodowej klawiatury jest zaprojektowany w dość skomplikowany sposób, zapewniając niezawodną komunikację radiową między urządzeniami Logitech w trudnych warunkach zakłóceń w zakresie 2,4 GHz.
Spojrzenie na problem od środka
Do badania wybraliśmy jedną z posiadanych klawiatur Logitech K330 oraz dongla Logitech Unifying.

Logitech K330
Zajrzyjmy do wnętrza klawiatury. Interesującym elementem do badania na płycie jest chip SoC NRF24 od Nordic Semiconductor.

SoC NRF24 na płycie bezprzewodowej klawiatury Logitech K330
Oprogramowanie umieszczone jest w pamięci wewnętrznej, mechanizmy odczytu i debugowania są wyłączone. Niestety, oprogramowanie nie zostało opublikowane w otwartych źródłach. Dlatego postanowiliśmy podejść do problemu z innej strony – zbadać wewnętrzną zawartość dongla odbiornika Logitech.
Wnętrze dongla odbiornika jest dosyć interesujące. Dongiel łatwo się rozkłada, ma na pokładzie znany nam NRF24 w wydaniu z wbudowanym kontrolerem USB i może być programowany zarówno przez USB, jak i bezpośrednio przez programator.

Dongiel Logitech bez obudowy
Ponieważ istnieje standardowy mechanizm aktualizacji oprogramowania układowego z użyciem (z której można wyodrębnić zaktualizowaną wersję oprogramowania układowego), nie ma potrzeby szukać oprogramowania wewnątrz dongla.
Co zostało wykonane: z aplikacji Firmware Update Tool wyodrębniono oprogramowanie RQR_012_005_00028.bin. Aby sprawdzić jego integralność, kontroler dongla został podłączony taśmą :

Taśma podłączeniowa dongla Logitech do programatora ChipProg 48
Aby kontrolować integralność oprogramowania układowego, zostało ono pomyślnie umieszczone w pamięci kontrolera i działało poprawnie, klawiatura i mysz były podłączone do dongla przez Logitech Unifying. Możliwe jest wgranie zmodyfikowanego oprogramowania układowego poprzez standardowy mechanizm aktualizacji, ponieważ nie przewidziano żadnych mechanizmów kryptograficznej ochrony oprogramowania. My z kolei w celach badawczych stosowaliśmy fizyczne połączenie z programatorem, ponieważ w ten sposób debugowanie trwa znacznie szybciej.
Badanie oprogramowania układowego i atak na wejście użytkownika
Chip NRF24 został zaprojektowany na podstawie rdzenia obliczeniowego Intel 8051 w tradycyjnej architekturze Harvardzkiej. Dla rdzenia transceiver pełni rolę urządzenia peryferyjnego i jest umiejscowiony w przestrzeni adresowej jako zestaw rejestrów. Dokumentację na chip i przykłady kodów źródłowych można znaleźć w Internecie, dlatego dezassemblacja oprogramowania układowego nie stanowi trudności. W trakcie inżynierii odwrotnej zlokalizowaliśmy funkcje pozyskiwania danych o naciśnięciach klawiszy z kanału radiowego oraz przekształcania ich w format HID do przesyłania na hosta przez interfejs USB. W wolnych adresach pamięci umieszczono kod iniekcji, który zawierał narzędzia do przechwytywania kontroli, zapisywania i przywracania oryginalnego kontekstu wykonania, a także kod funkcjonalny.
Pakiet naciśnięcia lub zwolnienia klawisza odebrany od dongla przez kanał radiowy jest dekodowany, przekształcany w standardowy raport HID i przesyłany do interfejsu USB jak z zwykłej klawiatury. W ramach badania szczególnie interesuje nas część raportu HID, która zawiera bajt flag modyfikatora oraz tablicę 6 bajtów z kodami naciśnięć klawiszy (dla informacji o HID. ).
Struktura raportu 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;Bezpośrednio przed przesłaniem struktury HID do hosta wstrzyknięty kod przejmuje kontrolę, kopiuje w pamięci 8 bajtów natywnych danych HID i przesyła je na boczny kanał w postaci niezaszyfrowanej. W kodzie wygląda to następująco:
//~~~~~~~~~ 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 ~~~~~~~~~~~~~~~~~~~~~~~~~<Boczny kanał jest organizowany na ustawioną przez nas częstotliwość z określonymi charakterystykami szybkości manipulacji i struktury pakietu.
Praca transceivera w chipie opiera się na grafie stanów, w który organicznie wpisany jest protokół Enhanced ShockBurst. Ustaliliśmy, że bezpośrednio przed przesłaniem danych HID do interfejsu USB hosta transceiver znajdował się w stanie IDLE. To umożliwia jego bezpieczną rekonfigurację do pracy w bocznym kanale. Wstrzyknięty kod przejmuje kontrolę, zachowuje oryginalną konfigurację transceivera w całości i przekształca go w nowy tryb przesyłu na boczny kanał. Mechanizm potwierdzeń Enhanced ShockBurst w tym trybie jest wyłączony, dane HID są przesyłane w otwartej formie w eter radiowy. Struktura pakietu w bocznym kanale przedstawiona jest na poniższym rysunku, epury sygnału uzyskano po demodulacji i przed przywróceniem synchronizacji taktów danych. Wartość adresu wybrano dla wygody wizualnej identyfikacji pakietu.

Zdemodulowany sygnał pakietu Burst w bocznym kanale
Po zakończeniu przesyłania pakietu w bocznym kanale wstrzyknięty kod przywraca stan transceivera. Teraz znowu jest gotowy do pracy w trybie normalnym w kontekście oryginalnego oprogramowania.
W dziedzinach częstotliwości i czasowo-częstotliwości boczny kanał wygląda, jak pokazano na rysunku:

Spektralne i czasowo-częstotliwościowe przedstawienie bocznego kanału
Aby sprawdzić działanie chipu NRF24 z zmodyfikowanym oprogramowaniem, zbudowaliśmy stanowisko, które obejmowało dongle Logitech z zmienionym oprogramowaniem, bezprzewodową klawiaturę oraz odbiornik oparty na chińskim module z chipem NRF24.

Schemat przechwytywania sygnału radiowego bezprzewodowej klawiatury Logitech

Moduł oparty na NRF24
Na stanowisku, przy normalnej pracy klawiatury po podłączeniu do dongla Logitech, zauważyliśmy przesył otwartych danych dotyczących wciśnięć klawiszy w pobocznym radiokanaale oraz normalne przesyłanie zaszyfrowanych danych w głównym interfejsie radiowym. Dzięki temu udało nam się przechwycić danych dotyczących wprowadzenia przez użytkownika:

Wynik przechwytywania danych wejściowych z klawiatury
Wstrzyknięty kod wprowadza niewielkie opóźnienia w działaniu oprogramowania dongla. Jednak są one zbyt małe, aby użytkownik mógł je zauważyć.
Jak rozumiecie, dla takiego wektora ataku można użyć dowolnej klawiatury Logitech zgodnej z technologią Unifying. Ponieważ atak jest skierowany na odbiornik Unifying, który znajduje się w zestawie większości klawiatur Logitech, nie zależy to od konkretnego modelu klawiatury.
Podsumowanie
Uzyskane wyniki badań prowadzą do refleksji na temat potencjalnego wykorzystania omawianego scenariusza przez cyberprzestępców: jeśli haker wymieni dongle odbiornika bezprzewodowej klawiatury Logitech ofiary, może poznać hasła do kont ofiary, co wiąże się z wszystkimi konsekwencjami. Nie można zapominać, że możliwe jest także wstrzykiwanie wciśnięć klawiszy, co oznacza, że wykonanie dowolnego kodu na komputerze ofiary nie stanowi trudności.
A co jeśli cyberprzestępca będzie mógł zdalnie modyfikować oprogramowanie dowolnego dongla Logitech przez USB? Wtedy z blisko rozmieszczonych dongli można stworzyć sieć retransmiterów i zwiększyć zasięg wycieku. Choć 'finansowo zabezpieczony' cyberprzestępca może korzystać z nowoczesnego sprzętu radiowego z wysokoselektywnymi systemami, wrażliwymi odbiornikami radiowymi o krótkim czasie przestrojenia oraz kierunkowymi antenami, co pozwoli mu 'słuchać' wprowadzania na klawiaturze i naciskać klawisze nawet z sąsiedniego budynku.

Profesjonalny sprzęt do odbioru radiowego
Ponieważ bezprzewodowy kanał transmisji danych klawiatur Logitech jest dość dobrze zabezpieczony, znaleziony wektor ataku wymaga fizycznego dostępu do odbiornika, co mocno ogranicza atakującego. Jedyną opcją ochrony w tym przypadku mogłoby być zastosowanie mechanizmów kryptograficznej ochrony dla oprogramowania odbiornika, np. weryfikacja podpisu ładowanego oprogramowania po stronie odbiornika. Niestety, NRF24 tego nie obsługuje i w ramach obecnej architektury urządzenia wdrożenie ochrony jest niemożliwe. Dlatego chrońcie swoje dongle, ponieważ opisany wektor ataku wymaga fizycznego dostępu do nich.

Raccoon Security – specjalny zespół ekspertów NTC „Wulkan” w dziedzinie praktycznego bezpieczeństwa informacji, kryptografii, schematów elektronicznych, inżynierii odwrotnej oraz tworzenia oprogramowania niskopoziomowego.
Źródło: habr.com
