« SE5 IdO sécurité des objets 2024/2025 b1 » : différence entre les versions
(Correction orthographique) |
|||
Ligne 162 : | Ligne 162 : | ||
On peut aussi, via l'extension Ghidra SVD loader, charger le fichier SVD correspondant au STM32 afin d'avoir un affichage de la correspondance des valeurs des registres avec la mémoire du STM32. | On peut aussi, via l'extension Ghidra SVD loader, charger le fichier SVD correspondant au STM32 afin d'avoir un affichage de la correspondance des valeurs des registres avec la mémoire du STM32. | ||
Dans le programme, on peut retrouver : | |||
* Une section dédiée à la création de fichiers PDF. | |||
* Une section dans laquelle le programme récupère les valeurs du capteur de température. | |||
=== 3. Modification du programme === | === 3. Modification du programme === |
Version du 8 janvier 2025 à 14:28
Configuration du routeur wifi pour notre VLAN 11
Le VLAN est apparent sur le réseau, mais il n'y a pas d'accès Internet.
Pourtant, il semble que nous ayons la même configuration que les binômes qui avaient un wifi fonctionnel.
Configuration de l'interface eth0 (172.26.145.101) et eth1 (172.16.11.111) sur la VM SE5-WIJSMAN-LEFRANC sur Capbreton.
Dans la VM, configuration de FreeRADIUS:
/etc/freeradius/3.0/users:
louis Cleartext-Password := "glopglop" MS-CHAP-Use-NTLM-Auth := Yes
/etc/freeradius/3.0/clients.conf:
client wifi_ap { ipaddr = 172.26.145.1 secret = glopglop shortname = VM_binome_11 }
Sur le routeur CISCO:
Mise en place d'un point d'accès VM_binome_11 avec comme mot de passe "glopglop" en suivant les commandes du wiki.
ssh -l admin -o KexAlgorithms=diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 -o HostKeyAlgorithms=ssh-rsa -c aes128-cbc,3des-cbc,aes192-cbc,aes256-cbc 172.26.145.1
... aaa new-model aaa authentication login eap_binome_11 group radius_binome_11 radius-server host 172.26.145.101 auth-port 1812 acct-port 1813 key glopglop aaa group server radius radius_binome_11 server 172.26.145.101 auth-port 1812 acct-port 1813 ! ... dot11 ssid VM_binome_11 vlan 411 authentication open eap eap_binome_11 authentication network-eap eap_binome_11 authentication key-management wpa mbssid guest-mode ! ... interface Dot11Radio0 encryption vlan 411 mode ciphers aes-ccm ... ! ... interface Dot11Radio0.11 encapsulation dot1Q 411 bridge-group 11 ! interface GigabitEthernet0.11 encapsulation dot1Q 411 bridge-group 11 !
Piratage d’objets connectés
Objectif :
Notre objectif dans un premier temps est de pirater une sonnette sans fil.
Ensuite, nous allons également tenter de cracker un capteur de température LIBERO CS.
Sonnette sans fil
Matériel utilisé :
- PC avec GNU Radio
- SDR HackRF One
Méthodologie :
- Analyse du signal : Nous commençons par analyser le signal envoyé lorsqu'on appuie sur le bouton de la sonnette à l'aide d'un analyseur de spectre.
- Analyse des trames : Nous analysons la trame envoyée à chaque appui sur le bouton. Après une série de tests, nous avons découvert que la trame envoyée est toujours la même.
- Reproduction du signal : Dans un deuxième temps, nous mettons en place un programme sur GNU Radio pour reproduire le signal, afin de faire croire à la sonnette que le bouton a été appuyé.
Première méthode (PARROT) :
On écoute la télécommande et on réémet le signal.
Méthode PARROT où l'on enregistre pour réémettre.
On utilise le programme GNU Radio suivant :
Cela ne fonctionne pas, nous avons donc opté pour une autre méthode.
Méthode 2 : Recréation du signal
Nous avons créé un programme GNU Radio plus complexe qui recrée le signal de la télécommande.
Le signal est le suivant :
75 trames avec le codage binaire suivant :
0001010011000111100110000
Les timings sont les suivants :
- 0 : 0,2 ms high et 0,6 ms low
- 1 : 0,6 ms high et 0,2 ms low
Nous prenons le PGCD de 6 et 2, qui est 2, donc on prend 0,2 ms comme plus petit pas.
On code de manière suivante :
- 0 = 1000
- 1 = 1110
Par exemple, pour coder le message "101", on envoie 1110 1000 1110.
Nous utilisons un sampling_rate de 10 MHz, mais nous voulons envoyer un signal dont la fréquence maximale est de 5 kHz.
Nous utilisons donc un bloc de rééchantillonnage.
Cela fonctionne et nous parvenons à actionner la sonnette via la SDR !
Capteur de température LIBERO
Le but est de trouver un moyen de contourner le système pour lui faire retenir en mémoire des valeurs différentes de celles normales.
Nous avons démonté le boîtier afin de visualiser le PCB et les composants.
Après une analyse, on peut remarquer le capteur de température, comme indiqué sur l'image suivante.
- Une possibilité serait de modifier le comportement du capteur en ajoutant une résistance, par exemple.
- Une autre possibilité serait de reprogrammer le microcontrôleur afin de modifier son comportement. Il s'agit d'un STM32L073CZTb.
Pour cela, il faut mapper chaque pin pour pouvoir se connecter directement sur les testpoints.
Le but est déjà de repérer les pins qui serviront à la programmation, soit :
- NRST (Pin 7) - Pin Reset.
- SWDIO (Pin 34, PA13) - Serial Wire Debug Data Input/Output.
- SWCLK (Pin 35, PA14) - Serial Wire Debug Clock.
- VSS (Pin 8 ou 33) - Pin Ground.
- VDD (Pin 9 ou 36) - Power supply.
Étape de contournement :
- Récupération du programme en se connectant sur les pins du port SWD
- Analyse du programme via Ghidra
- Modification du programme afin de mettre en défaut le système
- Réinjection du programme via le port SWD
- Vérification de la bonne réalisation du contournement
1. Récupération du programme
Avec le logiciel STM32 programmeur, il est possible en se connectant via un ST Link de récupérer le programme avec un READ ALL qui donne un fichier .bin.
2. Analyse du programme
Avec le logiciel Ghidra, il est possible de charger le fichier .bin en configurant qu'il s'agit d'un programme ARM Cortex LE 32 bits.
Le logiciel Ghidra fait ensuite une analyse du code, permettant de récupérer une vue assembleur du programme et aussi une vue en C.
On peut aussi, via l'extension Ghidra SVD loader, charger le fichier SVD correspondant au STM32 afin d'avoir un affichage de la correspondance des valeurs des registres avec la mémoire du STM32.
Dans le programme, on peut retrouver :
- Une section dédiée à la création de fichiers PDF.
- Une section dans laquelle le programme récupère les valeurs du capteur de température.
3. Modification du programme
En cherchant à modifier ce qui est récupéré dans le programme via l'ADC du STM32, nous cherchons le registre ADC_DR qui correspond au décalage 0x40 de l'ADC. Nous trouvons à quel endroit la mesure est faite.
En choisissant, pour l'exemple, de modifier le programme afin que ce qui sera récupéré dans ce programme ne soit plus la valeur des données de l'ADC, mais la valeur du registre des interruptions ISR, ce qui sans nul doute va générer un problème concernant l'affichage des températures dans le PDF.