Introduction aux CTF
Notions théoriques
Les Capture The Flag (CTF) sont des compétitions de cybersécurité où les participants doivent résoudre des défis pour trouver des "flags" (indicateurs secrets).
Ces compétitions permettent d'apprendre et de pratiquer différentes techniques de hacking éthique.
Types de CTF
Il existe plusieurs types de CTF, chacun mettant l’accent sur des compétences spécifiques.
- Jeopardy : Une série de défis indépendants classés par catégories (cryptographie, exploitation, forensic, Web, etc.).
- Attack-Defense : Chaque équipe défend son infrastructure tout en attaquant celles des adversaires.
- Boot2Root : Un système est mis à disposition et le but est d’obtenir un accès administrateur en exploitant ses vulnérabilités.
Catégories de défis courants
Les défis de CTF couvrent plusieurs domaines :
- Cryptographie : Déchiffrer des messages codés.
- Forensic : Analyser des fichiers suspects à la recherche d’indices.
- Reverse Engineering : Comprendre le fonctionnement d’un programme sans le code source.
- Exploitation : Trouver et exploiter des failles de sécurité.
- Web : Identifier des vulnérabilités dans des applications Web.
Format des flags
Les flags sont généralement des chaînes de caractères formatées de manière spécifique, comme :
FLAG{exemple_de_flag}
Ils sont cachés dans des fichiers, du code source, des bases de données ou des applications Web.
Techniques utilisées en CTF
Le forensic et le reverse engineering sont 2 techniques essentielles en cybersécurité, chacune avec un objectif distinct :
Forensic
Le forensic, également appelé analyse forensique ou investigation numérique, est un examen méthodique et approfondi des actes effectués sur un système informatique après une attaque.
Son objectif principal est de reconstituer le déroulement de l'intrusion et de collecter des preuves numériques fiables.
Cette technique permet de :
- Déterminer les causes racines des incidents identifiés
- Évaluer l'impact de l'incident sur le plan technique et pour les différents métiers
- Livrer une analyse détaillée des actions menées par l'attaquant
L'analyse forensique utilise diverses techniques, notamment :
- Récupération des données supprimées ou cachées
- Traitement et analyse des données collectées
- Établissement d'une timeline détaillée des événements
Reverse Engineering
Le reverse engineering, ou rétro-ingénierie, est un processus qui vise à remonter à l'origine d'un programme ou d'un logiciel.
Dans le contexte de la cybersécurité, il s'agit d'analyser une attaque en étudiant les différentes étapes de sa réalisation.
Les objectifs du reverse engineering incluent :
- Décomposer et analyser une attaque, un virus ou un logiciel malveillant
- Comprendre le mode de fonctionnement d'une attaque
- Établir les différentes étapes d'une intrusion
- Revenir à l'origine de la faille de sécurité[4]
Le reverse engineering est particulièrement utile pour l'analyse de programmes malveillants, permettant d'établir des signatures de détection et d'améliorer les mesures de protection contre les cyberattaques[4].
Outils utilisés en CTF
Les compétiteurs utilisent divers outils pour résoudre les défis :
- Wireshark : Analyse de trafic réseau.
- Burp Suite : Tests de sécurité Web.
- John the Ripper : Cassage de mots de passe.
- Ghidra : Reverse engineering de binaires.
- CyberChef : Manipulation de données et cryptographie.
Les CTF permettent d'améliorer ses compétences en cybersécurité et sont un bon entraînement pour les métiers de la sécurité informatique.
Exemple pratique
Il est possible de résoudre un défi simple de CTF en analysant un fichier texte contenant un flag caché.
1. Récupération du fichier
Télécharger un fichier texte contenant un flag caché :
wget https://exemple.com/fichier_ctf.txt
2. Recherche du flag dans le fichier
Afficher le contenu du fichier :
cat fichier_ctf.txt
Si le flag n’est pas visible immédiatement, rechercher un motif spécifique :
grep -oE "FLAG\{.*\}" fichier_ctf.txt
3. Analyse avancée
Si le flag est encodé, utiliser CyberChef ou la commande base64
:
cat fichier_ctf.txt | base64 -d
Une fois le flag trouvé, il peut être soumis sur la plateforme du CTF.
Test de mémorisation/compréhension
TP pour réfléchir et résoudre des problèmes
Retrouver un flag caché dans un fichier texte
Objectif
Ce TP a pour but de retrouver un flag caché dans un fichier texte en utilisant différentes techniques d’analyse et de manipulation de données.
Vous apprendrez à rechercher des motifs, analyser des fichiers et décoder des informations.
Étape 1 : Télécharger le fichier contenant le flag
Le fichier contenant le flag est hébergé sur un dépôt public GitHub.
Il faut le récupérer sur la machine locale :
-
Ouvrir un terminal.
-
Télécharger le fichier avec la commande suivante :
wget https://raw.githubusercontent.com/OpenCTF/exercices/main/fichier_ctf.txt
-
Vérifier que le fichier est bien téléchargé :
ls -l fichier_ctf.txt
Une solution
Vous devez être connecté pour voir le contenu.
Étape 2 : Analyser le contenu du fichier
Avant de chercher le flag, il est nécessaire d’examiner le fichier :
-
Afficher son contenu avec :
cat fichier_ctf.txt
-
Si le fichier est trop long, afficher uniquement les 10 premières lignes :
head fichier_ctf.txt
-
Vérifier si le flag est directement visible.
Une solution
Vous devez être connecté pour voir le contenu.
Étape 3 : Rechercher un flag caché dans le fichier
Si le flag n’est pas visible immédiatement, il peut être dissimulé dans le texte :
-
Rechercher une chaîne correspondant à un flag avec
grep
:grep -oE "FLAG\{.*\}" fichier_ctf.txt
-
Si aucun résultat n’apparaît, essayer avec une recherche insensible à la casse :
grep -i "flag" fichier_ctf.txt
-
Si le fichier est volumineux, utiliser
less
pour une navigation plus facile :less fichier_ctf.txt
Une solution
Vous devez être connecté pour voir le contenu.
Étape 4 : Vérifier si le flag est encodé
Si le flag n’est pas trouvé, il peut être caché sous une forme encodée :
-
Vérifier si le fichier contient du texte encodé en base64 :
cat fichier_ctf.txt | base64 -d
-
Si le texte décodé contient un flag, le noter.
-
Si le flag n’apparaît toujours pas, tester un encodage hexadécimal :
xxd -r -p fichier_ctf.txt
Une solution
Vous devez être connecté pour voir le contenu.
Étape 5 : Vérifier s'il y a des métadonnées cachées
Le flag peut être dissimulé dans les métadonnées du fichier :
-
Examiner les informations du fichier avec :
file fichier_ctf.txt
-
Vérifier les métadonnées avec
strings
:strings fichier_ctf.txt | grep "FLAG"
-
Si le fichier est une image ou un document, utiliser
exiftool
:exiftool fichier_ctf.txt
Une solution
Vous devez être connecté pour voir le contenu.
Étape 6 : Soumettre le flag
Une fois le flag trouvé, il doit être soumis sur la plateforme de CTF :
-
Copier le flag trouvé.
-
Se connecter à la plateforme de CTF.
-
Coller le flag dans le champ prévu et valider.
Une solution
Vous devez être connecté pour voir le contenu.
À vous de jouer !
Résolvez le défi CTF de la Marine Nationale
https://marine.pro.root-me.org/
Vous avez déjà un titre Bac+2 (BTS CIEL, SIO ou une autre formation) ou êtes en bonne voie pour l'obtenir d'ici la fin de l'année scolaire ? Alors participez à un challenge immersif organisé par le Commandement de la Cyberdéfense au profit de la Marine nationale. C’est l’occasion parfaite de découvrir les compétences attendues pour participer à des opérations militaires en tant qu'officier marinier (sous-officier de la Marine nationale) ! Missions exceptionnelles, environnement hors du commun, serez-vous prêts à vous engager ? Si vous souhaitez postuler, pensez à bien conserver les flags et solutions que vous avez utilisées pour mener à bien cette mission.