La Radio logicielle, ou plus communément appelée SDR (Software Defined Radio), est techniquement un récepteur radio (1) ordinaire dans lequel on a remplacé plusieurs modules électroniques (« Hardware ») par des modules logiciels (« Software ») fonctionnellement identiques (modulateur/démodulateur, codeur/décodeur, etc.).
La multiplication de ces modules logiciels permet de traiter le signal électronique de manière beaucoup plus souple qu’auparavant où il fallait disposer de chaînes électroniques de traitement chères, consommatrices et encombrantes. Nous allons montrer les étapes à suivre pour analyser et comprendre (« hacker ») le flux radio et le protocole de communication d’un objet connecté simple. Car l’étendue des activités de la SDR va du hacking des dispositifs d’ouverture de portes jusqu’à la mise en œuvre de réseaux cognitifs…
par Julian Alcaraz et Arnaud Lerailler
Laboratoire (C + V) O – Laboratoire de Cryptologie et Virologie Opérationnelles – Esiea
La SDR fut d’abord développée chez les professionnels des télécommunications et dans le domaine militaire. Depuis 2012, elle s’est diffusés dans le grand public et plus particulièrement auprès des radioamateurs grâce à Eric Fry, Antti Palosaari et au groupe « Osmocom ». Ces passionnés (hackers) ont analysé un adaptateur USB dédié à la réception de la Télévision Numérique Terrestre (TNT). Cette analyse a montré que la réception avec cette clé était réalisée en partie par un module électronique intégré à la clé (le chipset « RTL2832U ») et que le reste du traitement du signal électronique était réalisé logiciellement par le pilote de périphérique (« driver »). Ainsi, le chipset n’assure plus « que » les fonctions électroniques non « informatisables » du récepteur radio.
Cette étude a ainsi donné naissance aux premières applications SDR grand public puisqu’il est ainsi devenu possible avec ces clés et des logiciels spécifiquement développés, d’analyser et de traiter n’importe quelles émissions radio situées dans les bandes de fréquences reçues par le chipset RTL : soit les bandes VHF et UHF (de 22 MHz à 2,2 GHz) où l’on retrouve notamment les fréquences de la TNT.
Peu après, des spécialistes ont développé leurs propres prototypes SDR afin d’améliorer la partie électronique (qualité du signal reçu, gamme de fréquences plus large, etc.). Ils ont bien sûr développé des logiciels de traitements du signal plus universels qui sont pour la plupart des logiciels libres.
Analyse radio d’un objet communiquant
Nous allons montrer dans ce chapitre les étapes à suivre pour analyser et comprendre (« hacker ») le flux radio et le protocole de communication d’un objet connecté simple : un carillon sans fil vendu dans les grandes enseignes du bricolage (une liaison radio assure la communication entre le bouton de commande extérieur et le carillon qui est situé dans la maison). Notre SDR sera constitué d’un module électronique de type « HackRF » (développé par Great Scott Gadgets) et de différents logiciels libres qui réaliseront le traitement du signal reçu par le « HackRF ».
En début d’étude, nous devons repérer la fréquence de fonctionnement du carillon. Nous utilisons pour cela un analyseur de spectre afin de scruter l’espace électromagnétique allant de 0 à 6 GHz (capacité maximale de notre équipement).
On remarque la fréquence de fonctionnement de notre carillon autour de 440 MHz (ligne verticale bleue). Nous réglons alors l’analyseur sur cette fréquence afin de mieux visualiser l’émission radio du carillon.
Nous pouvons ainsi déterminer que la fréquence centrale (ou fréquence porteuse) de notre signal est de 434.041 MHz.
Avec cette information, nous laissons notre analyseur de spectre pour utiliser le HachRF afin de tenter de comprendre de quoi est constituée l’émission radio. Nous utilisons pour cela « GNU Radio » qui est un logiciel libre de traitement du signal.
Le premier bloc (« Osmocom Source ») permet de configurer le HackRF afin qu’il se cale sur la fréquence du carillon. On filtre ensuite notre signal (bloc « Low Pass Filter » pour réduire le bruit et pour obtenir une courbe plus lisse. Enfin, en sortie, nous connectons une interface graphique de type « oscilloscope » (bloc « WX GUI Scope Sink).
Voici ce que nous observons sur cette interface quand nous activons la télécommande de la sonnette :
Notre petite expérience nous permet de déterminer que ce signal correspond à une modulation de type ASK (Amplitude Switch Key) encore appelée OOSK (pour On/Off Shift Keying). Cette modulation très simple, consiste à émettre une fréquence pour transmettre un « 1 binaire », et ne rien émettre pour un « 0 binaire ». Pour information, la forme de l’émission visualisée par notre analyseur de spectre (Fig3) pouvait aussi nous permettre de déterminer ce type de modulation.
Avec cette information, nous pouvons ajouter le bon bloc de démodulation dans notre logiciel SDR. Nous ajoutons donc le bloc « Complex to Mag » qui est un « détecteur d’enveloppe » (calcul du module du signal).
Nous pouvons désormais observer le signal démodulé qui laisse apparaître un train binaire qu’il nous faut comprendre :
On peut distinguer deux types de formes : une large et une autre plus petite. On admet que la forme large vaut « 0 » et que l’autre vaut « 1 ». Ce qui nous donne le code suivant : « 0001 1100 1010 0111 0010 1010 0110 1100 ».
Afin de vérifier notre hypothèse, nous ajoutons à notre SDR des blocs nous permettant de récupérer les trames dans un fichier :
La représentation hexadécimale du fichier généré est la suivante. Cette représentation nous aide à tenter de visualiser le codage ou la structure de l’information transmise (recherche de séquences, de répétitions, de codes cycliques, de caractères, etc.) :
Voici notre analyse : entre la case mémoire 00002320 et 00002340, il n’y a que des « 01 ». Cela peut s’apparenter à une séquence de préparation qui alerte (réveille) le récepteur et lui donne une horloge de travail (calage en fréquence).
Si notre hypothèse est bonne, le début du message transmis se situerait à la case mémoire 00002347 (début du premier bloc rouge). En première analyse, on s’aperçoit que le train binaire est constitué d’une succession de trames ne représentant que deux modèles (« pattern ») : « 00-00-00-00-00-00-00-01-01-01 » (trame rouge) et « 00-00-01-01-01-01-01-01-01-01 » (trame bleue).
On peut imaginer que chaque modèle de trame représente un état binaire « 0 » ou « 1 ». Cela nous donne le code suivant (entre la case mémoire 00002340 et la case mémoire 00002480) : 0001 1100 1010 0111 0010 1010 0110 1100.
Le HackRF, équipement SDR utilisé pour cette étude permet non seulement de recevoir, mais aussi de transmettre. Nous avons donc créé un émetteur avec le même logiciel et tenté d’envoyer notre signal recodé par la même logique… et le carillon s’est mis à sonner.
Conclusion
Pour le moment, les radios logicielles dans le domaine de la cybersécurité sont exploitées essentiellement pour des analyses et des tests d’intrusion sur les systèmes de transmission sans fils. La SDR ne se limite pas à cela. L’étendue des activités va du hacking des dispositifs d’ouverture de portes jusqu’à la mise en œuvre de réseaux cognitifs. Cette idée de réseau cognitif fut présentée par Joseph Mitola en 1998. Il s’agit d’un système radio ayant la capacité de détecter son cadre d’utilisation afin de se paramétrer de manière autonome. Sur ce type de réseau, un équipement peut détecter intelligemment les canaux de communication libres afin de s’y déplacer pour optimiser l’utilisation du spectre électromagnétique. Cette technologie n’a pas encore été mise en place par les opérateurs, mais cela ne devrait pas tarder, car les gains attendus sont immenses.
Cependant, on peut facilement imaginer que la SDR dans les mains de hackers ne disposant pas d’une formation éthique solide leur permet aujourd’hui et à moindres frais d’attaquer les systèmes en exploitant les vulnérabilités des couches basses.
(1) Appelé radio hétérodyne, elle consiste à transposer un signal utile (voix, images, données) sur une fréquence haute (appelée porteuse) afin de bénéficier d’une de ses caractéristiques (la propagation dans un milieu).