Passer aux informations sur le produit
Notes de cours sur le piratage de systèmes embarqués
Notes de cours sur le piratage de systèmes embarqués
Description
Introduction au livre
Quelles sont les étapes nécessaires pour pirater les appareils connectés à Internet que nous voyons couramment autour de nous ? Il faut extraire le firmware de la carte mère d'un appareil embarqué dont nous ignorons tout.
De plus, le firmware doit être analysé de manière dynamique et statique afin de détecter les vulnérabilités, puis un code d'attaque adapté au dispositif doit être écrit.
Cela paraît être un processus très simple, mais les dispositifs embarqués nous entourent sous tellement de formes différentes que nous devons souvent utiliser des méthodes différentes à chaque fois.
J'ai intégré dans mes cours les expériences que j'ai tirées de la rencontre de ces différents cas d'utilisation d'équipements embarqués.
Et maintenant, je publie les notes de cours qui contiennent les informations les plus utiles.
  • Vous pouvez consulter un aperçu du contenu du livre.
    Aperçu

indice
Chapitre 1.
Prologue – À qui s’adresse ce livre ? Le flux du piratage


Chapitre 2.
Flux de piratage


2.1 Sélection de la cible
2.2 Analyse des équipements
2.3 Obtention du firmware
2.3.1 Utilisation du code d'attaque d'une journée
2.3.2 Piratage matériel - Utilisation des ports de débogage
2.3.3 Dump de mémoire flash
2.4 Analyse du firmware
2.4.1 Analyse de la configuration du système
2.4.2 Analyse de l'image du firmware
2.4.3 Analyse dynamique
2.5 Modification de l'image du firmware
2.6 Exploitation des vulnérabilités
2.7 Exploitation ARM

Chapitre 3.
Sélection des cibles de piratage


3.1 Entre légal et illégal
3.2 Sélection d'un point d'attaque
3.3 Surface d'attaque
3.4 Modèles d'attaque et vecteurs d'attaque
3.5 Modèle de menaces et actifs de sécurité
3.6 Penser comme un hacker
3.7 Programme de primes aux bogues
3.8 Conclusion

Chapitre 4.
Composants des dispositifs embarqués


4.1 Matériel embarqué
4.1.1 Composants de la carte embarquée
4.1.2 Puces sur cartes embarquées
4.1.3 Test actuel
4.1.4 UART
4.1.5 JTAG
4.1.6 Périphériques
4.2 Logiciel embarqué
4.2.1 Flux de démarrage des dispositifs embarqués
4.2.2 Chargeur de démarrage
4.2.3 PBL (Chargeur de démarrage principal ou chargeur de démarrage ROM)
4.2.4 SBL (Chargeur de démarrage secondaire)
4.2.5 UBoot
4.2.6 Système d'exploitation
4.2.7 Pilotes de périphériques
4.2.8 Système de fichiers
4.2.9 Services et processus
4.2.10 RTOS
4.3 Vérification de l'intégrité du firmware et chiffrement
4.4 Conclusion

Chapitre 5.
Communication série matérielle


5.1 Communication série synchrone et asynchrone
5.2 Pratique de la communication sérielle
5.3 Équipement de développement Atmega128
5.4 Exercices de contrôle de LED avec Atmega128
5.5 Implémentation de la communication série UART avec Atmega128
5.6 Utilisation du convertisseur série USB
5.7 Communication SPI
5.8 La naissance de la communication SPI
5.9 Comprendre la communication SPI
5.10 Final

Chapitre 6.
Obtention du firmware via le port de débogage


6.1 Piratage UART
6.1.1 Utilisation du débogage UART
6.1.2 Recherche des broches UART
6.1.3 Exercice de recherche des broches UART
6.1.4 Vérification de l'UART à l'aide d'un multimètre
6.1.5 Connexion série UART
6.1.6 Analyse des signaux UART à l'aide d'un analyseur logique
6.1.7 Analyse des messages de débogage UART
6.1.8 Obtention d'une interface de démarrage via UART
6.1.9 Extraction du firmware à l'aide de la commande SPI du shell de démarrage
6.1.10 Vérification de la configuration du firmware avec Binwalk
6.1.11 Shell de démarrage - Extraction du firmware avec la commande md (affichage de la mémoire)
6.2 Piratage JTAG
6.2.1 Qu'est-ce que JTAG ?
6.2.2 Connexion JTAG
6.2.3 Recherche des broches JTAG
6.2.4 Définition des broches JTAG à l'aide de JTAGulator
6.2.5 Localisation des broches TJAG du Raspberry Pi à l'aide de JTAGulator
6.2.6 Divers équipements de débogage JTAG
6.3 Sécurité JTAG

Chapitre 7.
mémoire flash


