Prenez soin de vos dongles: étude de sécurité du récepteur clavier Logitech


Historiquement, la plupart des employés utilisent des claviers et des souris sans fil Logitech. En saisissant à nouveau nos mots de passe, nous, l'équipe de Raccoon Security, nous sommes demandé: Est-il difficile de contourner les mécanismes de sécurité des claviers sans fil? L'étude a révélé des défauts architecturaux et des erreurs logicielles qui permettent d'accéder aux données d'entrée. Sous la coupe - ce que nous avons fait.


Pourquoi Logitech?


À notre avis, les périphériques d'entrée Logitech sont parmi la plus haute qualité et les plus pratiques. La plupart des appareils que nous avons sont basés sur la solution Logitech Unifying - il s'agit d'un récepteur de dongle universel qui vous permet de connecter jusqu'à 6 appareils. Tous les appareils compatibles Logitech Unifying sont étiquetés avec le logo correspondant. Une application facile à utiliser vous permet de contrôler la connexion des claviers sans fil à votre ordinateur. Le processus de connexion du clavier au récepteur dongle Logitech en détail, ainsi que la technologie elle-même, sont traités, par exemple, ici .



Récepteur dongle unificateur Logitech


Le clavier peut être une source d'informations pour les attaquants. Logitech, tenant compte d'une menace possible, a pris soin de la sécurité - il a utilisé l'algorithme de cryptage AES128 dans le canal radio du clavier sans fil. La première pensée qu'un attaquant peut visiter dans cette situation est d'intercepter des informations clés lorsqu'elles sont transmises par voie hertzienne pendant le processus de liaison. Après tout, si vous avez une clé, vous pouvez intercepter les signaux radio du clavier et les décrypter. Cependant, l'utilisateur doit très rarement (ou même jamais) associer le clavier à une procédure Unifying, et un pirate avec une radio à balayage devra attendre longtemps. De plus, tout n'est pas aussi simple avec le processus d'interception lui-même. Dans une étude récente en juin 2019, l'expert en sécurité Marcus Mengs a publié un message sur le réseau concernant la découverte de vulnérabilités dans un ancien firmware pour les dongles USB Logitech. Il permet aux attaquants disposant d'un accès physique aux appareils d'obtenir des clés de cryptage des canaux radio et d'injecter des touches (CVE-2019-13054).


Nous parlerons de notre étude sur la sécurité des dongles Logitech SoC NRF24 de Nordic Semiconductor. Et commençons par la chaîne radio elle-même.


Comment «voler» des données sur le canal radio


Pour l'analyse temps-fréquence du signal radio, nous avons utilisé un récepteur SDR basé sur le dispositif Blade-RF en mode analyseur de spectre (ceci peut également être lu ici ).



Dispositif lame-RF SDR


Nous avons également envisagé la possibilité d'enregistrer des quadratures du signal radio à une fréquence intermédiaire, puis de les analyser à l'aide de méthodes de traitement numérique du signal.


La Commission d'État des radiofréquences de la Fédération de Russie a autorisé l'utilisation d'appareils à courte portée dans la gamme de fréquences 2400–2483,5 MHz. Il s'agit d'une gamme très «peuplée» dans laquelle vous ne pouvez rien rencontrer: Wi-Fi, Bluetooth, diverses télécommandes, systèmes de sécurité, détecteurs sans fil, souris avec claviers et autres appareils numériques sans fil.



Spectre de bande 2,4 GHz


L'environnement d'interférence dans la plage est assez compliqué. Malgré cela, Logitech a pu fournir une réception fiable et stable en utilisant le protocole Enhanced ShockBurst dans l'émetteur-récepteur NRF24 en combinaison avec des algorithmes d'adaptation de fréquence.


Les canaux de la plage sont situés à des positions MHz entières, telles que définies dans la spécification NRF24 Nordic Semiconductor - un total de 84 canaux dans la grille de fréquences. Le nombre de canaux de fréquence utilisés simultanément par Logitech est bien sûr moindre. Nous avons identifié l'utilisation d'au moins quatre. En raison du champ de vision limité de l'analyseur de spectre de signal utilisé, il n'a pas été possible de déterminer la liste exacte des positions de fréquence utilisées, mais cela n'était pas nécessaire. Les informations du clavier vers le récepteur de dongle sont transmises en mode Burst (en allumant brièvement l'émetteur) en utilisant la modulation de fréquence à deux positions GFSK à une vitesse de symbole de 1 Mbaud:



Signal radio clavier en représentation temporaire


Le récepteur utilise le principe de corrélation de la réception, de sorte que le préambule et la partie adresse sont présents dans le paquet transmis. Aucun codage d'interférence n'est appliqué; le corps des données est crypté avec l'algorithme AES128.


