« SE5 IdO sécurité des objets 2024/2025 b1 » : différence entre les versions

De wiki-se.plil.fr
Aller à la navigation Aller à la recherche
Aucun résumé des modifications
Ligne 108 : Ligne 108 :
75 trames avec le codage binaire suivant :
75 trames avec le codage binaire suivant :


<blockquote>0001010011000111100110000</blockquote>
<blockquote>0001010011000111100110000[[Fichier:Trame.jpg|vignette|Visualisation de la trame émise par le SDR.]]
[[Fichier:Montage fonctionel.png|vignette|Programme qui recrée le signal à émettre et l'émet.]]</blockquote>


Les timings sont les suivants :
Les timings sont les suivants :
Ligne 130 : Ligne 131 :
Cela fonctionne et nous parvenons à actionner la sonnette via la SDR !
Cela fonctionne et nous parvenons à actionner la sonnette via la SDR !


[[Fichier:Trame.jpg|vignette|Visualisation de la trame émise par le SDR.]]
[[Fichier:Montage fonctionel.png|vignette|Programme qui recrée le signal à émettre et l'émet.]]


== '''Capteur de température LIBERO:''' ==
== '''Capteur de température LIBERO:''' ==
Ligne 145 : Ligne 144 :




* Une autre possibilité serait de reprogrammer le microcontrôleur afin de modifier son comportement. Il s'agit d'un '''STM32L 073CZTb.'''
* 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.
Pour cela, il faut mapper chaque pin pour pouvoir se connecter directement sur les testpoints.
Ligne 151 : Ligne 150 :


Le but est déja de reperer les pins qui serviront a la programation, soit:
Le but est déja de reperer les pins qui serviront a la programation, soit:
[[Fichier:Stm32.png|vignette]]
* '''NRST (Pin 7)''' - Reset pin.
* '''NRST (Pin 7)''' - Reset pin.
* '''SWDIO (Pin 34, PA13)''' - Serial Wire Debug Data Input/Output.
* '''SWDIO (Pin 34, PA13)''' - Serial Wire Debug Data Input/Output.
* '''SWCLK (Pin 35, PA14)''' - Serial Wire Debug Clock.
* '''SWCLK (Pin 35, PA14)''' - Serial Wire Debug Clock.
* '''VSS (Pin 8 or 33)''' - Ground pin.
* '''VSS (Pin 8 or 33)''' - Ground pin.[[Fichier:Screenshot from 2025-01-06 07-31-09.png|vignette|Ghidra found DR]]
* [[Fichier:W.jpg|vignette|Mapping des testpoints du PCB aux pins de programmation.]]'''VDD (Pin 9 or 36)''' - Power supply.
* [[Fichier:Ghidra registre modifier.png|vignette|Modification de la valeur du registre charger dans la variable]]'''VDD (Pin 9 or 36)''' - Power supply.
 
=== Etape 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 qui permet 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.
 
=== 3. Modification du programme ===
En cherchant à modifier ce qui est récupérer dans le programme via l'ADC du STM32. Donc en cherchant le registre ADC_DR qui correspond au décalage 0x40 de l'ADC on trouve à quel endroit la mesure est faite.
 
En choisissant pour l'exemple de modifier le programme afin que ce qui sera récupérer dans ce programme ne sera 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.
 
=== 4. Reinjection du programme ===
 
=== 5. Vérification du résultat ===

Version du 6 janvier 2025 à 10:33

Configuration du routeur wifi pour notre Vlan 11

le vlan est aparent sur le reseau mais pas d'acces internet

pourtant is semble que on a la meme configuration que les binomes qui avaient un wifi fonctionel.



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 poin d'acces VM_binome_11 avec comme mot de passe glopglop en suivant les comandes 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.

Puis nous allons egalement tenter de cracker un capteur de temperature LIBERO CS.

Sonnete sans fil:

Matériel utilisé :

  • PC avec GNU Radio
  • SDR HackRF One

Méthodologie :

Screenshot from 2024-10-21 14-25-36.png
  1. 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.
  2. 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.
  3. 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 :

Méthode PARROT où l'on enregistre pour réémettre.

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

Visualisation de la trame émise par le SDR.
Programme qui recrée le signal à émettre et l'émet.

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 2 est 2 donc on prend 0,2 ms comme plus petit pas:

On code de maniere suivante:

  • 0 = 1000
  • 1 = 1110

Par exemple pour coder le message "101" on envoie 1110 1000 1110.

Nous utilisons un sampling_rate de 10MHz mais nous voulons envoyer un signal dont la frequence maximale est 5KHz.

Nous utilisons donc un bloc ressampling.

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.

Capteur de température

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éja de reperer les pins qui serviront a la programation, soit:

  • NRST (Pin 7) - Reset pin.
  • SWDIO (Pin 34, PA13) - Serial Wire Debug Data Input/Output.
  • SWCLK (Pin 35, PA14) - Serial Wire Debug Clock.
  • VSS (Pin 8 or 33) - Ground pin.
    Ghidra found DR
  • Modification de la valeur du registre charger dans la variable
    VDD (Pin 9 or 36) - Power supply.

Etape de contournement:

  1. Récupération du programme en se connectant sur les pins du port SWD
  2. Analyse du programme via ghidra
  3. Modification du programme afin de mettre en défaut le système
  4. Réinjection du programme via le port SWD
  5. 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 qui permet 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.

3. Modification du programme

En cherchant à modifier ce qui est récupérer dans le programme via l'ADC du STM32. Donc en cherchant le registre ADC_DR qui correspond au décalage 0x40 de l'ADC on trouve à quel endroit la mesure est faite.

En choisissant pour l'exemple de modifier le programme afin que ce qui sera récupérer dans ce programme ne sera 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.

4. Reinjection du programme

5. Vérification du résultat