7.1 Types de mémoire flash
7.2 Pourquoi devons-nous vider la mémoire flash ?
7.3 Localisation de la mémoire flash NAND sur une carte embarquée
7.4 Types de modules de mémoire
7.5 Fonctionnalités d'emballage spécifiques au protocole
7.6 Recherche de puces mémoire candidates sur la carte mère
7.7 Lecture du numéro de série de la mémoire flash
Fiche technique 7.8
7.8.1 Obtention d'une fiche technique
7.8.2 Obtention des informations sur la puce
7.8.3 Comprendre la fiche technique - SPI
7.8.4 Comprendre la fiche technique - SPI (Lire)
7.8.5 Comprendre la fiche technique - SPI (REMS)
7.8.6 Comprendre les fiches techniques - MMC
7.8.7 Comprendre la fiche technique - UFS
7.8.8 Sécurité des fiches de données
7.9 Connexion de la mémoire flash
7.9.1 Connexion aux broches de la puce mémoire - Soudure directe et connexions par cavalier
7.9.2 Connexion aux broches de la puce mémoire - Utilisation de pinces mémoire (pinces à broches)
7.9.3 Connexion aux broches de la puce mémoire - Pince de préhension
7.9.4 Connexion aux broches de la puce mémoire - Dessoudage BGA
7.9.5 Connexion aux broches de la puce mémoire - Resoudure BGA

Chapitre 8.
Sauvegarde de la mémoire flash


8.1 Vidage mémoire - Atmega128
8.1.1 Paramètres de communication SPI
8.1.2 Lecture de l'identifiant du fabricant
8.1.3 Lecture des données de la mémoire flash
8.2 Vidage de la mémoire - Raspberry Pi
8.2.1 Raspberry Pi
8.2.2 Projet de ROM Flash
8.2.3 Installation du système d'exploitation Raspberry Pi
8.2.4 Gravure de l'image Raspberry Pi
8.2.5 Installation de SSH sur le Raspberry Pi
8.2.6 Images d'écriture
8.2.7 Connexion SSH Raspberry Pi
8.2.8 Activation du SPI du Raspberry Pi
8.2.9 Installation de la ROM Flash
8.2.10 Extraction de la mémoire ROM avec la mémoire Flash ROM
8.2.11 Dump du chipset non pris en charge dans la mémoire flashrom
8.2.12 Utilisation du package Python SPIdev
8.3 Vidage mémoire - beeprog3
8.3.1 Beeprog
8.3.2 Dessoudage de la mémoire
8.3.3 Connexion des supports de mémoire
8.3.4 Installation du logiciel Befrog
8.3.5 Connexion non-Prog
8.3.6 Extraction de données de la puce mémoire
8.4 Vidage mémoire - Allsocket
8.4.1 Achat d'équipement multiprise
8.4.2 Dump de l'imageur FTK
8.5 Conclusion

Chapitre 9.
Analyse du firmware


9.1 Séquence d'analyse structurelle du firmware
9.2 Travaux de tri
9.2.1 Installation et exécution de Binwork
9.2.2 Extraction d'un système de fichiers à partir d'une image
9.3 Sculpture
9.3.1 Sculpture LZMA
9.3.2 Sculpture de courges
9.4 Analyse statique
9.4.1 Outils d'analyse statique - IDA vs. Ghidra
9.4.2 IDA contre Ghidra
9.4.3 Création d'un environnement d'analyse statique d'images RTOS
9.4.4 Recherche de l'adresse de base
9.4.5 Identification des variables matérielles
9.5 Analyse dynamique
9.5.1 Émulation du fichier exécutable du firmware - 1
9.5.2 Émulation du binaire du firmware extrait - 2
9.5.3 Suivi du flux d'exécution du firmware - strace
9.5.4 Analyse dynamique des exécutables de firmware - gdb
9.5.5 Configuration de l'environnement système QEMU
9.5.6 Compilation de qemu-system-arm32
9.5.7 Compilation de qemu-system-aarch64
Émulateur UNICORN 9.5.8
9.6 Analyse du chargeur de démarrage
9.6.1 Méthode de chargement du démarrage
9.6.2 Inversion du chargeur de démarrage
9.6.3 Utilisation de logiciels libres
9.7 Analyse du noyau
9.7.1 Méthodologie d'analyse d'images de noyau
9.7.2 Analyse des pilotes du noyau
9.7.3 Structure des pilotes de noyau
9.7.4 Analyse des pilotes de périphériques embarqués
9.8 Analyse du système de fichiers
9.8.1 Pourquoi étudier la structure du système de fichiers ?
9.8.2 Utilisation des systèmes de fichiers
9.8.3 Courges
9.8.4 CPIO
9.8.5 EXT4
9.8.6 JFFS et JFFS2
9.8.7 CRAMFS
9.8.8 UBIFS
9.9 Analyse du firmware personnalisé
9.9.1 Début de l'analyse du firmware modifié
9.9.2 Analyse des images UBIFS modifiées
Analyse de l'éditeur 9.9.3 010
9.9.4 Analyse révisée des données UBI
9.9.5 Extraction de données à partir d'un UBI modifié
9.10 Final

