Introduction aux CTF (Capture The Flag)
Votre guide de survie pour les compétitions de hacking légal.
Qu'est-ce qu'un CTF ?
Les compétitions Capture The Flag sont des challenges de hacking légal où les participants trouvent des "flags" cachés (chaînes de texte comme FLAG{y0u_found_m3}) pour marquer des points.
Types de CTF :
| Type | Format |
|---|---|
| Jeopardy | Challenges individuels, choisissez ce que vous voulez |
| Attack-Defense | Les équipes défendent leurs serveurs tout en attaquant les autres |
| King of the Hill | Maintenir le contrôle d'un système cible |
Où pratiquer :
- HackTheBox - Machines réalistes
- TryHackMe - Parcours d'apprentissage guidés
- PicoCTF - Adapté aux débutants
- Root-Me - Plateforme française, excellents challenges
- CTFtime - Calendrier des compétitions en direct
Catégorie 1 : Pwn (Binary Exploitation)
Objectif : Exploiter les vulnérabilités de corruption de mémoire dans les programmes compilés (C/C++) pour obtenir l'exécution de code arbitraire.
La Trinité des Outils
| Rôle | Outil | Objectif |
|---|---|---|
| Disassembler | Ghidra, IDA Pro | Reverse engineer le binaire → voir assembly/pseudocode |
| Debugger | GDB + GEF/Pwndbg | Inspecter la mémoire, les registres, exécuter pas à pas |
| Exploitation | Pwntools (Python) | Scripter la livraison de payload et l'interaction shell |
Vulnérabilités Courantes
| Vulnérabilité | Description |
|---|---|
| Buffer Overflow | Écrire au-delà des limites du buffer, écraser l'adresse de retour |
| Format String | Abuser de printf(user_input) pour lire/écrire en mémoire |
| Use After Free | Accéder à la mémoire libérée, corrompre les structures heap |
| ROP (Return Oriented Programming) | Chaîner des gadgets de code existants pour contourner NX |
Exemple Rapide Pwntools
from pwn import *
# Connexion au challenge
p = remote('ctf.example.com', 1337)
# Ou local: p = process('./vulnerable')
# Créer le payload
payload = b'A' * 64 # Remplir le buffer
payload += p64(0xdeadbeef) # Écraser l'adresse de retour
# Envoyer et obtenir un shell
p.sendline(payload)
p.interactive()
Commandes GDB Essentielles (avec GEF)
# Démarrer le débogage
gdb ./binary
# Commandes GEF/Pwndbg
checksec # Vérifier les protections de sécurité (NX, ASLR, Canary)
vmmap # Voir la disposition de la mémoire
pattern create 100 # Générer un motif cyclique
pattern offset 0x41414141 # Trouver l'offset
# Breakpoints et exécution
b *main # Break à main
b *0x401234 # Break à une adresse
r # Lancer
c # Continuer
ni # Instruction suivante
si # Entrer dans
# Inspection
x/20x $rsp # Examiner 20 mots hex à RSP
x/s 0x401234 # Examiner comme chaîne
info registers # Afficher tous les registres
Apprendre les Bases
Commencez par de simples buffer overflows de pile avant de vous attaquer à l'exploitation du heap.
Ressources :
- Nightmare - Cours d'exploitation binaire
- pwn.college - Cours gratuit de l'ASU
Catégorie 2 : Hardware Hacking
Objectif : Intercepter et décoder les signaux physiques entre composants électroniques.
Méthodologie
1. IDENTIFIER → 2. CONNECTER → 3. DÉCODER
La puce Logic Analyzer Signal → Données
(Datasheet) (Saleae, etc.) (CyberChef)
Étape 1 : Identifier la Puce
- Lire les marquages sur la puce
- Rechercher la Datasheet (pinout, protocoles)
- Protocoles courants : UART, SPI, I2C, JTAG
Étape 2 : Connecter & Capturer
| Outil | Objectif | Gamme de Prix |
|---|---|---|
| Logic Analyzer | Capturer les signaux numériques | $10-$500 |
| Saleae Logic | Analyseur professionnel + logiciel | $$$$ |
| Bus Pirate | Sniffer multi-protocole | $30 |
| FTDI Adapter | Communication UART/Serial | $5-15 |
| JTAGulator | Auto-détection du pinout JTAG | $150 |
Étape 3 : Décoder le Signal
Outils :
- Saleae Logic Software - Analyseurs de protocole intégrés
- PulseView - Analyseur logique open-source
- CyberChef - Couteau suisse pour la transformation de données
Protocoles Courants
| Protocole | Fils | Cas d'Usage |
|---|---|---|
| UART | TX, RX, GND | Consoles de debug, sortie série |
| SPI | MOSI, MISO, CLK, CS | Mémoire flash, capteurs |
| I2C | SDA, SCL | Périphériques basse vitesse |
| JTAG | TDI, TDO, TCK, TMS | Débogage, extraction firmware |
Scénario CTF
Le challenge vous donne un fichier de capture d'analyseur logique.
- Ouvrir dans PulseView/Saleae
- Ajouter un décodeur de protocole (UART @ 115200 baud)
- Lire le flag transmis
Catégorie 3 : OSINT (Open Source Intelligence)
Objectif : Rassembler des renseignements en utilisant des informations publiquement disponibles.
La Règle d'Or
Tout est un indice.
Une photo d'un badge d'employé sur LinkedIn peut révéler :
- Format de l'ID du badge (séquentiel ? aléatoire ?)
- Version du logo de l'entreprise (chronologie)
- Disposition du bâtiment (arrière-plan)
- Technologie de la carte d'accès (type RFID visible)
Boîte à Outils OSINT
| Outil | Objectif |
|---|---|
| Google Dorks | Opérateurs de recherche avancés |
| Maltego | Analyse visuelle des liens |
| Sherlock | Recherche de nom d'utilisateur sur les plateformes |
| theHarvester | Énumération email & sous-domaines |
| Wayback Machine | Snapshots historiques de sites web |
| ExifTool | Extraction de métadonnées d'images |
| GeoGuessr skills | Identification de lieu depuis des photos |
Aide-mémoire Google Dorks
site:example.com # Rechercher dans le domaine
filetype:pdf confidential # Trouver des types de fichiers spécifiques
intitle:"index of" # Listages de répertoires
inurl:admin # URLs contenant "admin"
"password" filetype:log # Fichiers logs exposés
cache:example.com # Version en cache de Google
Analyse d'Images
# Extraire les métadonnées
exiftool image.jpg
# Rechercher :
# - Coordonnées GPS
# - Modèle d'appareil photo
# - Date de création
# - Logiciel utilisé
# - Miniatures embarquées
OSINT sur les Réseaux Sociaux
- LinkedIn : Noms d'employés, titres de postes, technologies utilisées
- Twitter/X : Événements en temps réel, opinions, gaffes
- GitHub : Code, emails, clés API dans les commits
- Instagram : Tags de localisation, détails d'arrière-plan
Éthique & Légalité
OSINT utilise uniquement des données publiques. N'accédez jamais à des comptes privés, ne hackez pas de systèmes, et ne vous faites pas passer pour quelqu'un d'autre. Restez légal.
Catégorie 4 : Lockpicking (Sécurité Physique)
Le côté physique du hacking, souvent présent dans les CTF sur site et les conférences de sécurité.
Outils de Base
| Outil | Objectif |
|---|---|
| Tension Wrench | Appliquer une pression rotationnelle |
| Hook Pick | Manipuler les goupilles individuelles |
| Rake | Positionner rapidement plusieurs goupilles |
| Bump Key | Ouverture par frappe |
La Technique (Serrures à Goupilles)
1. Insérer la clé de tension, appliquer une légère rotation
2. Insérer le crochet, sentir la goupille bloquée
3. Pousser la goupille bloquée jusqu'à la ligne de cisaillement
4. Répéter pour les goupilles restantes
5. La serrure s'ouvre quand toutes les goupilles sont positionnées
Ressources pour Pratiquer
- Practice locks - Serrures transparentes/découpées pour voir le mécanisme
- Lock Sport communautés - Focus légal et éducatif
- TOOOL - The Open Organisation Of Lockpickers
Pourquoi C'est Important
La sécurité physique est souvent le maillon le plus faible. Social engineering + accès physique = game over pour la plupart des organisations.
Résumé de la Boîte à Outils CTF
# Outils indispensables (Kali/Debian/Ubuntu - les outils CTF sont souvent sur Debian-based)
sudo apt install -y \
gdb \
ghidra \
binwalk \ # Analyse de firmware
steghide \ # Steganography
exiftool \ # Métadonnées
john \ # Cassage de mots de passe
hashcat \ # Cassage GPU
wireshark \ # Analyse de paquets
burpsuite # Test web
# Sur RHEL/Rocky (via EPEL pour certains outils)
# sudo dnf install epel-release -y
# sudo dnf install gdb wireshark binwalk ...
# Bibliothèques Python
pip install pwntools pycryptodome requests
Recettes CyberChef à Connaître
- From Hex / To Hex
- Base64 Decode
- ROT13 / ROT47
- XOR avec clé
- Magic (auto-détection d'encodage)
Astuces de Pro
- Lisez attentivement la description du challenge - les indices sont souvent cachés
- Vérifiez les signatures de fichiers -
file mystery.bin,binwalk mystery.bin - Strings sur tout -
strings -n 8 binary | grep -i flag - Googlez les messages d'erreur - quelqu'un d'autre l'a probablement résolu
- Faites des pauses - des yeux frais trouvent les flags plus vite
- Documentez tout - prenez des notes au fur et à mesure