En général, l'interface radio du clavier sans fil Logitech peut être caractérisée comme complètement asynchrone avec un multiplexage statistique et une adaptation de fréquence. Cela signifie que l'émetteur clavier change de canal pour transmettre chaque nouveau paquet. Ni le temps de transmission ni le canal de fréquence ne sont connus à l'avance du récepteur, et seule leur liste est connue. Le récepteur et l'émetteur se rencontrent dans le canal grâce aux algorithmes convenus pour le contournement et l'écoute des fréquences, ainsi que des mécanismes de confirmation ShockBurst améliorés. Nous n'avons pas cherché à savoir si la liste des chaînes était statique. Son changement est probablement dû à l'algorithme d'adaptation de fréquence. Quelque chose de proche de la méthode de saut de fréquence (accord pseudo-aléatoire de la fréquence de fonctionnement) est deviné dans l'utilisation de la ressource fréquence de la gamme.


Ainsi, dans les conditions d'incertitude temps-fréquence, pour assurer la réception de tous les signaux du clavier, un attaquant devra surveiller en permanence toute la grille de fréquence d'une gamme de 84 positions, ce qui nécessite un temps considérable. Ici, il devient clair pourquoi la vulnérabilité d'extraction de clé via USB (CVE-2019-13054) dans les sources se positionne comme la capacité d'injecter des touches, plutôt que de permettre à un attaquant d'accéder aux données saisies à partir du clavier. De toute évidence, l'interface radio du clavier sans fil est assez compliquée et fournit une communication radio fiable entre les appareils Logitech dans des conditions d'interférence difficiles dans la bande 2,4 GHz.


Un regard sur le problème de l'intérieur


Pour la recherche, nous avons choisi l'un de nos claviers Logitech K330 et dongle Logitech Unifying.



Logitech K330


Regardons à l'intérieur du clavier. Un élément intéressant à étudier sur la carte est la puce SoR NRF24 de Nordic Semiconductor.



SoC NRF24 sur le clavier sans fil Logitech K330


Le firmware est situé dans la mémoire interne, les mécanismes de lecture et de débogage sont désactivés. Malheureusement, le firmware n'a pas été publié en open source. Par conséquent, nous avons décidé d'aborder le problème de l'autre côté - pour étudier le contenu interne du récepteur de dongle Logitech.


Le «monde intérieur» du récepteur de dongle est assez intéressant. Le dongle est facilement démontable, embarque à bord du NRF24 familier dans une version avec un contrôleur USB intégré et peut être reprogrammé à la fois du côté USB et directement par le programmeur.



Dongle Logitech sans boîtier


Puisqu'il existe un mécanisme de mise à jour régulière du micrologiciel utilisant l'application Firmware Update Tool (à partir de laquelle vous pouvez extraire la version du micrologiciel mise à jour), il n'est pas nécessaire de rechercher le micrologiciel à l'intérieur du dongle.


Ce qui a été fait: le firmware RQR_012_005_00028.bin a été extrait du corps de l'application Firmware Update Tool. Pour vérifier son intégrité, le contrôleur de dongle a été connecté par une boucle au programmateur ChipProg-48 :



Câble dongle Logitech vers programmateur ChipProg 48


Pour contrôler l'intégrité du micrologiciel, celui-ci a été placé avec succès dans la mémoire du contrôleur et a fonctionné correctement, le clavier et la souris ont été connectés au dongle via Logitech Unifying. Il est possible de remplir le firmware modifié en utilisant le mécanisme de mise à jour standard, car il n'y a pas de mécanisme de protection cryptographique pour le firmware. À des fins de recherche, nous avons utilisé une connexion physique au programmeur, car le débogage est beaucoup plus rapide de cette façon.


Recherche de firmware et attaque des entrées utilisateur


La puce NRF24 est conçue sur la base du cœur de calcul Intel 8051 dans l'architecture traditionnelle de Harvard. Pour le cœur, l'émetteur-récepteur agit comme un périphérique et est situé dans l'espace d'adressage comme un ensemble de registres. La documentation de la puce et les exemples de code source peuvent être trouvés sur Internet, donc le démontage du firmware n'est pas difficile. Au cours de l'ingénierie inverse, nous avons localisé les fonctions de réception des données sur les frappes du canal radio et de les convertir au format HID pour la transmission à l'hôte via l'interface USB. Dans les adresses de mémoire libre, un code d'injection a été placé, qui comprenait des outils pour intercepter le contrôle, enregistrer et restaurer le contexte d'exécution d'origine, ainsi qu'un code fonctionnel.


Un paquet pour appuyer ou relâcher une touche reçue d'un canal radio est déchiffré, converti en un rapport HID standard et envoyé à l'interface USB comme à partir d'un clavier normal. Dans le cadre de l'étude, la partie la plus intéressante pour nous est la partie du rapport HID contenant l'octet des indicateurs de modification et un tableau de 6 octets avec des codes de touche (pour référence, des informations sur le HID sont ici ).


Structure du rapport 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; 

Juste avant le transfert de la structure HID à l'hôte, le code injecté prend le contrôle, copie 8 octets de données HID natives en mémoire et les envoie au canal radio latéral sous forme claire. En code, cela ressemble à ceci:


 //~~~~~~~~~ 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 ~~~~~~~~~~~~~~~~~~~~~~~~~< 