Chapitre 10.
Modifier le firmware pour obtenir une interface d'analyse


10.1 Déterminer où effectuer la modification
10.2 Installation d'une porte dérobée
10.3 Tentative de connexion avec un firmware modifié
10.4 Comment ouvrir différentes portes dérobées
10.4.1 Ouverture d'une porte dérobée à l'aide d'une commande permettant l'accès à distance
10.4.2 Ouverture d'une porte dérobée via la commande de téléchargement
10.4.3 Ouverture d'une porte dérobée par la création d'un programme
10.5 Configuration de l'environnement de débogage

Chapitre 11.
Création d'un outil d'analyse


11.1 Création d'un outil d'analyse
11.1.1 Compilation croisée
11.1.2 Configuration de l'environnement de compilation croisée
11.1.3 Installation du compilateur croisé
11.1.4 Compilation croisée
11.1.5 Compilation croisée statique de l'outil d'analyse Strace
11.1.6 Vérification de l'opération strace
11.2 Création d'un outil d'analyse embarqué par le biais de l'interconnexion
11.2.1 Préchargement des bibliothèques Linux
11.2.2 Interconnexion d'une bibliothèque à l'aide d'un préchargeur
11.2.3 Exercices pratiques d'interception avec OpenSSL
11.2.4 Amarrage global
11.2.5 Création d'un outil de surveillance de la création et de la suppression de fichiers par hooking
11.2.6 Désactivation du mode Hooking
11.3 Conclusion

Chapitre 12.
Exploitation des vulnérabilités


12.1 Différentes autorisations dans les systèmes embarqués
12.1.1 DAC
12.1.2 Bit collant immuable
12.1.3 MAC
12.1.4 Fonctionnalités Linux
12.1.5 RBAC
12.2 Erreurs logiques
12.3 Cas de vulnérabilité liés à des bogues logiques
12.3.1 Caractéristiques du format USB Ext4
12.3.2 Problème de configuration des autorisations de montage USB
12.3.3 Liens symboliques au sein de l'USB
12.3.4 Contournement personnalisé du shell
Mise à jour du firmware 12.3.5
12.3.6 Absence d'authentification
12.4 Écrivez quoi et où ?
12.4.1 Assistant Uevent
12.4.2 Cas de vulnérabilité d'une imprimante multifonction
12.4.3 Conclusion

Chapitre 13. Exploitation d'ARM

13.1 Attaques par corruption de mémoire
13.2 À propos d'ARM
13.3 Code assembleur ARM
13.4 Qu'est-ce que le mode ARM Thumb ?
13.5 Conventions d'appel ARM
13.6 Création de shellcode ARM
13.7 Écriture du code en mode pouce
13.8 Canalisation
13.9 Programmation shell « Hello world »
13.10 Création d'un shellcode exécutable
13.11 Création d'un shellcode de connexion inverse
13.12 Techniques d'attaque par corruption de mémoire ARM
13.13 ARM Stack Overflow
13.14 ARM ROP
13.15 Techniques d'exploitation ARM en situation réelle
13.16 Final

Image détaillée
Image détaillée 1

Avis de l'éditeur
◈ Ce que ce livre aborde ◈

◆ Notions de base du matériel informatique pour les débutants en piratage informatique
◆ Configuration du système embarqué
◆ Méthodologie d'extraction de firmware pour les dispositifs embarqués
◆ Méthodologie d'analyse série utilisant les ports de débogage UART et JTAG
◆ Connaissances de base pour le piratage de systèmes embarqués
◆ Diverses techniques d'émulation
◆ Savoir-faire en piratage embarqué
technique d'attaque binaire sur l'architecture ARM

◈ Public cible de ce livre ◈

◆ Ce livre s'adresse aux lecteurs souhaitant acquérir des connaissances de base en piratage de systèmes embarqués tels que les imprimantes multifonctions, les tablettes murales, les routeurs et les NAS.
◆ Lecteurs souhaitant acquérir des connaissances de base en piratage informatique
◆ Lecteurs souhaitant étudier différentes méthodologies d'attaques embarquées

◈ Note de l'auteur ◈

