Qu’est-ce donc que ceci ? #
La THCon (Toulouse Hacking convention), est une conférence française de cybersécurité qui réunit amateurs, professionnels et chercheurs chaque année à Toulouse au mois d’avril.
Pour cette édition (2024), j’étais l’un des créateurs de défis et j’ai (co-)créé quelques défis réseau, quelques défis stéganographie, et surtout un défi OSINT en 8 étapes qui a été la colonne vertébrale du lore de tout le CTF.
Voici un résumé de la structure du défi :
Note : le CTFd n’est plus en ligne, donc si vous n’avez pas participé, ou si vous ne vous souvenez pas des défis, vous pouvez jeter un coup d’œil à https://ctftime.org/event/2269/tasks/.
Détail du chall #
Where the F...rench are they ?
#
La seule information dont nous disposons est l’identification de 2 stations téléphoniques sur lesquelles le téléphone du méchant s’est connecté. Nous pouvons utiliser la plateforme de données ouvertes de l’Agence française des fréquences et des télécommunications : https://data.anfr.fr/visualisation/map/?id=observatoire_2g_3g_4g.
Cela nous donnera deux antennes, et nous pourrons donc chercher entre les deux (il en faudrait une troisième pour trianguler parfaitement, mais cela restreint déjà suffisamment la recherche) :
Cela nous laisse environ 5-10 maisons abandonnées (et comme la photo a été prise par mes soins, une recherche d’image inversée ne fonctionnera pas ^^’). Il ne faut quand même pas trop de temps pour trouver qu’il s’agit de ce bâtiment : https://www.openstreetmap.org/way/70292988
Flag : THCON{43.914-2.829}
That place's in the middle of nowhere
#
Si vous l’avez trouvé grâce à OSM, Turbo ou un autre outil, alors la deuxième étape est plus rapide, sinon vous devrez chercher un peu pour voir que “Ben Êt” a créé un nœud sur celui-ci : https://www.openstreetmap.org/node/11662494898/history/3#map=19/43.914595/2.829335 et dans les notes nous voyons que quelqu’un d’autre (Jacques) lui a dit d’arrêter de briser leur couverture en postant sur ses “socialS”. Nous recherchons donc les autres réseaux sociaux de Ben, mais il a en fait un autre nom sur les autres réseaux sociaux qui est indiqué sur sa page de profil :
Aka ben_et_ on other social media.
Nous pouvons ensuite utiliser l’un des outils de recherche de noms d’utilisateur de https://osintframework.com/ ou simplement essayer tous les médias sociaux et aboutir à https://www.reddit.com/user/Ben_Et_/.
Flag : THCON{reddit-Ben_Et_}
Shall we play a (social) game ?
#
La suite est très conventionnelle pour de l’OSINT, il suffit de parcourir le profil de Ben et de trouver une photo d’un bureau en désordre avec un ordinateur ouvert sur un chat Element avec un QR code (Ah la la ces stupides hackers…).
En scannant le QR code, vous accédez à https://mastodon.darkbackdoor.thcon.party, le réseau social interne des hackers.
Flag : THCON{https://mastodon.darkbackdoor.thcon.party}
Like a sheep among wolves
#
Il faut analyser les ≈ 600 messages postés sur le mastodon pour comprendre le plan des hackers. Si vous lisez depuis le début, vous remarquerez rapidement que les hackers organisent des réunions et publient des comptes-rendus qui sont une mine d’or d’informations. Vous pouvez les trouver en recherchant le tag #minutes.
On découvre assez vite qu’ils construisent une mallette pour transporter les clés cryptographiques utilisées pour chiffrer les satellites qu’ils ont piratés.
Il y a eu beaucoup de soin apporté à la continuité dans ce CTF, presque tous les défis (keepass, rayons cosmiques, stéganographie audio …) ont été mentionnés dans celui-ci d’une manière ou d’une autre et liés à l’intrigue globale.
Si vous avez aimé la continuité et pensez qu’elle était géniale, ou au contraire qu’elle n’apportait rien, n’hésitez pas à nous faire part de vos commentaires sur le Discord !
(Oui, il y a même une histoire d’amour dedans)
Une fois que l’objet a été identifié, il nous faut obtenir le nom de la personne qui porte la mallette. On sait d’après le compte-rendu qu’il y a des conditions à remplir pour être celui qui porte la mallette :
Il faut donc regarder les photos postées par les membres pour voir qui a des tatouages ou des cheveux teints, qui est digne de confiance (par exemple pas terraflattener qui a fait une erreur une fois, ni SpaceFlatulence qui a demandé pourquoi il n’avait pas été choisi). On déduit aussi du message de l’informaticien que le porteur est un homme.
Flag : THCON{briefcase-eddydoncavapaslatete}
To infinity and ... down on earth
#
Maintenant que vous connaissez le plan, vous savez aussi que la mallette doit rester cachée quelque part pendant environ une semaine. La police a donc besoin que vous trouviez l’endroit où elle se trouve, afin qu’elle puisse la récupérer avant les pirates.
Le procès-verbal nous indique qu’il s’agit d’une poubelle (à double fond pour être plus précis, la liste des flags aurait dû le contenir également, désolé pour ceux que cela a dérangés 😢).
La deuxième partie est quelle poubelle. Pour le savoir, il faut jeter un coup d’œil à la plateforme de suivi GPS/entraînement que les hackers utilisent (et qu’ils ont bêtement oublié d’éteindre lorsqu’ils ont transporté la mallette, quel dommage !).
Le chef du groupe leur a donné des instructions pour qu’ils puissent échanger la mallette dans la foule du centre-ville de Toulouse, et ceux qui ont fabriqué la mallette ont expliqué que son transfert d’une personne à l’autre prenait environ 3 minutes (car il existe un mécanisme qui efface la mallette si quelqu’un la prend au porteur actuel). De cette manière, il est possible de repérer le point de transfert à partir des ~ 15 traces GPS (dont la création avec opentracks a pris environ 2 jours de course et de calcul 🥵).
Vous pouvez utiliser des outils tels que GPXSee, Viking et un tas d’autres :
Par exemple, dans la dernière image (en utilisant viking), nous pouvons voir que cette personne (dont la trace est en orange) a couru et s’est arrêtée deux fois pendant presque exactement 3 minutes à chaque fois, puisqu’on sait qui avait la mallette au début, on peut trouver qui l’a eue en dernier et où elle l’a mise. (Il est amusant de constater que la poubelle a été créée sur OSM par le compte de Ben également).
Flag : THCON{bin-11662494902}
👏 Félicitations aux 6 personnes/équipes qui ont relevé l'ensemble du défi !
Première quête secondaire #
Got a rocket for ya
#
Nous trouvons sur le compte reddit de Ben qu’il a rencontré quelqu’un sur un marché :
Dark Backdoor under surveillance
#
Une fois que cela est fait, il suffit de localiser précisément quelle partie du marché est visible sur la photo et sous quel angle, puis de se rendre sur surveillance under surveillance pour trouver l’identifiant :
Seconde quête secondaire : Le dîner de cons
#
En regardant le mastodon, on finit par trouver ce message. Il nous dit qu’ils ont mangé des crêpes près de l’hôtel où la photo a été prise.
Celle-ci était un piège ! 🙀 Si vous effectuez une recherche inversée, vous serez redirigé vers les États-Unis, car il s’agit d’une photo très connue. Si vous téléchargez l’image (qui bizarrement n’est pas publiée sur mastodon mais partagée avec un lien, … quel hasard !) et que vous l’inspectez, elle contient encore des métadonnées de localisation !
En fait, l’hôtel Ibis l’a sur la façade de son bâtiment, et c’est là que la photo a été prise ! Une fois cela trouvé, il ne reste plus qu’à trouver la crêperie, l’une des crêperies les plus réputées de Toulouse.
Référence immanquable au film : https://www.allocine.fr/film/fichefilm_gen_cfilm=16731.html
Discussion technique #
Ce projet n’était pas seulement intéressant en termes d’OSINT, puisque j’ai dû créer une copie (très “cheap” et moche) de Strava pour la dernière étape qui créait automatiquement une chronologie des courses à partir de diverses traces GPX. J’ai également dû implémenter un logiciel de modification de GPX (en particulier un script pour décaler toute une trace GPS à une date particulière). Mais la partie la plus intéressante a été de me plonger dans le fonctionnement de mastodon (une alternative à X) afin de falsifier les plus de 600 messages qui ont été postés par les méchants.
J’ai développé un outil automatisé qui affiche les messages dans le bon ordre et associe les messages affichés (par le biais de leurs identifiants) à leurs dates (avec des délais spécifiés ou aléatoires entre les réponses). Cet outil pouvait ensuite être utilisé pour falsifier la date en remplaçant les valeurs de la date directement dans la base de données de notre instance de mastodonte.
Voir l’article de blog sur l’outil :