Le canal latéral est organisé à une fréquence définie par nous avec certaines caractéristiques de la vitesse de manipulation et de la structure des paquets.


Le fonctionnement de l'émetteur-récepteur dans la puce NRF24 est basé sur un graphique d'état, dans lequel le protocole Enhanced ShockBurst est entré de manière organique. Nous avons découvert qu'immédiatement avant le transfert des données HID vers l'interface USB hôte, l'émetteur-récepteur était en état IDLE. Cela permet de reconfigurer en toute sécurité pour travailler dans le canal latéral. Le code injecté intercepte la commande, enregistre la configuration originale de l'émetteur-récepteur dans son intégralité et la transfère au nouveau mode de transmission sur le canal latéral. Le mécanisme d'accusé de réception ShockBurst amélioré est désactivé dans ce mode, les données HID en clair sont transmises à l'air. La structure du paquet dans le canal latéral est illustrée dans la figure ci-dessous, les diagrammes de forme d'onde ont été obtenus après démodulation et avant restauration de la synchronisation des données d'horloge. La valeur d'adresse est sélectionnée pour la commodité de l'identification visuelle du paquet.



Burst Burst Signal démodulé


Une fois la transmission du paquet vers le canal latéral terminée, le code injecté restaure l'état de l'émetteur-récepteur. Maintenant, il est à nouveau prêt à travailler en mode normal dans le contexte du firmware d'origine.


Dans les régions de fréquence et temps-fréquence, le canal latéral ressemble à celui illustré dans la figure:



Représentation spectrale et temps-fréquence du canal latéral


Pour tester le fonctionnement de la puce NRF24 avec firmware modifié, nous avons assemblé un support qui comprenait un dongle Logitech avec firmware modifié, un clavier sans fil et un récepteur assemblés sur la base du module chinois avec la puce NRF24.



Diagramme d'interception radio du clavier sans fil Logitech



Module basé sur NRF24


Sur le stand pendant le fonctionnement normal du clavier après l'avoir connecté au dongle Logitech, nous avons observé la transmission de données ouvertes sur les touches du canal radio secondaire et la transmission normale de données cryptées dans l'interface radio principale. Ainsi, nous avons pu fournir une interception directe de l'entrée clavier de l'utilisateur:



Résultat d'interception du clavier


Le code injecté introduit de légers retards dans le fonctionnement du firmware du dongle. Cependant, ils sont trop petits pour être remarqués par l'utilisateur.


Comme vous pouvez l'imaginer, n'importe quel clavier Logitech compatible avec la technologie Unifying peut être utilisé pour un tel vecteur d'attaque. Étant donné que l'attaque vise le récepteur Unifying, qui est inclus avec la plupart des claviers Logitech, elle ne dépend pas du modèle de clavier spécifique.


Conclusion


Les résultats de l'étude suggèrent que les attaquants pourraient utiliser le scénario envisagé: si le pirate remplace la victime par un récepteur de dongle pour le clavier sans fil Logitech, il sera en mesure de trouver les mots de passe pour les comptes de la victime avec toutes les conséquences qui en découlent. N'oubliez pas que l'injection de touches est également possible, ce qui signifie qu'il n'est pas difficile d'exécuter du code arbitraire sur l'ordinateur de la victime.


Que se passe-t-il si un attaquant peut modifier à distance le firmware d'un dongle Logitech via USB? Ensuite, à partir de dongles à proximité, vous pouvez ajouter un réseau de répéteurs et augmenter la distance de fuite. Bien que l'attaquant "financièrement sûr" ait une réception radio moderne avec des systèmes hautement sélectifs, des radios sensibles avec un temps de réglage de fréquence court et des antennes étroitement orientées, elles vous permettront d '"écouter" la saisie au clavier et d'appuyer sur les touches même depuis un bâtiment voisin.



Équipement radio professionnel


Comme le canal de données sans fil du clavier Logitech est assez bien protégé, le vecteur d'attaque trouvé nécessite un accès physique au récepteur, ce qui limite considérablement l'attaquant. La seule option de protection dans ce cas pourrait être l'utilisation de mécanismes de protection cryptographiques pour le firmware du récepteur, par exemple, la vérification de la signature du firmware téléchargé du côté du récepteur. Mais, malheureusement, NRF24 ne prend pas en charge cela et il est impossible de mettre en œuvre une protection dans l'architecture de périphérique actuelle. Prenez donc soin de vos dongles, car la version décrite de l'attaque nécessite un accès physique à ceux-ci.



Raccoon Security est une équipe spéciale d'experts du Centre scientifique et technique Volcano dans le domaine de la sécurité des informations pratiques, de la cryptographie, des circuits, de la rétro-ingénierie et de la création de logiciels de bas niveau.

Source: https://habr.com/ru/post/fr479374/


All Articles