Aux alentours de 2010, la mode du piratage embarqué a commencé à se répandre en Corée du Sud.
Le piratage embarqué est devenu un nouveau jouet pour les pirates informatiques qui s'ennuyaient à pirater des systèmes familiers, et c'était le jeu ultime pour ceux qui pouvaient voir directement de leurs yeux les résultats de leurs actions s'ils réussissaient.
Et j'étais l'un de ces hackers qui appréciaient ce jeu.
À cette époque, sécuriser les appareils embarqués était beaucoup plus facile que de trouver des vulnérabilités dans d'autres serveurs.
Cependant, au fil du temps, la sécurité des systèmes embarqués s'est progressivement améliorée, et j'ai moi aussi évolué en étudiant des techniques permettant de contourner cette sécurité renforcée.
Et cela a offert l'opportunité d'expliquer le processus par le biais d'un cours intégré.
Les supports de cours, mis à jour annuellement, s'accumulaient progressivement, et à un moment donné, j'ai réalisé qu'il était nécessaire de mettre en évidence tout le matériel que j'avais accumulé au fil des ans.
J'ai essayé de couvrir autant que possible le processus qui m'a amené à étudier le piratage des systèmes embarqués, son évolution et les possibilités offertes.
- ahrik

Il y avait une raison pour laquelle j'ai commencé à pirater des voitures.
Tout a commencé en 2010, avec un article de la BBC que j'ai vu dans le bus en rentrant d'un entretien d'embauche dans une entreprise.
Le titre est « Attaques de piratage montées sur les systèmes de contrôle des voitures ».
Il a été indiqué que les voitures pouvaient être piratées.
Si l'article disait vrai, il s'agissait de faire passer des menaces qui n'existaient auparavant que dans le monde numérique au monde réel, et cela suffisait à faire naître en moi un sentiment romantique.
J'ai ignoré la nouvelle de mon acceptation par l'entreprise et je suis allé dans un laboratoire de recherche universitaire pour trouver un endroit où je pourrais étudier le piratage automobile.
La vie après cela n'a pas été facile.
Dans mon esprit, le niveau cible le plus bas se limitait au langage assembleur, mais lorsque le champ d'application s'est étendu aux automobiles, des problèmes sont apparus qui ont nécessité la compréhension des caractéristiques matérielles.
À l'époque, j'étais très déçu qu'il n'existe aucun ouvrage national abordant le matériel informatique sous l'angle de la sécurité, mais je suis heureux d'avoir pu y contribuer modestement grâce à ce livre.

En fait, lorsque j'ai participé à la rédaction du livre, une grande partie de son contenu et de son orientation étaient déjà définis.
Cependant, en raison de mes lacunes et de mes inquiétudes, il n'a pas été facile d'écrire chaque mot.
Lorsque j'ai commencé, j'étais plein d'espoir et d'enthousiasme, mais plus je luttais, plus ma volonté semblait faiblir.
La principale préoccupation concernait probablement la capacité à communiquer.
Je me demandais si je pouvais exprimer efficacement ce que j'avais en tête, et en même temps, si je pouvais conserver le même ton que les phrases que j'avais déjà écrites.
Il aurait été agréable que les choses se déroulent comme prévu, mais en repensant au passé pour écrire la « Note de l'auteur », il semble inévitable qu'il y ait de grands regrets.

La sécurité matérielle est un domaine encore en développement. Malgré les changements importants apportés par le programme LLM, l'automatisation de la sécurité matérielle est loin d'être acquise.
Mais je ne pense pas que ce soit impossible.
Récemment, des théories telles que les jumeaux numériques et l'apprentissage automatique émergent progressivement pour intégrer le matériel du monde réel dans le monde numérique et le vérifier.
Dans cette optique, j'espère que ce livre, qui décrit le piratage embarqué, sera d'une grande utilité aux lecteurs.

Enfin, je tiens à exprimer ma gratitude aux nombreuses personnes que j'ai rencontrées lors de mes études en sécurité et de mon travail dans des domaines connexes.
Mes frères et sœurs de HSD, qui m'ont fait découvrir la joie d'étudier ensemble alors que j'étudiais seul, et les élèves du laboratoire de physique, qui me sont actuellement les plus précieux.
C’est au sein de ces deux groupes que j’ai débuté et que je me trouve actuellement dans le domaine de la sécurité.
Et en attendant, je voudrais profiter de cette occasion pour exprimer ma gratitude aux nombreuses personnes que j'ai rencontrées et appris à connaître grâce à mon travail dans le domaine de la sécurité, et ce pendant une période relativement courte, même si je n'ai pas pu l'exprimer en raison de mon manque d'aisance sociale.
- voir0
SPÉCIFICATIONS DES PRODUITS
- Date d'émission : 16 décembre 2024
Nombre de pages, poids, dimensions : 504 pages | 936 g | 188 × 235 × 24 mm
- ISBN13 : 9791161759272
- ISBN10 : 1161759271

Vous aimerez peut-être aussi

카테고리