💾Hardware Hacking

Sites / Vidéos:

Introduction

À l'intérieur d'un appareil intégré se trouve une carte de circuit imprimé (PCB) qui comprend les composants matériels suivants : processeur, mémoire volatile, mémoire non volatile, composants analogiques et interfaces externes.

  1. Le processeur est intégré dans un System on a Chip (SoC) ici au centre. Un processeur (ou unité centrale de calcul, UCC ; en anglais central processing unit, CPU) est un composant présent dans de nombreux dispositifs électroniques qui exécute les instructions machine des programmes informatiques. Avec la mémoire, c'est notamment l'une des fonctions qui existent depuis les premiers ordinateurs. Un processeur construit en un seul circuit intégré est un microprocesseur.

  2. Généralement implémenté dans des puces de RAM dynamique (DRAM), la mémoire volatile est la mémoire que le processeur utilise pendant qu'il est en action. Son contenu est perdu lorsque l'appareil s'éteint.

  3. A l'inverse, la mémoire non volatile est l'endroit où le périphérique intégré stocke les données qui doivent persister après la mise hors tension de l'appareil. Le stockage en mémoire peut prendre la forme d'EEPROM (Electrically Erasable Programmable Read-Only Memory), de mémoire flash ou même de carte SD et disques durs.

Bien que peu intéressant pour la sécurité en soi, sur un circuit imprimé typique, les composants analogiques sont tous les petites parties noires, brunes et bleues qui ne ressemblent pas à une puce et peuvent avoir des "étiquettes" commençant par "C", "R" ou "L".

Possibles composants du SoC

Le SoC peut contenir les éléments suivants:

  • Un ou plusieurs (micro)processeurs + des péripheriques

  • De la mémoire volatile

  • De la mémoire non-volatile

  • Des bus internes

Chacun de ces composants font partie de la surface d'attaque pour un attaquant et sont donc a prendre en compte.

Software

Le software est une collection structurée d'instructions CPU et de données qu'un processus exécute. Il peut contenir aucun ou plusieurs de ces éléments:

  • Un Initial Boot Code: Il s'agit d'une liste d'instructions exécutées au demarrage de l'appareil, le code de démarrage initial est généré par le processeur et stocké en ROM. La fonction principale du code ROM de démarrage est de préparez le processeur principal pour exécuter le code qui suit.

  • Le bootloader: Le chargeur de démarrage initialise le système après l'exécution du code ROM de démarrage. Il peut fournir des fonctionnalités pour le provisionnement d'un appareil ou débogage. Être le premier code mutable à s'exécuter sur un appareil en fait ainsi une cible attrayante pour un pirate.

Théoriquement, la création de cette chaîne de confiance semble assez sûre, mais peut être vulnérable à un certain nombre d'attaques, allant de l'exploitation de faiblesse de vérification à l'injection de fautes en passant par les attaques de synchronisation, etc.

ressource: https://www.youtube.com/watch?v=B9J8qjuxysQ

  • TEE (Trusted Environment Execution): est une zone sécurisée d'un processeur principal . Il garantit que le code et les données chargés à l'intérieur sont protégés en matière de confidentialité et d'intégrité.

Pas très commun dans l'IoT, plutôt dans les appareils mobiles et tablettes.

  • Firmware: Dans un système informatique, un firmware (ou micrologiciel) est un programme intégré dans un matériel informatique (ordinateur, photocopieur, automate (API, APS), disque dur, routeur, appareil photo numérique, etc.) pour qu'il puisse fonctionner.

Un système informatique ne posséde pas forcément un firmware. Cependant, il est possible que plusieurs composants de ce même système eux en possèdent(Une carte wifi par exemple).

  • OS (Operating System): En informatique, un système d'exploitation est un ensemble de programmes qui dirige l'utilisation des ressources d'un ordinateur par des logiciels applicatifs.

    Il reçoit des demandes d'utilisation des ressources de l'ordinateur, ressources de stockage de mémoire (par exemple des accès à la mémoire vive, aux disques durs), ressources de calcul du processeur central, ressources de communication vers des périphériques (pour parfois demander des ressources de calcul au GPU par exemple ou tout autre carte d'extension) ou via le réseau de la part des logiciels applicatifs. Le système d'exploitation gère les demandes ainsi que les ressources nécessaires évitant les interférences entre les logiciels.

Dernière mise à jour