Qu’est-ce qu’un CTF (Capture The Flag) ?

Bertrand #ProHacktive.io
ProHacktive
Published in
4 min readMay 7, 2020

Dans le domaine de la sécurité informatique, la « capture du drapeau » est un jeu consistant à exploiter des vulnérabilités affectant des logiciels de manière à s’introduire sur des ordinateurs pour récupérer les drapeaux, preuves de l’intrusion.

Deux des plus importantes CTF d’attaques/défenses ont lieu chaque année à la DEF CON, la plus grande conférence de hackers et le NYU-CSAW (Cyber Security Awareness Week), le plus grand concours de cybersécurité étudiant.

Source : wikipedia

Dans cet article, nous allons aborder ce qu’est un CTF (Capture The Flag) “Wargame” pour les pentesters (et aussi les passionnés de sécurité informatique). Un CTF s’apparente donc à une intrusion dans un système réel conçu pour cela. C’est un bon moyen pour les pentesters de s’entrainer en toute légalité. L’entrainement consiste à trouver les vulnérabilités disponibles, de les exploiter pour ensuite extraire des données (« flags » ou « drapeaux »).

Que peut-on trouver dans un CTF “Wargame” ?

Un CTF est généralement composé de plusieurs épreuves que l’on peut classer suivant des niveaux de difficulté. Au démarrage, on vous fournit quelques consignes : le nombre de drapeaux à trouver, quelques éléments utiles sur la machine à attaquer (ou pas).

Le métier de pentester nécessite des connaissances solides dans différents domaines comme :

  • le réseau
  • la sécurité informatique (cryptographie, systèmes de codage, audit de sécurité réseau et web)
  • le développement logiciel et systèmes informatiques (systèmes embarqués / industriels / …)

Ces auditeurs sont donc très polyvalents mais surtout ils sont joueurs et aiment relevés des défis.

Les CTF vont donc regrouper un ou plusieurs de ces domaines suivant le niveau de difficulté.

Un CTF va généralement se décomposer ainsi :

  • Scanning
  • Enumération
  • Exploitation
  • Escalade de privilèges

Scanning :

On commence souvent un CTF avec l’adresse IP de la machine à attaquer. On va tester la machine pour déterminer quels sont les ports ouverts (qui pourront être des portes d’entrées pour l’attaque à venir). Cette étape peut nous permettre de connaître le système d’exploitation et quels serveurs tournent sur la machine cible.

Enumération :

A partir des informations du scanning, on va rechercher toutes les informations disponibles pour notre attaque. Lors de cette phase, on va noter tous les informations que l’on trouve : exploration d’un ou plusieurs sites internet, présence d’un serveur ftp, … Cette étape est très importante car elle va déterminer la réussite du CTF.

Exploitation :

A cette étape, on a déterminé la stratégie pour s’infiltrer sur la machine cible et c’est le moment de passer à l’action. On va chercher à se connecter via un utilisateur. La phase d’exploitation va mobiliser de nombreuses connaissances : cryptologie, réseau, Binary Analysis, Reverse Engineering, stéganographie, forensic, …

Escalade de privilèges :

Ca y est, on est connecté à la machine cible via le compte d’un utilisateur. On a souvent trouvé un premier drapeau. Mais il reste le graal à savoir un accès complet à la machine (Root). L’escalade de privilèges va donc consister à gravir les échelons en passant par des comptes ayant de plus en plus de privilèges. Pour les CTF les plus simples, on passe directement au compte Root et pour les plus difficiles, il y aura de nombreuses étapes.

Comment réaliser un CTF ?

Il existe de nombreuses plateformes proposant ce type d’entrainement. Pour les débutants, il existe des plateformes proposant des « exercices » qui permettront par la suite de réaliser des CTF. La plus connue est Root-Me : https://www.root-me.org/.

Ensuite, lorsqu’on commence à se sentir à l’aise avec les techniques et outils, on peut s’orienter vers les CTF. Il existe des plateformes hébergeant les machines à attaquer. La plus connue est HackTheBox : https://www.hackthebox.eu/. Il existe également la possibilité de récupérer les machines sous la forme de machine virtuelle. La plus connue est VulnHub : https://www.vulnhub.com/.

Les autres types de CTF

Il y a le type “attack/defense” avec les gentils (blue team) et les méchants (red team). La blue team dispose d’un temps de préparation pour mettre en place sa défense. Par exemple, la condition de victoire de la blue team est de garantir l’accès d’une ressource en particulier (service web par exemple sur une machine VIP) tout le long du challenge.

Il y a aussi le “Jeopardy” style (root-me.org avec les catégories), il y a plusieurs catégorie et chaque épreuve dispose d’une petite description/indice :
- pwn : exploitation d’un service généralement fait maison. Le but étant de faire exécuter un shellcode.
- reverse de binaire (cracking, aussi appelé “crack me” dans le milieu) : trouver le password demandé par le binaire
- web : exploitation du service web avec les vulnérabilités classiques (OWASP)
- forensic : analyse d’un fichier. Généralement ce sont des dumps de RAM
- stéganographie (détesté par certain car considéré comme du guessing) : en gros, il y a un message caché dans un média (son, image, vidéo…)
- cryptographie
- blockchain (nouveau depuis 2 ans)
- network
- …

Les tendances ?

Plusieurs tendances actuelles :

  • CTF Physique : vous devez vous déplacer dans un lieu particulier pour extraire des données. Cela peut être dans une entreprise avec des missions assez variées.
  • Bugs bounties : c’est en quelque sorte un CTF sur de vrais systèmes. Vous pouvez être rémunéré en fonction des vulnérabilités trouvées.

Plus d’informations

Un site répertorie tous les CTFs : https://ctftime.org/

Il y a des résolutions de CTF, il est possible de créer une team. Vous trouverez un planning des CTFs qui auront lieu et bien sûr un système de classement.

--

--

Bertrand #ProHacktive.io
ProHacktive

Security Developer chez ProHacktive.io. Strong interest in pentesting and solving CTF (Ethical Hacker).