Aller au contenu
  1. Posts/

THCon 2025 CTF - Writeup geoINT de Gunnar s Vacations

·919 mots·5 mins
Lacroix Raphaël (Chepycou)
Auteur
Lacroix Raphaël (Chepycou)
Bonjour, bienvenue sur mon blog. Je suis Raphaël LACROIX, je développe diverses applications pendant mon temps libre, allant du très inutile au parfois utile. Je fais aussi beaucoup de Capture The Flag et de défis de cybersécurité.
Sommaire
write-ups et tools THCon - Cet article fait partie d'une série.
Partie 7: Cet article

De quoi parle-t-on ?
#

La THCon (Toulouse Hacking convention), est une conférence française sur la cybersécurité qui réunit des amateurs, des professionnels et des chercheurs chaque année à Toulouse au mois d’avril.

Pour cette édition (2025), j’ai été l’un des créateurs de défis et j’ai créé un défi de geoINT en 6 parties, quelques défis de stéganographie, et j’ai fait en sorte que tous les défis soient conformes au lore (ce qui n’est pas peu faire).

Note : dans le cas où le CTFd n’est plus en ligne, si vous n’avez pas participé, ou si vous ne vous souvenez pas des défis, vous pouvez jeter un coup d’œil sur https://ctftime.org/event/2660/tasks/ bien que tous ne soient malheureusement pas listés :/

Si vous voulez essayer les défis, mon grand ami Baptiste Rébillard (@rubiks) héberge le défi complet sur son site : https://baptiste-reb.fr/gunnars_vacation/

Les writeups
#

alt text

Easy
#

Recherche d’un hotel
#

Le premier défi consistait à obtenir le nom de l’hôtel dans lequel Gunnar avait séjourné. Aucun souci pour ce chall, la forme de la route vous permet d’obtenir l’emplacement exact.

Reverse search sur une île
#

Le deuxième chall nécessitait que vous fassiez une recherche inversée de base pour obtenir le nom du lieu (Capo Testa en Sardaigne). De là, en regardant l’endroit d’où la photo a été prise, vous pouvez voir que la photo a été prise sur un promontoire rocheux. À partir de là, vous pouvez soit penser intelligemment et choisir l’endroit indiqué sur Open Street Maps comme un point de vue, soit essayer les quelques gros rochers à proximité (et vous faire rôtir par gl4d0s plusieurs fois dans le processus).

Moyen
#

Ces défis ont été conçus pour être réalisables avec des outils OSINT de base.

Au-dessus des montages embrummées
#

The third challenge. Nous voyons que nous sommes sur la côte, probablement la côte française ou italienne puisque les vacances de Gunnar semblent tourner autour de la mer Méditerranée. Nous sommes près d’un port, mais les recherches inversées ne sont pas très efficaces dans ce cas. Après quelques recherches, nous constatons que les collines de forme particulière situées derrière la baie peuvent faire l’objet d’une recherche inversée. Après cela, tout ce que nous avons à faire est d’obtenir une référence de la forme des maisons pour les aligner parfaitement.

Follow the white tramway engine
#

Le quatrieme challenge était en deux étapes. On voit qu’il y a un nexity (une agence immobilière française) mais sans savoir où il se trouve (et il y en a beaucoup en France !). La solution consiste à repérer la ville où l’on se trouve en effectuant une recherche inversée sur la locomotive du tramway. Sa forme nous indique que nous sommes à Marseille, ville dans laquelle il n’y a que 3 nexity :)

Hard
#

Les véritables défis intéressants (sauf pour l’équipe qui a cliqué au hasard sur la carte et « Oh, c’est là »).

Overpass this !
#

Le cinquième défi comprennait une photo d’une ville sur la côte avec un Spar près du bord de mer. La qualité de l’image étant assez faible, il était difficile (mais pas impossible) d’effectuer une recherche inversée.

Une façon de résoudre ce problème est de chercher des spars près d’une plage avec overpass turbo. Il y en a beaucoup, mais la côte très découpée peut nous aider à filtrer beaucoup d’entre eux puisque nous savons qu’il nous faut une crique d’une forme particulière.

Voici une requête qu’un participant a faite pour réduire encore plus la liste :

[out:json][timeout:800];

// Define France area
area["name"="France"][admin_level=2]->.fr;

// Find roundabouts in France
(
  node["junction"="roundabout"](area.fr);
  way["junction"="roundabout"](area.fr);
)->.roundabouts;

// Find beaches in France
(
  way["natural"="beach"](area.fr);
  relation["natural"="beach"](area.fr);
)->.beaches;

// Find Spar supermarkets
(
  node["shop"="supermarket"]["brand"="Spar"](area.fr);
  way["shop"="supermarket"]["brand"="Spar"](area.fr);
)->.spar;

// Filter Spar shops near roundabouts (300m)
(
  node.spar(around.roundabouts:300);
  way.spar(around.roundabouts:300);
)->.spar_near_roundabout;

// Filter Spar shops near beaches (100m)
(
  node.spar_near_roundabout(around.beaches:100);
  way.spar_near_roundabout(around.beaches:100);
);

// Output result
out center;

Voici la sortie : https://overpass-turbo.eu/s/22lE

Vivent les Isoplèthes
#

Le sixième défi impliquait une triangulation, mais comme certaines routes sont des routes nationales, et d’autres des routes très rurales, une distance en vol d’oiseaux ne serait pas très utile (le point qui correspond à ce type d’équidistances est au milieu de la mer).

Il faut prendre les isoplèthes de la distance (aussi appelés isodistances) : J’ai utilisé l’outil https://www.smappen.com/app/ qui est gratuit en ligne, mais vous pouvez aussi le faire en utilisant les données OSM.

alt text

Il y a très peu de points où elles se croisent, et nous pouvons le vérifier en utilisant street view (ou panoramax qui donne l’image exacte)

Quelques mots sur l’aspect techniques
#

Avec Baptiste Rébillard (un autre membre de mon équipe de CTF) nous avons réalisé l’interface suivante :

alt text
Voici une version réduite de l’interface avec une seule carte et une réponse codée en dur (bien sûr, dans le vrai CTF, les coordonnées se trouvaient dans le back-end et n’étaient pas disponibles dans le front-end). J’ai également réduit le nombre de lignes gl4d0s passives-agressives. Veuillez noter que dans le vrai CTF, vous deviez être à moins de 20 mètres pour avoir le drapeau. Dans la version réduite, si vous cliquez à 100m, le drapeau sera toujours considéré comme bon parce que j’ai eu la flemme de faire ça proprement (j’ai juste arrondi les valeurs lat/long au lieu de calculer la distance) mais au moins vous pouvez vous faire roast par Gl4d0s et c’est déjà quelque chose :).

Si vous voulez essayer les défis complets, mon grand ami Baptiste Rébillard (@rubiks) héberge le défi complet sur son site : https://baptiste-reb.fr/gunnars_vacation/

write-ups et tools THCon - Cet article fait partie d'une série.
Partie 7: Cet article