Quelques conseils pour créer un (bon) CTF

  • Avertissement : cet article engage uniquement son auteur. OSINT-FR condamne toute utilisation malveillante des méthodologies décrites dans ce guide.

Alors que l’OSINT connaît un fort engouement, de nombreux challenges voient le jour pour permettre aux passionnés d’améliorer leurs compétences de façon ludique. Toutefois, créer un challenge est une tâche ardue (définition d’un scénario, création de contenu, formulation de questions suffisamment complexes) pour laquelle il n’existe pas de méthodologie formalisée. Voici donc quelques conseils issus de mes expériences en tant que concepteur de CTF.

Les CTF (Capture The Flag) OSINT sont des challenges ludiques permettant de mettre en avant et d’améliorer les techniques de renseignement en sources ouvertes (OSINT) des participants et de ceux qui lisent les retours d’expérience (même si, bien évidemment, rien ne vaut la pratique). Concrètement, ces CTF sont guidés par des questions, où chaque bonne réponse permet de débloquer la suivante. Les challenges TraceLabs, qui visent à aider à retrouver des personnes disparues, font figure d’exception.

De nombreux CTF de grande qualité ont vu le jour dernièrement : Hexa OSINT, créé par Sopra Steria à l’occasion de La Fabrique Défense, Stranger Case de l’ESNA, le CTF de l’UYBHYS, préparé par des membres d’OSINT-FR, le Bleuet de France et la Hunt par l’AEGE, et j’en passe. J’ai aussi eu l’occasion de participer à la création du challenge OSINT 317 lors des éditions 2021 et 2022 de l’European Cyber Cup, qui s’est déroulée lors du Forum international de la cybersécurité (FIC). Après de (très) nombreuses heures à plancher sur ces deux projets (plusieurs dizaines, sans compter le fait qu’on y pense souvent), dont les retours sont très positifs, je propose de partager quelques conseils sur ce qu’il faut pour créer un bon CTF, en espérant susciter des vocations et/ou faciliter le travail des organisateurs.

1. Être cohérent

La cohérence est selon moi l’élément principal d’un bon CTF, car tout en découle. En effet, le but du challenge est de créer une enquête fictive et, dans toute enquête, l’investigateur est confronté à des personnes qui agissent selon une certaine logique.

La première étape consiste donc à écrire un scénario avec une trame générale et la description exhaustive des personnages, en veillant à ce qu’ils gardent un comportement numérique similaire sur les différentes plateformes où ils disposent d’avatars. Pour cela, il est recommandé de tenir à jour un document Excel avec tous les éléments relatifs aux avatars (date de naissance, comptes sur les RS, mots de passe, etc.).

Le scénario se décompose ensuite en questions en tenant compte de la chronologie : il faut guider les participants, étape par étape (l’une des limites des CTF classiques d’ailleurs, puisqu’une vraie enquête est marquée par l’incertitude). Pour cela, on peut s’aider d’une solution collaborative comme Miro. Sur l’exemple ci-dessous, il faut comprendre que la résolution de la question 1) permet de débloquer la question 2) de la traque « Ian » et la première question de la traque « Debbie » (ce qui permet aux participants de plancher sur plusieurs questions en parallèle).

Il va sans dire que la résolution de chaque question doit être cohérente. Si deux avatars communiquent de manière discrète, on peut utiliser de la sténographie. Par contre, employer cette technique pour cacher la date de naissance d’un avatar ne serait pas logique (donc quasi-impossible à trouver pour les participants).

2. Pousser à la réflexion et l’analyse

La hantise, lorsque l’on crée un challenge censé durer 24 heures, est qu’il soit bouclé en quelques heures seulement. Il faut donc créer des questions suffisamment complexes pour être faisables tout en poussant les participants à se creuser la tête et émettre des hypothèses de recherche. Mais alors, comment créer de bonnes questions ?

