Recherche de vulnérabilités dans des systèmes embarqués Linux Junior - 5 jours
Description
Cette formation a pour objectifs :
- Identifier les composants matériels et les interfaces critiques d'un équipement Linux embarqué.
- Accéder à l'équipement via l'UART, interrompre son processus de démarrage et extraire son firmware
- Analyser et émuler des composants du firmware en utilisant QEMU et la conteneurisation.
- Effectuer une analyse statique et assister la recherche de bugs avec des scripts.
- Mettre en place et lancer une campagne de fuzzing avec AFL++ sur un programme compilé.
- Analyser et exploiter des vulnérabilités classiques comme l'injection de commandes et la corruption de mémoire.
- Mettre en œuvre des mécanismes de persistance sur un système embarqué compromis.
Public et prérequis
- Ligne de commande Linux : être à l'aise avec la navigation dans le système de fichiers, la gestion des processus et l'utilisation des outils en ligne de commande courants.
- Bases en réseaux : compréhension des concepts TCP/IP de base, des ports et des protocoles comme HTTP.
- Connaissances en programmation : familiarité avec la lecture et l'écriture de scripts simples en Python et une compréhension de base des concepts de programmation en C.
- Concepts de rétro-ingénierie : des connaissances de base en architecture informatique, en langage d'assemblage ARM et une expérience avec un désassembleur.
Contenu
Jour 1 : Prise en main et extraction
Recherche d'informations en source ouverte, définition de la surface d'attaque et analyse des composants matériels. Compréhension de la séquence de démarrage et première extraction du firmware.
Jour 2 : Analyse et émulation du firmware
Techniques d'émulation logicielle, configuration de l'environnement et identification des processus cibles à analyser. Extraction et émulation des services logiciels importants à partir du firmware.
Jour 3 : Analyse statique et exploitation
Analyse statique avec des outils comme Ghidra et semgrep pour l'analyse de différences et la recherche de vulnérabilités. Méthodologie d'exploitation et écriture d'un premier script pour une injection de commande.
Jour 4 : Fuzzing
Introduction au fuzzing avec AFL++. Création d'un corpus d'entrées, développement d'un harness et lancement d'une campagne de fuzzing sur une cible binaire.
Jour 5 : Exploitation avancée et persistance
Analyse des crashs issus du fuzzer et identification d'une vulnérabilité exploitable. Construction d'une chaîne ROP, écriture d'un script d'exploitation et étude des techniques de persistance sur le système.