Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
workshop_firmware_reverse_engineering — Atelier de rétro-ingénierie de firmware | Kitploit
Outils/GitHubGitHub/emproof-com/workshop_firmware_reverse_engineering
Sécurité des Systèmes EmbarquésAnalyse StatiqueRétro-ingénierieAnalyse de MalwareSécurité Matériel et IoTAnalyse de BinairesApprentissage et ÉducationAnalyse de MicrologicielLabs et Pratique

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager
GitHubemproof-com/workshop_firmware_reverse_engineering

workshop_firmware_reverse_engineering

Atelier de rétro-ingénierie de firmware

Voir le dépôt
44355il y a 10 moisVérifié par Kitploit

Atelier : Rétro-ingénierie de firmware

Ce dépôt contient les diapositives et les supports pratiques de l'atelier sur la rétro-ingénierie de firmware organisé par Emproof, présenté à ScapyCon Automotive 2025. L'atelier s'adresse à un public technique ayant une expérience minimale en sécurité et enseigne les fondamentaux à travers des exercices pratiques et autonomes. Les sujets abordés comprennent :

  • analyse de base des fichiers/ELF ;
  • cracking de logiciels et keygenning ;
  • déchiffrement de chaînes et triage de malwares ;
  • dépaquetage de firmware Linux embarqué ;
  • analyse bare-metal ;
  • détection de cryptographie ;
  • techniques d'obfuscation/anti-analyse et comment les contourner ;

Si cela vous intéresse, consultez également la série de webinaires techniques Emproof avec des exercices supplémentaires et des sessions enregistrées.

Le contenu de l'atelier a été conçu et organisé par Tim Blazytko, avec le soutien de Simran Kathpalia.

Installation

Pour configurer l'environnement, clonez le dépôt :

root@kitploit:~
git clone https://github.com/emproof-com/workshop_firmware_reverse_engineering
cd workshop_firmware_reverse_engineering

Pour plusieurs exercices, nous avons besoin d'un environnement d'exécution Linux AArch64. Nous fournissons un conteneur Docker basé sur Kali Linux avec des outils courants (par exemple, GNU Binutils, Binwalk) préinstallés. Cela uniformise l'environnement entre Linux, Windows et macOS — quelle que soit l'architecture du processeur hôte. Pour démarrer le conteneur et ouvrir un shell, exécutez :

root@kitploit:~
./docker_run.sh

Remarque : La première exécution peut prendre du temps pour construire l'image.

Remarque (architecture) : Le service Docker Compose définit platform: "linux/arm64".
Sur les hôtes x86_64 (macOS/Windows/Linux Intel), Docker Desktop exécutera l'image sous émulation ; la première construction et le démarrage peuvent donc être plus lents — c'est normal. Sur les hôtes ARM64 natifs (Apple Silicon, serveurs ARM), elle s'exécute nativement et plus rapidement.

Remarque : Le conteneur Docker peut également exécuter des binaires ARMv7 (armhf). Nous installons l'environnement d'exécution armhf (chargeur dynamique + bibliothèques) dans l'image et enregistrons les gestionnaires binfmt pour aarch64 et arm via le script de démarrage.

De plus, installez les outils graphiques suivants sur votre hôte pour les exercices interactifs de rétro-ingénierie (ils ne sont pas inclus dans le conteneur) :

  • Ghidra
  • Binary Ninja Free

Les deux outils sont disponibles pour Windows, Linux et macOS.

Remarque : Binary Ninja Free ne prend pas en charge AArch64. Pour l'analyse AArch64, utilisez Ghidra (ou une version sous licence de Binary Ninja). Par conséquent, plusieurs ateliers fournissent un binaire compagnon ARMv7 (*.armv7) spécifiquement pour Binary Ninja Free ; ces binaires peuvent également être exécutés dans le même conteneur.

Ordre des exercices

Chaque exercice est autonome dans tasks/<name>/ et comprend :

  • samples/ — les binaires (et parfois le code source) utilisés dans l'exercice
  • task.md — l'énoncé avec des instructions pas à pas et des indices

Les exercices peuvent être tentés indépendamment, mais nous fournissons un ordre recommandé (listé ci-dessous) qui augmente progressivement la difficulté et introduit de nouvelles techniques. La plupart des binaires ciblent ARMv7 (Thumb/ARM32) ou AArch64 ; lorsque c'est pertinent, les notes des exercices précisent l'architecture, les outils requis et les éventuels besoins particuliers en matière d'exécution.

  • tasks/hello_world : les bases des fichiers ELF et de l'analyse des métadonnées ; premiers pas dans Ghidra / Binary Ninja.
  • tasks/license_check : extraire des secrets codés en dur / débloquer des fonctionnalités ; patch de base pour contourner les validations (cracking).
  • tasks/game : jeu simple de devinette de nombre ; comprendre la logique et cracker le mode d'essai par rapport au mode complet.
  • tasks/keygenning_1 : rétro-concevoir une validation de licence et écrire un keygen minimal pour générer des numéros de série valides.
  • tasks/keygenning_2 : un exercice de keygenning légèrement plus sophistiqué (salages/clés, encodage hexadécimal).
  • tasks/string_encryption : binaire avec chaînes chiffrées (courant dans les malwares) ; identifier le déchiffreur et récupérer les chaînes statiquement.
  • tasks/mirai : malware embarqué utilisant une routine de déchiffrement de chaînes ; naviguer dans une base de code plus vaste, identifier les constructions intéressantes et traiter les chaînes obfusquées.
  • tasks/embedded_linux_1 : firmware Linux embarqué avec système de fichiers ; dépaqueter, explorer et craquer les informations de connexion Linux (style CTF).
  • tasks/embedded_linux_2 : similaire, mais trouver et analyser un binaire caché qui ne devrait pas être là.
  • tasks/car_demo : analyse de firmware bare-metal : identifier l'architecture, la carte, la carte mémoire, les artefacts de la chaîne d'outils ; extraire les identifiants Wi-Fi et les points de terminaison de protocole.

Licence

Sauf indication contraire, tous les supports d'atelier de ce dépôt sont sous licence GNU General Public License, version 2 (GPL-2.0). Voir LICENSE pour le texte complet.

Certains échantillons tiers / provenant de sources externes sont exclus de la GPL et fournis uniquement pour analyse/éducation (aucune redistribution). Les voici :

  • tasks/mirai/samples/
  • tasks/embedded_linux_1/samples/
  • tasks/embedded_linux_2/samples/

Remarque : Si un sous-répertoire contient son propre fichier ou en-tête de licence, cette licence prévaut pour le contenu de ce sous-répertoire.

Télécharger l’outil
  • tasks/iot_diag : dump de firmware bare-metal d'un outil de diagnostic ; reconstituer les dispositions mémoire à partir de la fiche technique, puis trouver le mot de passe pour débloquer le mode diagnostic.
  • tasks/crypto_detection : binaire AArch64 effectuant des opérations cryptographiques avec une clé AES codée en dur ; localiser l'appel EVP et remonter à la clé/IV pour déchiffrer sans le programme.
  • tasks/license_check_anti_patching : anti-patch via somme de contrôle du code ; comprendre la protection CRC et apprendre à la contourner.
  • tasks/fibonacci_obfuscation : implémentations de Fibonacci propres vs obfusquées (aplatissement de switch, computed goto, prédicats opaques, obfuscation arithmétique, petite VM) ; comprendre les techniques et les normaliser.