La méthode suivie pour les challenges 317 consiste à tenir à jour un tableau de toutes les techniques que l’on aimerait utiliser pour résoudre les énigmes. Citons les plus classiques : rebond à partir d’un pseudonyme, utilisation des archives, géolocalisation, etc. Cela implique de se tenir à jour dans les techniques, afin de rester innovant et créatif. Si le scénario est bien défini et que chaque personnage possède des comptes sur les réseaux sociaux, des blogs, etc., bien alimentés, il ne reste plus qu’à se demander : quelles informations veut-on faire découvrir et par quelle technique ?

Reste enfin à faire tester les questions par une équipe placée dans les mêmes conditions que les participants. Cette étape permet de se rendre compte de la difficulté mais aussi des éventuelles erreurs, que ce soit dans la formulation des questions ou même dans les réponses. Dans l’idéal, il faut prévoir que cette phase de test s’achève une semaine avant le challenge.

3. Créer un maximum de bruit

La difficulté majeure d’une vraie enquête réside dans le nombre important de fausses pistes et le nombre quasi-infini d’hypothèses de recherche : un individu peut être totalement invisible sur le Web (mais encore faut-il en être sûr !) ou bien posséder des dizaines de comptes, être actif sur des forums, des blogs, etc. Et, dans ce cas, il faut arriver à extraire tous les éléments intéressants. Car, on ne le répétera jamais assez, trouver un compte/blog ne sert à rien : ce qu’il faut, c’est l’analyser à fond et collecter tous les éléments.

Appliqué à un CTF, cela veut dire qu’il est nécessaire de créer du bruit, des fausses pistes. Il faut « donner vie » aux personnages, en alimentant leurs comptes, afin que tous les articles, tweets, post-blogs, etc., ne soient pas publiés le même jour. Si l’un des avatars possède un compte Ask FM et qu’il n’y a qu’une seule publication dessus, l’indice est trop vite collecté. De même, si l’on souhaite cacher un indice sur son compte Facebook, il est nécessaire de publier de nombreux posts afin de forcer les participants à tout lire, comme on le ferait dans une véritable enquête. Ces publications doivent s’inscrire dans la cohérence globale du scénario, surtout si les personnages interagissent entre eux. Là encore, cela demande de l’organisation pour définir « qui » publie quoi et quand, surtout pour les messages importants. Si une équipe est en charge d’organiser le CTF, je recommande que les publications d’un personnage soient réalisées toujours par la même personne, afin de garder le ton, les mots, etc. Il faut donc définir les rôles dès les prémices du CTF et s’y tenir. Chacun doit publier régulièrement (selon le profil du personnage), afin de cacher dans la masse des publications les messages clés.

On touche aussi à la limite de l’exercice : créer un scénario et des personnages de toutes pièces nous coupe de tout ce qui est document légal (registres du commerce, bases de données, etc.). On peut toujours bricoler (par exemple, demander le nom du fondateur d’un restaurant dans lequel l’un des avatars aurait déjeuné), mais cela a ses limites.

4. Confronter ses idées

Autre conseil pour réaliser un bon CTF : confronter ses idées en permanence. À l’image des writers room pour l’écriture de séries, la création d’un CTF se nourrit des idées des uns et des autres. Il arrive qu’une personne arrive avec une idée, qui soit enrichie par un autre, puis amendée par un troisième. Des réunions régulières permettent non seulement de suivre l’avancement du projet global, mais aussi d’offrir des occasions pour cette confrontation d’idées. Rappelons au passage que les idées ne doivent pas émerger par le simple fait que les scénaristes se réunissent, mais que chacun doit arriver avec des pistes de travail, au risque de tourner à la réunionite.

Au final, sans une bonne méthodologie, on peut perdre beaucoup de temps et d’énergie. Construire un CTF demande donc de l’organisation, de la coopération et, bien sûr, un bon niveau en OSINT afin que le challenge soit au rendez-vous pour les participants.

Si vous avez d’autres idées ou que vous souhaitez en discuter, n’hésitez pas à commenter ou à me contacter.