Hexa OSINT CTF - Write-up - CadricielMalveillant
Rédigé par Neticien et Maltemo
Introduction
Welcome 10 pts
Dans la première épreuve, on apprend qu’un groupe de personnes fomentent un plan sombre et macchiavélique. Ce groupe s’appelle Manipar.
Ce groupe dispose d’un blog exposé sur la Toile, on nous charge de trouver ce blog.
Commençons notre recherche à l’aide du moteur de recherche Google, du plus large au plus ciblé :
Manipar
"Manipar"
"Manipar" blog
"Manipar" skyblog
"Manipar" blogspot
intitle:Manipar
intitle:Manipar blog
Les résultats de ces recherches ne convenant pas, et par manque de patience, l’indice gratuit est utilisé afin de gagner du temps :
Insérer l’indice lorsque l’on pourra le récupérer.
Effectivement, l’idée d’utiliser le domaine de premier niveau (Top Level Domain) .blog
ne m’était pas venu à l’idée.
Le lien menant au blog du groupe Manipar est récupéré, ainsi que le drapeau pour valider l’épreuve à partir du site web http://manipar.blog/
Drapeau
Flag{Welcome_to_the_CTF}
Méthode alternative
Avec du recul, la solution aurait pu être trouvé facilement en utilisant le site DotDB.
Ce site permet de chercher des noms de domaines de sites enregistrés, en se basant sur un mot clé.
Money money money 100 pts
Le site propose deux grandes sections:
La section About
présente un gros indice.
Our collective advocates freedom of expression, through massive information sharing. We also maintain a blog in which we follow the daily activity of leaks. On this site, you can follow our blog where our member will post many topics.
And above all, know that we love robots very much.
Le mot robot fait référence au fichier standard intitulé robots.txt
(ou aux robots butineurs de Toile), présent à la racine des sites internet. Ce fichier est utilisé pour indiquer aux butineurs (crawlers) des moteurs de recherche quelles parties du site peuvent être indexées ou non.
http://manipar.blog/robots.txt
User-agent: *
Disallow: /wp-admin/
Disallow: bank.manipar.blog
Allow: /wp-admin/admin-ajax.php
On obtient alors plusieurs informations:
- Le site a été créé avec l’outil WordPress
- On peut alors prévoir les répertoires existant, on peut aussi extraire la liste des utilisateurs avec un scan actif (attention, on sort du cadre de l’OSINT)
- Le site dispose d’un sous-domaine
bank.manipar.blog
Commençons par le sous domaine, qui semble s’apparenter au nom de l’épreuve.
https://bank.manipar.blog/
For every transaction, please use this :
0x630D6640eB3cAad3f43dB7abe6657AC478074Bd0 Cryptoka.
Flag{Cryptoka_the_4cc0untant}
Drapeau
Flag{Cryptoka_the_4cc0untant}
Cette épreuve dévérrouille l’ensemble des épreuves de la section The Accountant.
Post 100 pts
Parmi les articles, un attire notre attention par son titre : “They talk about us”.
Une image d’un article de journal y est présentée. En s’attardant sur son contenu, on découvre le pseudonyme du blogueur : Chainburst
.
Drapeau
Flag{Chainburst}
Cette épreuve dévérrouille l’ensemble des épreuves de la section The Blogger.
Resources 100 pts
Pour cette épreuve, on se ressert de l’information récupérée plus tôt dans l’épreuve Money money money
, en particulier le fait que le blog utilise WordPress.
En effet, cet outil dispose d’un schema de répertoire bien définit car spécifique à cette application. Ainsi, on retrouvera souvent les interfaces de connexions des administrateurs dans le fichier wp-login
ou wp-admin
.
Dans notre cas, nous cherchons une image, qui sera sûrement rangé dans le répertoire des ressources, appelé wp-content/uploads/
.
Dans le cas où l’outil pour créer le site web est moins connu, une méthode générique permet de récupérer cette information :
- Clic droit sur une image du site;
- Copier le lien de l’image;
- Décortiquer le lien pour en extraire le répertoire qui nous intéresse.
http://manipar.blog/ => racine du site
wp-content/uploads/2021/10/ => répertoires, à comparer avec votre système de fichier
wallhaven-zxq6lw_1920x1080-1024x576.png => resource, en l’occurence une image
En accédant au répertoire wp-content
à travers ce lien, on découvre que l’ensemble des fichiers et répertoires sont listés.
Ce comportement est un défaut de configuration du serveur web et est une faille de sécurité appelée “Directory Listing” en anglais.
En effet, un serveur correctement paramétré n’affichera aucune information lorsqu’un utilisateur réalisera une requête sur un répertoire.
En exploitant ce défaut de configuration, on obtient plusieurs fichiers sortant du lot:
Le contenu du fichier TODO.txt sera utilisé dans les épreuves suivantes, nous nous attarderons sur l’image :
En effet, celle-ci contient le drapeau que nous cherchons pour continuer notre aventure :
Drapeau
Flag{DonGru_1s_0n_h1s_w4y}
Cette épreuve dévérrouille l’ensemble des épreuves de la section The Wanderer.
The Blogger
Cette section détaillera l’ensemble des étapes pour rassembler des informations sur le membre de Manipar surnommé Le Blogueur.
Hello world 200 pts
La première étape consiste à pivoter depuis le pseudonyme d’un utilisateur vers d’autres comptes créés sur d’autres plateformes, dans notre cas nous cherchons les réseaux sociaux.
Pour cela, nous allons utiliser un site qui va nous simplifier la tâche : https://whatsmyname.app/
Cette application va nous permettre de rechercher dans une longue liste de site web si un utilisateur correspondant à notre recherche existe.
On s’orientera alors vers le réseau social TikTok qui semble prometteur :
https://www.tiktok.com/@Chainburst?lang=en
Une des vidéos postées révèle le drapeau, tout en bas de l’écran :
Drapeau
Flag{Chainburst_1s_0n_T1kt0k}
Leviosaaa 300 pts
On reçoit un enregistrement sonore à décoder.
À la première écoute, on se rend compte que l’enregistrement semble être une voix accéléré puis ralentie.
En accélérant le son sur l’outil gratuit et opensource Audacity par trois, on arrive à entendre :
Do not forget the document to be sold.
Have a good day Emmaaaa
Puis sur la fin, on ralentit approximativement la vitesse d’écoute par moitié :
I know sorry, aah don’t forget about the flag: ema is Chainburst
Grâce à cette étape, on apprend le prénom de Chainburst : Ema.
Il semblerait donc qu’Ema soit une femme.
Drapeau
Flag{ema_is_Chainburst}
Biggest fan 200 pts
En fouillant parmis les vidéos, on trouve :
https://www.tiktok.com/@chainburst/video/7029285424556297478?lang=en&is_copy_url=1&is_from_webapp=v1
Le plus grand fan de Manipar nous livre une information cruciale dans ce commentaire, le nom de famille de Chainburst : Peetars
.
I don't know if UFO exists but I am following your movement with attention and I hope that I will be able to join your team Ms. Peetars !
Ainsi, on sait maintenant que Chainburst s’appelle Ema Peetars.
Cependant, cette information n’est pas tout de suite utile, car notre objectif est de trouver plus d’informations sur ce fameux fan surnommé sunrisefire
sur TikTok.
https://www.tiktok.com/@sunrisefire?lang=en
Son profil indique un second pseudonyme : sunrisef1rework
.
L’outil WhatsmMyName vu précédemment n’est cette fois-ci pas utile, car il ne renvoie aucun résultat pertinent.
En utilisant le moteur de recherche google sur le pseudonyme en question, un compte Reddit apparaît alors :
https://www.reddit.com/user/SunriseF1rework/
La photo de couverture derrière la photo de profil contient une image intéressante, un bout de drapeau y est inscrit.
3cr3t_h4
En cherchant sur Twitter, on découvre qu’un utilisateur avec un pseudonyme similaire existe :
https://twitter.com/SunriseF1rework
Un de ses tweets donne une autre partie du drapeau :
flag{M4nip4r_s
Un autre tweet montre une capture d’écran dans laquelle on voit apparaître plusieurs applications de réseaux sociaux : Reddit, Twitter et SoundCloud.
Bingo, la plateforme d’écoute de musique n’était pas encore connu dans notre enquête !
Au cas où on aurait raté cette information, un autre tweet peut nous mettre sur la piste :
It's almost time to go on a trip ! In a hurry to listen to my little playlist made up of new artists !
Voici le lien du compte de SunriseF1rework sur SoundCloud, choqué déçu de ne pas y trouver la fameuse playlist mais au moins le drapeau est là dans sa description de compte :
https://soundcloud.com/user-44108001
ckt1v1t1s}
En mettant bout à bout les trois bouts de drapeau, on obtient :
Drapeau
Flag{M4nip4r_s3cr3t_h4ckt1v1t1s}
Rename 300 pts
Nous cherchons maintenant à trouver d’autres comptes d’Ema Peetars, aka Chainburst.
Grâce à la découverte de son nom complet, nous pouvons pivoter sur plusieurs plateformes sociales utilisant l’identité des personnes comme identifiants :
En cherchant rapidement sur Facebook, on découvre le profil de la blogueuse.
Depuis son profil, dans la section « À propos » et la sous-catégorie « Informations générales et coordonnées », on peut obtenir plusieurs informations capitales pour la suite de l’investigation :
La section « Détails sur Ema » détaille la citation préférée d’Ema, qui n’est d’autre que le drapeau :
Drapeau
Flag{m3t4_1s_N3w_F4c3b00k}
Rolling in the deep 200 pts
Explorons maintenant la piste de l’adresse Gmail.
La première initiative était de trouver l’ensemble des comptes créés à partir de cette adresse email à l’aide de l’outil Holehe
.
Cependant, les résultats sont décevants, annonçant que seul le compte google existe.
On se concentre alors sur le compte Google, qui peut nous apporter de nombreuses informations supplémentaires étant donné la quantité de services proposés par Google (map, calendrier, photos, etc.).
Pour cela, nous utilisons l’outil en ligne proposé par l’entreprise Epios qui nous permet de récupérer les informations suivantes :
Email : emapeetars@gmail.com
Name : Ema P
GoogleID : 116256632717489575864
Last Update : 2021-11-27 00:34:37
Maps https://www.google.com/maps/contrib/116256632717489575864
Calendar : https://calendar.google.com/calendar/htmlembed?src=emapeetars@gmail.com
Le lien vers le calendrier semble cassé, nous laissons donc cette piste de côté pour le moment.
Cependant, le compte Google Map d’Ema nous apprend de nouvelles informations. Elle se trouvait aux Catacombes Saint Paul de Malte, où elle a laissé un commentaire à propos de l’endroit.
On trouve alors dans ce commentaire le drapeau.
Drapeau
Flag{Chainburst_w4s_1n_C4t4c0mbs}
Where are you? 200 pts
L’épreuve suivante nous a donné beaucoup de fil à retordre pour différenters raisons.
L’épreuve nous demandait de trouver le prochain compte d’Ema, en se basant sur les endroits qu’elle avait visité.
Un indice indiquait qu’Ema utilisait beaucoup de « # » croisillons (hastag pour nos collègues albions). Cette indice pouvait laisser le doute entre l’utilisation du réseau social Instagram et Twitter qui sont tous deux très portés sur le mot croisillon.
Son compte facebook regorgeait de photographies de lieux qu’Ema avait visité, ma première piste était d’identifier l’ensemble de ces destinations.
Pour cela, nous nous sommes servi de notre culture générale, des commentaires des photos et du moteur de recherche google reverse image.
Lieux identifiés :
- Dubrovnik Croatia
- Venice Italy
- Louvre Paris
- New York
- Es Vedrà Ibiza (Erasmus trip with 3 best friends)
- Vøringfossen Norway
- Sidney Australia
- National Park Banff Canada
- Tibet
- Cape Town South Africa
- Catacombes de Saint-Paul Malte
Nous nous sommes alors servi des filtres de recherches avancées de Twitter pour investiguer les différents lieux cité précédemment.
Nous avons aussi réduit nos recherches dans le temps, autour des dates de publications des autres messages sur les différents profils d’Ema.
Plusieurs pistes ont été alors explorées. Chaque poste Facebook parlant de voyage se terminait par l’émote planète.
Nous avons alors cherché des tweets datant de la période de temps qui nous intéressait, avec les destinations citées précédemment, utilisant l’émote terre.
Une autre piste était le fait que le thème de la liberté était souvent repris dans les messages des différents comptes d’Ema. Nous avons aussi cherché avec ce critère.
Malheureusement, ces deux pistes se sont avérées mauvaises.
Nous nous sommes alors concentrés sur la dernière position connue de Chainburst, c’est à dire les catacombes de Saint Paul à Malte.
Toujours rien, malgré nos recherches acharnées. Nous avons alors décidé d’utiliser un indice car nous arrivions en fin d’événement, afin de débloquer notre progression.
Hint: Did you know that it is possible to locate Tweets ?
Cette indice nous confirmes donc que nous sommes sur la bonne piste, mais que ratons nous ?
Neticien a finalement par trouver l’astuce : les lieux répertoriés par FourSquare.
En effet, lorsque vous indiquez que votre tweet a été publié dans un lieu reconnu par Foursquare, Twitter va associer votre tweet au lieu présent dans l’API de Foursquare.
En trouvant un tweet publié par des touristes ayant récemment visité les Catacombes, on trouve alors un lien vers le lieu.
Depuis ce filtre de recherche, on trouve alors le tweet d’un utilisateur appelé FreeHandcuff, un pseudonyme proche de notre hypothèse précédente sur le sujet de liberté abordé régulièrement par Ema.
En remontant sur son profil, on découvre alors dans sa description de compte le drapeau :
Drapeau
Flag{g3o_tw33t_1s_fun}
Men in black 300 pts
L’énoncé nous indique que nous avons raté des informations sur le compte Twitter de Chainburst.
Après une minutieuse analyse de l’ensemble des tweets du compte, des utilisateurs suivis par le compte, des commentaires masqués, d’analyse des images, il semblait qu’il nous manquait quelquechose.
En relisant l’énoncé, je me suis rendu compte que l’intitulé de l’épreuve donnait un gros indice.
Men in black fait référence à un film, et voici son résumé :
Chargés de protéger la Terre de toute infraction extraterrestre et de réguler l’immigration intergalactique sur notre planète, les Men in black ou MIB opèrent dans le plus grand secret. Vêtus de costumes sombres et équipés des toutes dernières technologies, ils passent inaperçus aux yeux des humains dont ils effacent régulièrement la mémoire récente : la présence d’aliens sur notre sol doit rester secrète.
Source
Cette indice nous indique donc qu’un élément du compte a été supprimé, à l’image des Men in black qui peuvent effacer la mémoire des terriens ayant vu des aliens.
Pour remonter dans le temps, quoi de mieux que de monter dans une DeLorean aux côtés de « Doc » ?
Plus sérieusement, le site web archive permet de réaliser cet exploit s’il y a eu suffisament d’activité sur la page, ou qu’un utilisateur de ce service a expressement demandé l’archivage d’une page à un instant T.
Heureusement, quelqu’un semble avoir réalisé cette action dans les dates qui nous intéressent, c’est à dire en Novembre 2021.
https://web.archive.org/web/20211125140136/https://twitter.com/FreeHandcuff
On trouve alors le tweet suivant :
Российские социальные сети намного более открыты. Я свободен выражать себя так, как хочу, и могу поделиться информацией со всеми!
Flag{c4tch_tw33t_0n_W4yb4ck}
Qui une fois traduit signifie :
Are we rushing in, or are we going sneaky beaky like.
This is easy, we kill them and then we go home. We will make them regret this day.
Flag{Rush_B_on_Dust2}.
… Bon ok j’ai menti
Les médias sociaux russes sont beaucoup plus ouverts.
Je suis libre de m'exprimer comme je l'entends, et je peux partager des informations avec tout le monde !
Flag{c4tch_tw33t_0n_W4yb4ck}
Pas sûr que la vraie traduction soit plus sérieuse que la mienne
Drapeau
Flag{c4tch_tw33t_0n_W4yb4ck}
Counter Strike 300 pts
L’épreuve suivante consiste à trouver un nouveau compte d’Ema Peetars, sur un nouveau réseau social.
Le message décodé dans le défi précédent nous donne un indice, chercher sur un réseau social russe.
Le plus connu est le réseau social « V Kontakt ».
En réalisant une recherche dans ce réseau social, le profil d’Ema Peetars apparaît :
En affichant les informations détaillées du profil, on obtenait alors le drapeau de cette épreuve.
Drapeau
Flag{ema_sp34ks_Russ14n}
Pendant l’épreuve, nous avons découvert le compte VK d’Ema Peetars avant son compte facebook, notamment grâce à la recherche google suivante : "Ema Peetars"
.
Le second lien listait l’existence de nombreux utilisateurs VK, dont celui de Chainburst.
The Accountant
Cette section détaillera l’ensemble des étapes pour rassembler des informations sur le membre de Manipar surnommé Le Comptable.
Ship it 200 pts
Le but est d’identifier le constructeur d’un bateau nommé BREMER ELENA.
Sur base de son nom, il est possible d’identifier son IMO via des sites répertoriant les numéros d’identification des navires tel que celui-ci.
Nom : BREMER ELENA
IMO : 9347073
Pavillon : Allemand
Type : Navire cargo
Ensuite, un simple Dorks permet de cibler un fichier qui contiendrait le nom du chantier naval de ce bateau.
Dorks : "9347073" filetype:pdf "shipyard"
http://www.hsm-ag.de/wp-content/uploads/2015/07/MV-ELENE-BRAREN.pdf
Chantier naval : Bodewes Scheepswerven
Pays : Pays-Bas
Ville : Hoogezand
Enfin, il suffit de rechercher une entreprise nommé Bodewes et ayant un site à Hoogezand dans le registre du commerce du Pays-Bas (KVK) pour identifier le chantier naval.
Un lien vers un site Web est indiqué sur la page de commande de documents de cette structure :
Il suffit alors de suivre ce lien et de rechercher sur le site le nom du bateau pour confirmer que ROYAL BODEWES est bien le constructeur de ce bateau :
Ce qui nous donne le drapeau :
Drapeau
Flag{Royal Bodewes}
Pollution 300 pts
Nous cherchons donc une mesure de concentration d’ion hydrogène aux coordonneés 53°59.99'N08°06.40'E
en janvier 2017 effectuée par un organisme recconu.
Le but de cette recherche est d’identifier de potentiels rejets d’éléments polluants par un bateau.
Décomposons la problématique :
-
La mention concentration d'ion hydrogène
fait probablement référence au pH ou potentiel hydrogène souvent utilisé afin de détecter des ajouts d’éléments dans un milieu aqueux (ex : rejet de polluants dans l’eau).
-
Les coordonnées 53°59.99'N08°06.40'E
sont au format DDM (Degrees Decimal Minutes), il est possible de les lires ainsi :
Afin d’avoir plus de facilité dans leur manipulation, nous allons les convertirs en degrés décimaux :
Nous obtenons donc :
Lattitude : 53.999833
Longitude : 8.106667
Il suffit alors de taper ces coordonnées dans Google Maps (même si le format DDM est aussi accepté) pour obtenir l’emplacement suivant :
Ce point se situe en Mer du Nord au large du Nord de l’Allemagne.
- Dans l’intitulé, il est fait mention d’un organisme reconnu, étant donné que ces coordonnées pointent vers une localisation en Mer du Nord, il est fort probable que cet organisme soit une institution européenne.
Cherchons donc des publications d’une institution européenne concernant des études qui auraient pu être menées en Mer du Nord en 2017 sur des cas de pollutions : site:.eu "ph" "northern sea" "pollution" "2017"
.
Le second lien retourné par la recherche concerne un rapport de l’Agence Européenne pour l’Environnement dont la dernière modification date de janvier 2017 (ce qui semble coller avec la description donnée dans l’intitulé).
Cependant, sur base de l’URL report_2002_0524
, il est probable que le rapport date en réalité du 24 mai 2002.
Néanmoins, sachant que cette agence mène ce genre d’étude, des données produites ou aggrégées par cette agence sont peut-être en libre accès.
En se rendant en pieds de page, des liens des services auxquels l’EEA contribue :
Une plateforme retient mon attention : Copernicus | Europe's eyes on Earth
Il semblerait que ce service donne la possibilité de visualiser des données environnementales et notamment maritimes.
Il est notamment possible d’utiliser des outils de visualisation de données (projection sur une carte), ce qui me permettrait d’y projeter mes coordonnées :
Via le service MyOcean Pro il est possible de sélectionner un jeu de données, une fenêtre de temps et des coordonnées pour projeter des mesures (ici le pH).
Nous obtenons donc une mesure de pH (8.022) effectuée le 16 janvier 2017.
Fausse piste
Néanmoins, les coordonnées ne collent pas totalement, la mesure a été prise aux coordonnées 53.992 Nord, 8.109 Est.
Ce point est à environ 880 mètres des coordonnées qui nous ont été fournies :
J’ai donc tenté de récupérer les données brutes de cette plateforme afin d’identifier s’il n’y avait pas d’autres points aux alentours.
SYSTEM@SYSTEM:~/j_en_ai_crustacé_de_vous$ file cmems_mod_nws_bgc-ph_my_7km-3D_P1D-m_1638645759246.nc
cmems_mod_nws_bgc-ph_my_7km-3D_P1D-m_1638645759246.nc: NetCDF Data Format data
Les données sont fournies au format NetCDF qu’il est possible de décoder avec l’outil ncdump
.
SYSTEM@SYSTEM:~/j_en_ai_crustacé_de_vous$ ncdump cmems_mod_nws_bgc-ph_my_7km-3D_P1M-m_1638642727064.nc
netcdf cmems_mod_nws_bgc-ph_my_7km-3D_P1M-m_1638642727064 {
dimensions:
time = 1 ;
depth = 1 ;
latitude = 1 ;
longitude = 1 ;
variables:
float depth(depth) ;
depth:axis = "Z" ;
depth:standard_name = "depth" ;
depth:units = "m" ;
depth:positive = "down" ;
depth:long_name = "depth" ;
depth:_ChunkSizes = 24 ;
depth:_CoordinateAxisType = "Height" ;
depth:_CoordinateZisPositive = "down" ;
depth:valid_min = 0.f ;
depth:valid_max = 0.f ;
float latitude(latitude) ;
latitude:standard_name = "latitude" ;
latitude:long_name = "latitude" ;
latitude:units = "degrees_north" ;
latitude:nav_model = "grid_T" ;
latitude:axis = "Y" ;
latitude:_ChunkSizes = 375 ;
latitude:_CoordinateAxisType = "Lat" ;
latitude:valid_min = 54.0007f ;
latitude:valid_max = 54.0007f ;
float ph(time, depth, latitude, longitude) ;
ph:_FillValue = -32768.f ;
ph:standard_name = "sea_water_ph_reported_on_total_scale" ;
ph:long_name = "Sea water pH reported on total scale" ;
ph:units = "1" ;
ph:missing_value = -32768.f ;
ph:cell_methods = "time: mean" ;
ph:_ChunkSizes = 1, 24, 375, 297 ;
double time(time) ;
time:axis = "T" ;
time:calendar = "Gregorian" ;
time:long_name = "Validity time" ;
time:standard_name = "time" ;
time:units = "seconds since 1970-01-01 00:00:00" ;
time:cell_methods = "time: mean" ;
time:_ChunkSizes = 512 ;
time:_CoordinateAxisType = "Time" ;
time:valid_min = 1484568000. ;
time:valid_max = 1484568000. ;
float longitude(longitude) ;
longitude:standard_name = "longitude" ;
longitude:long_name = "longitude" ;
longitude:units = "degrees_east" ;
longitude:nav_model = "grid_T" ;
longitude:axis = "X" ;
longitude:_ChunkSizes = 297 ;
longitude:_CoordinateAxisType = "Lon" ;
longitude:valid_min = 8.11083f ;
longitude:valid_max = 8.11083f ;
// global attributes:
:Conventions = "CF-1.7" ;
:references = "http://marine.copernicus.eu/" ;
:institution = "UK Met Office" ;
:netcdf-version-id = "netCDF-4" ;
:creation_date = "2020-08-08T00:00:00Z" ;
:source = "AMM-FOAM 7 km (tidal) NEMO v3.6_FABM-ERSEM v15.06_NEMOVAR v6" ;
:product = "NWSHELF_MULTIYEAR_BGC_004_011" ;
:credit = "E.U. Copernicus Marine Service Information (CMEMS)" ;
:forcing_data_source = "ECMWF; ERA5" ;
:licence = "http://marine.copernicus.eu/services-portfolio/service-commitments-and-licence/" ;
:title = "monthly-mean pH (3D)" ;
:history = "See source and creation_date attributes" ;
:contact = "servicedesk.cmems@mercator-ocean.eu" ;
:_CoordSysBuilder = "ucar.nc2.dataset.conv.CF1Convention" ;
:comment = "" ;
data:
depth = 0 ;
latitude = 54.0007 ;
ph =
8.02195 ;
time = 1484568000 ;
longitude = 8.11083 ;
}
Après quatres tentatives en échecs (et une sévère envie de mourrir <3), aucune coordonnées ne correspondaient exactement, il était temps de changer de source de données.
En chercheant des sources de données européennes, je tombe sur la plateforme d’OpenData européenne :
En tapant les bons mots clés dans la barre du moteur de recherche de jeux de données de cette plateforme, il est possible d’identifier un jeu de données qui semble coller :
hydrogen ion concentration (pH) of sea water 2017
En suivant le lien de téléchargement du jeu de données, j’atterris sur un portail de fournitures de données hydrographiques allemand :
BSH OpenData
En suivant le lien permettant de consulter les relevés de pH effectués en 2017, j’identifie une mesure dont les coordonnées correspondent exactement aux coordonnées fournis (et à la date, le 20/01/2017 à 12:48) :
Wasserstoff-Ionenkonzentration des Meerwassers (pH-Wert) 2017
Et d’après la légende, la mesure de pH serait le 13ème champ du relevé.
Keep an eye on 300 pts
Cette épreuve nous demande de trouver l’inscription d’un panneau vert présent sur une caméra de sécurité installée par DonGru.
L’énoncé utilise l’expression « keep an eye » est utilisée. Cette même expression était utilisées dans le fichier .txt que nous avions trouvé précédemment grâce au « Directory listing » sur le blog du groupe Manipar :
DonGru, you know where to go. Be there in 5 days, we have an agreement. If you don't, you know what will happen...
On the way, please sort these things out:
- contact the boss to have further instructions;
- make sure C. will be there on time;
- set up the Insecam, we need to keep an eye.
See you soon, venn.
Cryptoka.
Une référence est faite au site Insecam, qui présente une liste de caméras non sécurisées (en utilisant les identifiants par défauts du constructeur) exposées sur la Toile.
La catégorie « Marina » est donnée afin d’affiner la recherche et nous éviter de perdre trop de temps.
Au bout de la 7ème page, on finit par trouver le fameux panneau vert sur cette page :
Drapeau
Flag{Green_Turtle_Club}
Next Business 200 pts
Cette épreuve nous demande de trouver un compte du comptable utilisant le pseudonyme Cryptoka. On nous précise que ce compte lui sert à réaliser des affaires.
L’outil WhatsMyName retourne 8 différent comptes, mais aucun ne semblent correspondre à ce que l’on cherche.
Nous continuons alors notre recherche avec les moteurs de recherche Google et DuckDuckGo, sans grande réussite.
En relisant l’énoncé, je m’aperçois que la plateforme que nous cherchons permet de vendre des services à des particuliers.
Une plateforme répond à ce critère, même s’il est plus orienté sur le développement ou le design : Fiverr.
En cherchant sur ce site, on trouve alors le profil de Cryptoka : https://www.fiverr.com/cryptoka
Sa page d’accueil nous apprend plusieurs choses :
- On retrouve le voyage en Erasmus, similaire à Chainburst.
- Cette personne parle couramment Allemand et Anglais.
- Une facture est présente, elle doit sûrement contenir d’autres informations clé.
Cette facture nous indique le nom et prénom de Cryptoka : Karl VonTonberg.
Le drapeau est inscrit dans cette facture, à droite.
Drapeau
Flag{s3rv1c3_0n_F1v3rr}
The car 200 pts
L’objectif de cette épreuve consiste à retrouver le numéro de référence de fabrication du parebrise arrière de cette voiture (au format [0-9]{10}), à partir des informations présentes dans la photographie ci-dessous :
Peu d’éléments sont réellement pertinents sur cette image, hormis le tatouage de pare-brise qui contient plusieurs informations :
Il est possible de lire le nom du fabricant (Saint-Gobain SEKURIT), une partie d’un numéro d’identification (43x 002687, x étant un caractère difficile à identifier) ainsi que la marque de la voiture (Peugeot).
Faisons donc une recherche Google sur la base de ces informations : saint gobain sekurit 002687 peugeot
.
Grâce à cette recherche, nous identifions une annonce eBay concernant un pare-brise ayant un tatouage d’identification sensiblement similaire au tatouage présent sur la photo de cette épreuve :
- Type de verre : II (Verre feuilleté)
- Code européen d’identification du pays : E8 (République Tchèque)
- Numéro d’homologation au réglèment ECE R43 : 43R - 002687
- Department of Trade number : DOT 617 (Usine Saint-Gobain Sekurit, Rep. Tchèque à Horovice)
- Identifiant américain de référence constructeur : M452
- Type de verre au standard américain : AS1 (verre feuilleté)
Source : https://www.carwindshields.info/windshieldmarkings
En complément des identifiants présents sur le tatouage, l’annonce précise le MPN (Manufacturer Part Number) du pare-brise : 1609989480.
Cet identifiant semble correspondre au format attendu par cette épreuve.
Sur base du modèle de la voiture (Peugeot RCZ Basis, série de 2010) il est possible de pivoter sur une annonce (vente) équivalente d’un pare-brise arrière, permettant ainsi de retrouver le MPN de cette pièce : 1613329480.
Higher 400 pts
L’énoncé nous indique que le groupe Manipar essaye de vendre des photos satellites de la ville de Berlin, datant du 25 Novembre 1970.
Le service de renseignement allemand cherche à savoir si ces données ont réellement été subtilisées.
Notre objectif, si nous l’acceptons (oui), trouver en source ouverte cette photo. Le drapeau devra contenir l’identifiant d’entité de la photo satellite.
Le première étape était de vérifier si cette information était accessible depuis le moteur de recherche Google.
En cherchant les mots clés berlin satellite photo 1970
, on découvre parmi les résultats, une photo de qui correspond aux dates indiquées :
Le site, qui répertorie des bases aériennes allemandes durant la seconde guerre mondiale et la guerre froide, n’indique pas d’identifiant d’entité pour cette image mais apporte d’autres information.
La photo provient de US Geological Survey
, d’après la légende en bas à gauche.
Cette entité américaine définit aussi comment se construit un « Entity ID » sur son site :
Entity ID
Field Definition: The Entity ID consist of a two digit data set designator and the Photo ID. The unique accession photo id, developed for each agency, allows identification within the EROS database that is comparable with the agency’s original identification.
Format:
DDAPPPPPRRRFFFF
DD = Data set designator (AR)
A = Agency
P = Project
R = Roll
F = Frame
Example:
AR5750022260121
L’objectif suivant est de trouver un site (probablement de l’US Geological Survey ou USGS) donnant l’accès à ces images satellites avec l’identifiant d’entité.
Nous affinons la recherche google avec les nouvelles informations récupérées :
"Entity ID" November 1970" "berlin" satellite usgs
Un nouveau site apparaît, nous expliquant comment accéder aux informations des données des satellites militaires.
On apprend que les programmes de satellites américain qui correspond à nos dates de recherche s’appellent CORONA, ARGON, and LANYARD Program, 1959 - 1972
.
Rebondissons maintenant sur le lien associé à ces noms de satellite, on découvre alors le site “National Archives Catalog”.
Ce site contient de nombreuses archives de l’état américain, dont de nombreux documents issues de campagnes d’espionages.
L’épreuve semble toucher à sa fin, cependant l’enregistrement de l’archive rend public uniquement deux photographies : celles des villes de Moscou et de San Francisco.
Aïe, coup dur pour le joueur français.
Après beaucoup de manque de rigueur et de recherche dans le vent sur l’époque des différents programmes de photographie des satellites américains dans la fin du XXIème siècle, notre enquêteur reprend sa lecture de l’article initial.
Très bonne initiative du joueur français (sans compter le retard), car l’article indique comment se servir d’une carte interactive proposée par l’USGS (tiens, tiens, tiens), permettant de visualiser la Terre à partir d’images satellites provenant de différentes campagnes.
Encore plus intéressant, l’article explique que les noms des sources de données qui ont été déclassifiées :
Declass 1 (1996): For CORONA, ARGON, and LANYARD (1960-1972)
Declass 2 (2002): For KH-7 (1963-1967) and KH-9 (1973-1980)
Declass 3 (2013): For KH-9 (1971-1984)
Et bingo, la source Declass 1 correspond à notre période temporelle, en plus de correspondre au programme satellite vu précédemment.
Nous saisissons alors les données dans les différents filtres de recherche, comme indiqué ci-dessous :
On sélectionne la capitale Berlin (première ligne du tableau), ce qui affine encore la recherche.
Puis dans la section « Data Sets », on sélectionne la source Declass 1.
La recherche est lancée et elle retourne un seul résultat, qui dispose d’un « Entity ID » :
Drapeau
Flag{DS1112-2107DA031}
Pour votre curiosité, voici l’image que nous met à disposition l’USGS :
La qualité de l’image est malheureusement mauvaise, il doit sûrement s’agir de l’image de pré-visualisation et non l’image originale. Elle doit être disponible si vous avez la motivation de vous créer un compte sur le site d’archive depuis ce lien.
The artist 300 pts
Dans cette épreuve il nous est demandé de trouver la signification de la chaîne de caractère Untitled Collection #124242633
.
Aucun Dorks direct ou combiné ne permet d’identfier une quelconque piste.
Cependant, en saisissant Untitled Collection
dans le moteur de recherche Google, le premier résultat est associé à l’acronyme NFT (Non-Fungible Token) :
Or, ces jetons sont bien souvents associés à des œuvres au format dématérialisé, ce qui colle avec le nom de l’épreuve ainsi qu’au pseudo du Comptable (Cryptoka, visiblement friand de cybersous et potentiellement de DEEP ou Dispositif d’Enregistrement Électronique Partagé).
En suivant le premier lien, nous arrivons sur une page (d’un moteur de recherche NFT) contenant une chaîne de caractère similaire :
Cette chaîne de caractère semble indiquer qu’il s’agit d’un titre standard couplé avec un identifiant à 9 chiffres : Untitled Collection #[0-9]{9}
.
Il ne reste plus qu’à rechercher notre identifiant (124242633) dans la barre de recherche de ce moteur de recherche pour retrouver l’œuvre de Cryptoka :
Ainsi que le drapeau :
Drapeau
Flag{NFT_1s_th3_N3xt_Bus1n3ss}
Catch’em all 300 pts
Dans cette épreuve, il nous est demandé de retrouver des traces d’activités commerciales qu’aurait Cryptoka sur une plateforme de vente en ligne de particulier à particulier.
Après quelques recherches (basées sur le nom de Cryptoka : Vontonberg), nous identifions un lien étrange mentionant la mise en vente d’une carte Pokémon rare :
https://www.lacollesurloup.fr/fr/ccdifkshop/enfants/garcons/autres/1448952615-carte-pokemon&usg=AOvVaw0vp7KIURoqA1WeoASv8EOS
.
Ce lien pointe sur le site de la commune de La Colle-sur-Loup, ce qui ne colle pas avec une plateforme qui mettrais en vente ce type de bien.
Par ailleurs, ce lien ne redirige pas vers une page de mise en vente de carte Pokémon :
Il est donc probable que ce lien redirigeait en réalité vers une autre plateforme, prenons le lien d’origine et isolons la partie statique de l’URL via la requête Dorks : inurl:"/enfants/garcons/autres/"
Il semblerait que ce lien pointait à l’origine vers la plateforme Vinted, ce qui colle avec la description (vente de particulier à particulier).
Recherchons M. Vontonberg sur la plateforme Vinted :
Il semblerait que Cryptoka a bien mis en vente une carte Pokémon sur ce site :
Il ne nous reste plus qu’à consulter qu’à consulter son profil :
Drapeau
Flag{P0k3m0n_1s_Bus1n3ss}
Deeper 400 pts
Peu de d’information nous permettant d’établir une piste solide était renseignée dans la consigne de cette épreuve.
Néanmoins, quelques éléments nous permettaient de nous aiguiller :
- Une mention spéciale était ajoutée à la fin de la consigne nous invitant à ne pas “cliquer partout”, suggérant que nous pourrions tomber sur du contenu illicite.
- Cryptoka utiliserait un moyen d’échanger de l’information. Il est peu probable qu’il s’agisse d’une messagerie instantanée étant donné que nous devons trouver ces informations en sources ouvertes (même s’il est par exemple possible de trouver des canaux Telegram). Nous émettons donc l’hypothèse qu’il s’agit d’un collodrôme (ex : Pastebin).
Nous avons quand même tenté d’identfier des canaux Telegram qui pourraient coller à la description (Cryptoka aurait des activités commerciales louches), sans succès.
Partant de ces éléments, il est probable que ces informations se trouvent sur un des Internet Sombre, prenons le plus connu : Tor.
Nous allons utiliser un moteur de recherche indexant une bonne quantité de nœuds (ici Phobos) afin de rechercher des collodrômes :
Le troisième lien nous dirige vers DeepPaste qui en plus de nous permettre de faire des recherches dans les informations mises en ligne possède un nom qui colle avec le nom de cette épreuve :
Tentons donc des mots clés.
Le nom Cryptoka ne semble pas fonctionner et il est peu probable que M. Vontonberg prenne le risque d’utiliser son vrai nom sur ce type de plateforme.
La consigne évoque les activités commerciales louches de Cryptoka, s’il s’agit de la revente d’informations confidentielles (qui pour le coup ne sont pas si confidentielles) à travers Manipar il serait judicieux de creuser cette piste :
Effectivement, Cryptoka semble utiliser DeepPaste pour faire la promotion de son activité de revente d’informations :
Hi, I'm Karl, aka Cryptoka.
To be honest, I just wanted to say that Manipar is one of the biggest confidential information business.
If you pay us, we can give you any information you want.
Military plans, bank accounts, medical documents.. we know everything.
flag{M4n1p4r_d4rk_bus1n3ss}
Drapeau
Flag{M4n1p4r_d4rk_bus1n3ss}
Dig the past 400 pts
In the middle of your investigation, your coworker arrives urgently in your office because he needs you.
He is working on a complex case, and he received this strange message:
“Remember when Kermit did his show in that cafeteria, back in January 2004? The sentinel talked about it…
Nevermind, the source will show up on kermit’s birthday. Be there on time, please!”. We think that you could find this “kermit”,
and his birthday, so you can go back quickly on the accountant case…
Format : Flag{mm-dd}
Cette épreuve est complexe car l’artiste que nous cherchons possède un nom de scène similaire à celui de Kermit la peluche grenouille.
Dans ce genre de cas, chaque recherche est polluée par de faux positifs dû à la popularité de l’homonyme.
Il nous est toujours possible d’exclure des termes clés comme « ventriloque » en ajoutant le caractère « - » collé au début du mot.
Cependant, ce n’est pas avec cette astuce que nous avons résolu le défi.
Pas spécialement de méthodologie à connaître, juste besoin de trouver les bons mots clés et les bons filtres.
Les axes de recherche ont été :
- Kermit ventriloque qui a été écarté car trop d’acteurs ventriloques différents ont interprétés ce personnage, donc trop de chances de faux positifs (après une tentative sur l’interprète Don Reardon)
- Associer Kermit avec le pseudonyme DonGru, en supposant que Don correspondait au diminutif Donald. Cette idée provenait de l’axe de recherche précédente avec Donald Reardon.
- The sentinel la série et le film. L’hypothèse a été écartée lorsque Neticien a mentionné le fait qu’il s’agissait sûrement d’un journal.
En cherchant avec les mots clés « The Sentinel january 2004 » et en filtrant par dates sur le mois de Janvier et Février 2004, on finit par trouver un journal intitulé “Sentinel”.
En feuilletant les pages du journal du mois de Janvier, on trouve l’article que nous cherchions:
En dessous de l’image du comédien Kermit, on obtient son nom et prénom : Kermit Apio
.
En réalisant une recherche rapide, on obtient un site qui nous donne de nombreuses informations sur l’artiste :
- Full Name: Kermet Apio
- Occupation: Comedian
- Age: 54
- Date of Birth: July 2, 1967
- Place of Birth: Honolulu, United States
- Star Sign: Cancer
- Country: United States
- Gender: Male
Grâce à sa date de naissance, on peut valider le drapeau en indiquant le drapeau au format Flag{MM-DD}
The Wanderer
Cette section détaillera l’ensemble des étapes pour rassembler des informations sur le membre de Manipar surnommé Le Vagabond.
Indoor 200 pts
Il nous est demandé d’identifier la localisation du lieu depuis lequel a été prise la photo identifiée dans l’épreuve Resources
.
Un simple strings
de la photo permet d’identifier des métadonnées EXIF en en-tête du fichier :
<x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="XMP Core 6.0.0">
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
<rdf:Description rdf:about=""
xmlns:exif="http://ns.adobe.com/exif/1.0/"
xmlns:tiff="http://ns.adobe.com/tiff/1.0/">
<exif:GPSVersionID>2.3.0.0</exif:GPSVersionID>
<exif:GPSLongitude>11,23.0793E</exif:GPSLongitude>
<exif:PixelXDimension>346</exif:PixelXDimension>
<exif:GPSLongitudeRef>E</exif:GPSLongitudeRef>
<exif:GPSLatitudeRef>N</exif:GPSLatitudeRef>
<exif:GPSLatitude>59,7.681N</exif:GPSLatitude>
<exif:PixelYDimension>768</exif:PixelYDimension>
<tiff:ResolutionUnit>1</tiff:ResolutionUnit>
<tiff:XResolution>1</tiff:XResolution>
<tiff:YResolution>1</tiff:YResolution>
<tiff:Orientation>1</tiff:Orientation>
</rdf:Description>
</rdf:RDF>
</x:xmpmeta>
Coordonnées : 59°7.681'N,11°23.0793'E
Une fois les coordonnées saisies dans Google Maps, il semblerait que la photo ait été prise à Halden en Norvège.
Tourism 200 pts
Dans cette épreuve, il nous est demandé de retrouver le nom du lieu depuis lequel la photo ci-dessous a été prise :
La précédente épreuve exploitait la présence de coordonnées GPS dans des métadonnées EXIF, il est donc peu probable que ce même mécanisme soit réutilisé.
Dans le doute, faisont une petite vérification :
SYSTEM@SYSTEM:~/nope$ exiftool building.png
ExifTool Version Number : 11.88
File Name : building.png
Directory : .
File Size : 1128 kB
File Modification Date/Time : 2021:12:04 14:42:10+01:00
File Access Date/Time : 2021:12:05 22:15:02+01:00
File Inode Change Date/Time : 2021:12:04 14:42:10+01:00
File Permissions : rw-rw-r--
File Type : PNG
File Type Extension : png
MIME Type : image/png
Image Width : 770
Image Height : 625
Bit Depth : 8
Color Type : RGB with Alpha
Compression : Deflate/Inflate
Filter : Adaptive
Interlace : Noninterlaced
SRGB Rendering : Perceptual
Gamma : 2.2
Pixels Per Unit X : 3779
Pixels Per Unit Y : 3779
Pixel Units : meters
Image Size : 770x625
Megapixels : 0.481
Evidemment, aucune coordonnée GPS.
La qualité du cliché est relativement faible mais possède suffisament d’élements distinctifs (façade du bâtiment) pour qu’une recherche d’image inversée puisse fonctionner.
Certains moteurs de recherche s’appuient sur des modèles de reconnaissance d’image qui semblent plus spécialisés sur certains types d’images.
Dans notre cas il est recommandé d’utiliser les modèles de Google et/ou Yandex, j’ai souvent de bons résultats avec Yandex, tentons d’abord celui-ci.
Recherche Yandex
Bingo ! Une facade similaire est visible dans l’onglet Similar images (7ème en partant du haut).
La mention The image source is outdated or unavailable est dû au fait que nous avons revisualisé le résultat de cette recherche plusieurs jours après l’épreuve
Cette photo nous amène sur un blog qui nous permet d’identifier ce bâtiment.
Il s’agit du château Koldinghus situé au Danemark.
Find the road 200 pts
Cette fois-ci, l’épreuve se corse légèrement, on nous demande de retrouver le nom de la rue depuis laquelle le cliché ci-dessous a été pris :
Bon, éliminons d’office les EXIF et la recherche inversée, la présence du filigrane Google dans le coin supérieur gauche de la photo nous suggérant que nous allons nous lancer dans une manche de Geoguessr :
Deux bâtiments singuliers retiennent mon attention :
1. Un bâtiment ressemblant à une gare.
Celui-ci expose une devanture sur lequel semble être inscrit Hauptbahnkof.
Après une recherche, il s’agit du mot Hauptbahnhof (avec tous ces pixels qui jouent au Twister ça n’était pas évident).
On distingue aussi un logo DB, tentons donc une recherche "Hauptbahnhof DB"
:
Ces images semblent indiquer (logo au dessus d’une gare et sur un train) qu’il s’agirait d’une entreprise ferrovière privée allemande (DB étant l’acronyme de Deutsche Bahn).
2. Un bâtiment ressemblant à un hôtel.
Ce batiment expose lui aussi une devanture sur lequel est inscrit deux mots :
Le 1er est le mot ESSEN qui d’après les quelques restes de mes cours d’allemands correspond au verbe manger.
Hein ?
Le deuxième mot est masqué par des œils-de-bœuf (oui, on dit œils et pas yeux) et n’a pas l’air réellement exploitable.
Pourquoi écrire MANGER au dessus de ce qui semble être un hôtel ?
Il aurait été plus adéquat d’y écrire DORMIR (ou JOUER AU TWISTER) ?
Tout simplement parce qu’une ville allemande s’appelle MANGER (logique) :
Il ne reste plus qu’à tenter Essen Hauptbahnhof
dans Google Maps :
Et de passer en vision véhicule :
Pour retrouver le lieu pris en photo depuis la rue Hollestraße de la ville d’Essen en allemagne.
Drapeau
Flag{Hollestraße}
On the road again 200 pts
Un nouveau cliché nous est soumis pour analyse, avec cette fois-ci un environnement rural.
On nous demande de retrouver le nom du lieu (ville/village) le plus proche de l’emplacement depuis lequel le cliché a été pris.
Au premier abord, ce manque d’éléments sur lesquels il serait possible de pivoter semble rajouter de la difficulté à cette épreuve.
Pourtant, cela limite drastiquement les pistes à explorer et par extension les fausses pistes (surtout que contrairement à un cas réel de ROSO, cette épreuve est forcément réalisable).
Vous connaissez la chanson, décomposons le problème :
1. Un panneau de promotion pour la sécurité routière
Ce panneau est au centre de l’image et attire forcément directement notre attention.
Le slogan LA VITESSE TUE semble être lié à une campagne de sensibilisation à la sécurité routière.
Sur la base du slogan, il est envisageable de retrouver quel organisme a initié cette campagne et quelle zone géographique elle couvre.
Et effectivement, en rechercheant "la vitesse tue" "panneau"
via la recherche d’images du moteur Google, on identifie une image similaire au panneau :
La qualité de l’image étant bien meilleure, nous pouvons y lire : Le gouvernement du Grand-Duché du Luxembourg.
2. Un panneau de direction
Deux débuts de noms de lieux sont inscrits sur ce panneau :
Le Luxembourg n’ayant pas une superficie importante, un recoupement des noms de lieux luxembourgeois avec ces indices devrait réduire notre zone de recherche.
En utilisant cette liste Wikipédia des noms de communes luxembourgeoises nous savons désormais (via la magie du CTRL+F) que ces deux lieux sont :
Il nous suffit donc de passer en caméra véhicule Google dans cette zone relativement restreinte et de chercher ce fameux panneau :
Après quelques minutes, nous retrouvons cette intersection à proximité du lieu-dit Roost.
Fly 300 pts
Fly est l’épreuve du chemin The Wanderer qui nous aura pris le plus de temps, nous avons manuellement recherché le lieu bien qu’une technique « semi-automatique » permettait d’accélérer la recherche.
Le but de cette épreuve était d’identifier le lieu pris sur la photo satellite ci-dessous :
Dans un premier temps, identifions les points clés présents sur cette image :
1. Une piste et des marquages au sol
Deux pistes perpendiculaires (péremptoires ?) ainsi qu’un marquage au sol sont nettements visibles à droite de l’image.
Cette piste n’a pas l’air d’être faite de bitume mais plutôt de terre ou d’herbe.
2. Des bâtiments
Au centre de l’image, nous pouvons identifier des bâtiments qui ressemblent à un groupement de hangars.
Nous pouvons aussi relever la présence d’une forme ronde au milieu d’un carré de végétation.
3. Un petit avion
Proche des bâtiments, il est possible d’identifier un petit avion.
Une fois ces éléments mis ensemble, il est possible d’émettre l’hypothèse qu’il s’agit de la photo d’un petit aérodrome (hangars, la piste n’est pas en dur & présence d’un petit avion).
La forme particulière de la piste ainsi que des constructions nous permettra de reconnaitre plus facilement le lieu dans nos recherches.
D’après la consigne, ce lieu est situé dans l’Est de la France.
Grâce à une liste des aérodromes de France, nous avons pû commencer nos recherches :
Etant donné que le dernier lieu visité par DonGru était au Luxembourg, nous avons commencé par chercher des aérodromes proches de la frontière, sans succès.
Après plusieurs dizaines de minutes de recherche, nous avons décidé de rechercher un peu plus au sud et nous avons fini par tomber sur l’aérodrome de Til-Chatel.
Bonus
Pendant l’écriture de ce rapport, la résolution de cette épreuve nous a parrue quelque peu chaotique (un peu comme des pixels qui jouent au Twister).
En effet, en quelque minutes il est possible de rédiger un petit script qui importe un fichier de coordonnées, supprime ceux qui ne sont pas dans l’Est de la France et qui prend des captures d’écran d’un navigateur sur Google Maps :
import geopandas as gpd
import fiona
import gmplot
import time
import os
from selenium import webdriver
tmp_file = "tmp_map.html"
gpd.io.file.fiona.drvsupport.supported_drivers['KML'] = 'rw'
driver = webdriver.Firefox()
working_dir = os.getcwd()
dataframe = gpd.read_file('fly.kml', driver='KML')
dataframe_est = dataframe[dataframe["geometry"].x > 2.5]
del dataframe
for index, row in dataframe_est.iterrows():
gmap_tmp = gmplot.GoogleMapPlotter(row["geometry"].y,
row["geometry"].x,
17,
map_type="satellite")
gmap_tmp.draw(tmp_file)
driver.get(f"file://{working_dir}/{tmp_file}")
time.sleep(3)
driver.save_screenshot(f"{working_dir}/FLY/{row.Name}.png")
L’avantage de ce mode de fonctionnement est qu’étant donné qu’on utilise le pilote Gecko en mode graphique, il est possible de visualiser la fenêtre de navigateur ouverte par Selenium ainsi que la photo de cette épreuve sur un autre écran pour identifier bien plus efficacement l’aérodrome :
Il est fort probable qu’il y ai des solutions bien plus optimales pour résoudre cette épreuve mais ce script servira sûrement pour d’autres CTF :-).
The Statue 200 pts
Dans cette épreuve il nous est demandé de retrouver le lieu depuis lequel la photo ci-dessous a été prise :
Trois éléments semblent importants sur cette image.
1. Une plante
Une plante est visible au second plan de cette image.
Il est parfois possible de restreindre une zone de recherche en se basant sur la végétation.
Malheureusement, en se basant sur un site qui permet d’identifier le type d’une plante depuis une photo, il semblerait que cette plante (Cycas du Japon) pousse un peu partout sur le globe :
2. Une villa ?
Un bâtiment ressemblant à une villa est visible à l’arrière plan de cette photo.
Il s’agit là aussi d’une fausse piste, la photo étant assez sombre elle donne un aspect uniforme à ce qui est en réalité un ensemble de bâtiments distincts.
3. La statue
Le troisième point est bien plus intéressant.
La statue pourrait être une représentation du Petit Prince de Saint-Exupéry, plusieurs éléments confirment cette hypothèse :
- Les cheveux ébourifés;
- L’expression et l’aspect du visage (points en guise d’yeux, un air ébahi);
- Les habits (noeud papillon et ensemble);
- La pose.
Basons notre recherche sur cette fameuse statue, en tapant "statue" "petit prince" "france"
il est possible d’identifier une pose similaire (coin inférieur gauche) sur une photo d’une statue du Petit Prince :
En fouillant sur le site hébergeant cette photo, il est possible d’identfier dans l’URL https://petit-prince-collection.com/images/album/large/pavalat-les-flots.jpg
le nom d’une ville depuis laquelle la photo a potentiellement été prise.
En se rendant à Pavalas-les-Flots depuis Google Maps, nous retrouvons bien le rond point sur lequel est exposé cette statue :
Drapeau
Flag{Palavas-les-Flots}
Further 500 pts
L’épreuve nous demande de trouver la prochaine destination de notre voyageur. Il nous est aussi indiqué que nous devons nous baser sur toutes les informations que nous avons récupéré jusqu’à maintenant.
Commençons par inscrire l’ensemble des lieux où nous avons identifié notre cible durant les épreuves précédentes sur une carte :
La trajectoire de notre voyageur se déplace tout droit vers son point de rendez-vous, comme indiqué dans le message de Cryptoka à DonGru.
En zoomant sur la zone de la prochaine potentielle destination, on tombe sur l’archipel des Baléares.
Durant l’épreuve « Where are you? », on apprenait que la blogueuse Ema Peetars aka Chainburst avait été en voyage erasmus à Ibiza avec ses trois meilleurs amis sur une de ses publications Facebook.
Cette fois-ci sur le profil VKontakt d’Ema, elle indique qu’elle vient d’arriver à l’hôtel Royal plaza.
Cet hôtel se situe à Ibiza, ce qui vient recouper la première information présente sur son profil Facebook.
Enfin, la section du message de Cryptoka à DonGru make sure C. will be there on time
fait référence à Chainburst, ce qui veut dire que le lieu de rendez-vous semble être à Ibiza.
Nous essayons cette hypothèse et obtenons la validation de l’épreuve.
The meeting 300 pts
Cette épreuve nous demande de revenir sur l’ensemble des informations que nous avons récolté au cours des épreuves précédentes, afin de trouver les informations suivantes :
- la ville du rendez-vous
- le lieu du rendez-vous
- la date du rendez-vous
Avec les trois thématiques de cette épreuve, on comprend alors que chaque thème nous apporte une réponse.
Nous avons déjà déduit la ville et le lieu dans l’épreuve précédente.
Cependant, la date reste encore une énigme.
Dans un premier temps, nous avons pensé qu’il s’agissait du résultat de l’épreuve « Dig the past ».
Cependant la soumission du résultat Flag{Ibiza|Royal plaza|2021-07-02}
est refusée.
Notre seconde hypothèse se basait sur la date de téléversement du fichier TODO.txt et au message qu’il contient.
En partant du principe que DonGru ait lu le message le jour où le fichier a été téléversé, et en se basant sur ce qu’indique le message suivant :
DonGru, you know where to go. Be there in 5 days, we have an agreement.
On peut réaliser le calcul suivant :
25 Novembre 2021 + 5 jours = 30 Novembre 2021
La soumission du résultat Flag{Ibiza|Royal plaza|2021-11-30}
nous est aussi refusée, contredisant ainsi notre seconde hypothèse.
Nous avons alors remis en question notre méthode de recherche.
Les deux premiers indices semblaient provenir d’un thème respectif :
- The Wanderer -> Ibiza
- The Blogger -> Royal plaza
- The Accountant -> ???
En suivant cette logique, nous avons commencé à passer au peigne fin l’ensemble des informations récupérées sur le thème du comptable.
C’est là qu’un élément nous a alors sauté aux yeux.
Le compte Vinted de Karl VonTonberg aka Cryptoka dispose d’une description indiquant la phrase suivante :
Please ! Do not buy me anything on 04 dec. 2021. I will be off.
Karl fait sûrement référence à la date de rendez-vous, à laquelle il ne sera pas disponible.
Nous testons cette nouvelle hypothèse, et soulagement, elle s’avère être bonne.
Drapeau
Flag{Ibiza|Royal plaza|2021-12-04}
Cette épreuve permettait de soumettre uniquement 5 réponses, d’où le soulagement de l’avoir enfin validé.
The boss
Frame 100 pts
Cette épreuve nous demande d’analyser une vidéo pour y trouver un message caché.
En réalisant des poses régulières dans la vidéo, on arrive à trouver trois morceaux de drapeau :
3very_
flag{An4lyz3
Fr4m3}
En mettant bout à bout ces trois morceaux, on obtient le drapeau final :
Drapeau
Flag{An4lyz3_3very_Fr4m3}
Note potentiellement utile pour la suite.
Jason 200 pts
En complément des morceux de drapeau, il est possible d’apercevoir des identificateurs d’ensembles de services (SSID) :
L’objectif de cette épreuve est de retrouvrer l’adresse MAC du point d’accès ManiparWifi.
Il existe un outil qui cartographie des réseaux Wi-Fi : WiGLE.
Ce service permet notamment de retrouver des points d’accès Wi-Fi en filtrant sur plusieurs critères tel que le SSID, nous permettant ainsi de retrouver l’adresse MAC de ce point d’accès : 2A:AC:50:E8:35:62
.
Drapeau
Flag{2A:AC:50:E8:35:62}
Source 200 pts
On nous indique dans l’énoncé qu’un nouveau membre a été découvert. Son pseudonyme est IntelBender
. On apprend qu’il s’agit d’une personne maîtrisant les sujets d’informatique.
Naturellement, nous utilisons l’outil WhatsMyName pour trouver les comptes associés à ce pseudonyme et on obtient :
- Un compte GitHub, une plateforme de partage de code source d’application.
- Un compte Keybase, une plateforme permettant de signer ses appareils en utilisant une clé gpg.
Le compte d’intelbender
possède un seul dépôt de code public intitulé « contact », qui contient le drapeau que nous cherchons, dans le fichier README.md
affiché par défaut sur github.
Drapeau
Flag{G1thub_is_th3_pl4ce_t0_B3}
Trebel, bass, ut base 200 pts
Comme expliqué précédemment, nous avons trouvé en plus du compte GitHub, un compte KeyBase.
La description de ce compte présente le drapeau :
Drapeau
Flag{IntelBender_1s_0n_K3ybase}
Decrypt age 400 pts
L’épreuve lit les deux épreuves précédentes.
Le dépôt github contient un fichier contact.txt
. En se basant sur les informations du Keybase (en l’occurence la clé publique gpg), l’objectif consiste à déchiffrer le contenu du fichier contact, qui est chiffré.
Nous avons rapidement identifié le type de chiffrement en remarquant que le début de chaque message était identique : kXR7VktZdyH7rvq
.
En cherchant cette chaîne de caractère sur google "kXR7VktZdyH7rvq"
, on obtenait un fichier dans pastebin.com qui indiquait le chiffrement avec l’entête suivante : BEGIN KEYBASE SALTPACK SIGNED MESSAGE.
Nous nous sommes alors dirigé vers la documentation de cette méthode de chiffrement : https://saltpack.org/
Il nous restait alors moins de 5 minutes avant la fin du CTF.
Nous avons essayé d’utiliser l’utilitaire python, mais nous avons échoué à déchiffrer le message dans le temps imparti.
Remerciements
Merci à l’équipe d’organisation de l’HexaCTF et tous les créateurs des épreuves.
L’ensemble des épreuves étaient extrêmement bien agencés, rendant l’immersion bien meilleure par rapport à la majeure partie des autres CTF d’OSINT auxquels nous avons eu l’occasion de participer jusqu’à maintenant.
Félicitations pour ça !
Cependant, il est dommage que les énoncés n’aient pas été rendus accessibles après la fin de l’épreuve afin de simplifier la rédaction des participants souhaitant réaliser un rapport écrit.
Signé : L’équipe des patatodingos de Cadriciel Malveillant.
Glossaires
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.
Hexa OSINT CTF - Write-up - CadricielMalveillant
Rédigé par Neticien et Maltemo
Introduction
Welcome 10 pts
Dans la première épreuve, on apprend qu’un groupe de personnes fomentent un plan sombre et macchiavélique. Ce groupe s’appelle Manipar.
Ce groupe dispose d’un blog exposé sur la Toile, on nous charge de trouver ce blog.
Commençons notre recherche à l’aide du moteur de recherche Google, du plus large au plus ciblé :
Les résultats de ces recherches ne convenant pas, et par manque de patience, l’indice gratuit est utilisé afin de gagner du temps :
Effectivement, l’idée d’utiliser le domaine de premier niveau (Top Level Domain)
.blog
ne m’était pas venu à l’idée.Le lien menant au blog du groupe Manipar est récupéré, ainsi que le drapeau pour valider l’épreuve à partir du site web http://manipar.blog/
Drapeau
Flag{Welcome_to_the_CTF}
Méthode alternative
Avec du recul, la solution aurait pu être trouvé facilement en utilisant le site DotDB.
Ce site permet de chercher des noms de domaines de sites enregistrés, en se basant sur un mot clé.
Money money money 100 pts
Le site propose deux grandes sections:
La section
About
présente un gros indice.Le mot robot fait référence au fichier standard intitulé
robots.txt
(ou aux robots butineurs de Toile), présent à la racine des sites internet. Ce fichier est utilisé pour indiquer aux butineurs (crawlers) des moteurs de recherche quelles parties du site peuvent être indexées ou non.http://manipar.blog/robots.txt
On obtient alors plusieurs informations:
bank.manipar.blog
Commençons par le sous domaine, qui semble s’apparenter au nom de l’épreuve.
https://bank.manipar.blog/
Drapeau
Flag{Cryptoka_the_4cc0untant}
Cette épreuve dévérrouille l’ensemble des épreuves de la section The Accountant.
Post 100 pts
Parmi les articles, un attire notre attention par son titre : “They talk about us”.
Une image d’un article de journal y est présentée. En s’attardant sur son contenu, on découvre le pseudonyme du blogueur :
Chainburst
.Drapeau
Flag{Chainburst}
Cette épreuve dévérrouille l’ensemble des épreuves de la section The Blogger.
Resources 100 pts
Pour cette épreuve, on se ressert de l’information récupérée plus tôt dans l’épreuve
Money money money
, en particulier le fait que le blog utilise WordPress.En effet, cet outil dispose d’un schema de répertoire bien définit car spécifique à cette application. Ainsi, on retrouvera souvent les interfaces de connexions des administrateurs dans le fichier
wp-login
ouwp-admin
.Dans notre cas, nous cherchons une image, qui sera sûrement rangé dans le répertoire des ressources, appelé
wp-content/uploads/
.Dans le cas où l’outil pour créer le site web est moins connu, une méthode générique permet de récupérer cette information :
En accédant au répertoire
wp-content
à travers ce lien, on découvre que l’ensemble des fichiers et répertoires sont listés.Ce comportement est un défaut de configuration du serveur web et est une faille de sécurité appelée “Directory Listing” en anglais.
En effet, un serveur correctement paramétré n’affichera aucune information lorsqu’un utilisateur réalisera une requête sur un répertoire.
En exploitant ce défaut de configuration, on obtient plusieurs fichiers sortant du lot:
Le contenu du fichier TODO.txt sera utilisé dans les épreuves suivantes, nous nous attarderons sur l’image :
En effet, celle-ci contient le drapeau que nous cherchons pour continuer notre aventure :
Drapeau
Flag{DonGru_1s_0n_h1s_w4y}
Cette épreuve dévérrouille l’ensemble des épreuves de la section The Wanderer.
The Blogger
Cette section détaillera l’ensemble des étapes pour rassembler des informations sur le membre de Manipar surnommé Le Blogueur.
Hello world 200 pts
La première étape consiste à pivoter depuis le pseudonyme d’un utilisateur vers d’autres comptes créés sur d’autres plateformes, dans notre cas nous cherchons les réseaux sociaux.
Pour cela, nous allons utiliser un site qui va nous simplifier la tâche : https://whatsmyname.app/
Cette application va nous permettre de rechercher dans une longue liste de site web si un utilisateur correspondant à notre recherche existe.
On s’orientera alors vers le réseau social TikTok qui semble prometteur :
https://www.tiktok.com/@Chainburst?lang=en
Une des vidéos postées révèle le drapeau, tout en bas de l’écran :
Drapeau
Flag{Chainburst_1s_0n_T1kt0k}
Leviosaaa 300 pts
On reçoit un enregistrement sonore à décoder.
À la première écoute, on se rend compte que l’enregistrement semble être une voix accéléré puis ralentie.
En accélérant le son sur l’outil gratuit et opensource Audacity par trois, on arrive à entendre :
Puis sur la fin, on ralentit approximativement la vitesse d’écoute par moitié :
Grâce à cette étape, on apprend le prénom de Chainburst : Ema.
Il semblerait donc qu’Ema soit une femme.
Drapeau
Flag{ema_is_Chainburst}
Biggest fan 200 pts
En fouillant parmis les vidéos, on trouve :
https://www.tiktok.com/@chainburst/video/7029285424556297478?lang=en&is_copy_url=1&is_from_webapp=v1
Le plus grand fan de Manipar nous livre une information cruciale dans ce commentaire, le nom de famille de Chainburst :
Peetars
.Ainsi, on sait maintenant que Chainburst s’appelle Ema Peetars.
Cependant, cette information n’est pas tout de suite utile, car notre objectif est de trouver plus d’informations sur ce fameux fan surnommé
sunrisefire
sur TikTok.https://www.tiktok.com/@sunrisefire?lang=en
Son profil indique un second pseudonyme :
sunrisef1rework
.L’outil WhatsmMyName vu précédemment n’est cette fois-ci pas utile, car il ne renvoie aucun résultat pertinent.
En utilisant le moteur de recherche google sur le pseudonyme en question, un compte Reddit apparaît alors :
https://www.reddit.com/user/SunriseF1rework/
La photo de couverture derrière la photo de profil contient une image intéressante, un bout de drapeau y est inscrit.
En cherchant sur Twitter, on découvre qu’un utilisateur avec un pseudonyme similaire existe :
https://twitter.com/SunriseF1rework
Un de ses tweets donne une autre partie du drapeau :
Un autre tweet montre une capture d’écran dans laquelle on voit apparaître plusieurs applications de réseaux sociaux : Reddit, Twitter et SoundCloud.
Bingo, la plateforme d’écoute de musique n’était pas encore connu dans notre enquête !
Au cas où on aurait raté cette information, un autre tweet peut nous mettre sur la piste :
Voici le lien du compte de SunriseF1rework sur SoundCloud, choqué déçu de ne pas y trouver la fameuse playlist mais au moins le drapeau est là dans sa description de compte :
https://soundcloud.com/user-44108001
En mettant bout à bout les trois bouts de drapeau, on obtient :
Drapeau
Flag{M4nip4r_s3cr3t_h4ckt1v1t1s}
Rename 300 pts
Nous cherchons maintenant à trouver d’autres comptes d’Ema Peetars, aka Chainburst.
Grâce à la découverte de son nom complet, nous pouvons pivoter sur plusieurs plateformes sociales utilisant l’identité des personnes comme identifiants :
En cherchant rapidement sur Facebook, on découvre le profil de la blogueuse.
Depuis son profil, dans la section « À propos » et la sous-catégorie « Informations générales et coordonnées », on peut obtenir plusieurs informations capitales pour la suite de l’investigation :
La section « Détails sur Ema » détaille la citation préférée d’Ema, qui n’est d’autre que le drapeau :
Drapeau
Flag{m3t4_1s_N3w_F4c3b00k}
Rolling in the deep 200 pts
Explorons maintenant la piste de l’adresse Gmail.
La première initiative était de trouver l’ensemble des comptes créés à partir de cette adresse email à l’aide de l’outil
Holehe
.Cependant, les résultats sont décevants, annonçant que seul le compte google existe.
On se concentre alors sur le compte Google, qui peut nous apporter de nombreuses informations supplémentaires étant donné la quantité de services proposés par Google (map, calendrier, photos, etc.).
Pour cela, nous utilisons l’outil en ligne proposé par l’entreprise Epios qui nous permet de récupérer les informations suivantes :
Le lien vers le calendrier semble cassé, nous laissons donc cette piste de côté pour le moment.
Cependant, le compte Google Map d’Ema nous apprend de nouvelles informations. Elle se trouvait aux Catacombes Saint Paul de Malte, où elle a laissé un commentaire à propos de l’endroit.
On trouve alors dans ce commentaire le drapeau.
Drapeau
Flag{Chainburst_w4s_1n_C4t4c0mbs}
Where are you? 200 pts
L’épreuve suivante nous a donné beaucoup de fil à retordre pour différenters raisons.
L’épreuve nous demandait de trouver le prochain compte d’Ema, en se basant sur les endroits qu’elle avait visité.
Un indice indiquait qu’Ema utilisait beaucoup de « # » croisillons (hastag pour nos collègues albions). Cette indice pouvait laisser le doute entre l’utilisation du réseau social Instagram et Twitter qui sont tous deux très portés sur le mot croisillon.
Son compte facebook regorgeait de photographies de lieux qu’Ema avait visité, ma première piste était d’identifier l’ensemble de ces destinations.
Pour cela, nous nous sommes servi de notre culture générale, des commentaires des photos et du moteur de recherche google reverse image.
Lieux identifiés :
Nous nous sommes alors servi des filtres de recherches avancées de Twitter pour investiguer les différents lieux cité précédemment.
Nous avons aussi réduit nos recherches dans le temps, autour des dates de publications des autres messages sur les différents profils d’Ema.
Les filtres
until:
etsince:
permettent de filtrer dans le temps les recherches.Le filtre
geocode
permet de préciserlatitude,longitude,radius
.Source sur laquelle nous nous sommes basée.
Plusieurs pistes ont été alors explorées. Chaque poste Facebook parlant de voyage se terminait par l’émote planète.
Nous avons alors cherché des tweets datant de la période de temps qui nous intéressait, avec les destinations citées précédemment, utilisant l’émote terre.
Une autre piste était le fait que le thème de la liberté était souvent repris dans les messages des différents comptes d’Ema. Nous avons aussi cherché avec ce critère.
Malheureusement, ces deux pistes se sont avérées mauvaises.
Nous nous sommes alors concentrés sur la dernière position connue de Chainburst, c’est à dire les catacombes de Saint Paul à Malte.
Toujours rien, malgré nos recherches acharnées. Nous avons alors décidé d’utiliser un indice car nous arrivions en fin d’événement, afin de débloquer notre progression.
Cette indice nous confirmes donc que nous sommes sur la bonne piste, mais que ratons nous ?
Neticien a finalement par trouver l’astuce : les lieux répertoriés par FourSquare.
En effet, lorsque vous indiquez que votre tweet a été publié dans un lieu reconnu par Foursquare, Twitter va associer votre tweet au lieu présent dans l’API de Foursquare.
En trouvant un tweet publié par des touristes ayant récemment visité les Catacombes, on trouve alors un lien vers le lieu.
Depuis ce filtre de recherche, on trouve alors le tweet d’un utilisateur appelé FreeHandcuff, un pseudonyme proche de notre hypothèse précédente sur le sujet de liberté abordé régulièrement par Ema.
En remontant sur son profil, on découvre alors dans sa description de compte le drapeau :
Drapeau
Flag{g3o_tw33t_1s_fun}
Men in black 300 pts
L’énoncé nous indique que nous avons raté des informations sur le compte Twitter de Chainburst.
Après une minutieuse analyse de l’ensemble des tweets du compte, des utilisateurs suivis par le compte, des commentaires masqués, d’analyse des images, il semblait qu’il nous manquait quelquechose.
En relisant l’énoncé, je me suis rendu compte que l’intitulé de l’épreuve donnait un gros indice.
Men in black fait référence à un film, et voici son résumé :
Cette indice nous indique donc qu’un élément du compte a été supprimé, à l’image des Men in black qui peuvent effacer la mémoire des terriens ayant vu des aliens.
Pour remonter dans le temps, quoi de mieux que de monter dans une DeLorean aux côtés de « Doc » ?
Plus sérieusement, le site web archive permet de réaliser cet exploit s’il y a eu suffisament d’activité sur la page, ou qu’un utilisateur de ce service a expressement demandé l’archivage d’une page à un instant T.
Heureusement, quelqu’un semble avoir réalisé cette action dans les dates qui nous intéressent, c’est à dire en Novembre 2021.
https://web.archive.org/web/20211125140136/https://twitter.com/FreeHandcuff
On trouve alors le tweet suivant :
Qui une fois traduit signifie :
… Bon ok j’ai menti
Pas sûr que la vraie traduction soit plus sérieuse que la mienne
Drapeau
Flag{c4tch_tw33t_0n_W4yb4ck}
Counter Strike 300 pts
L’épreuve suivante consiste à trouver un nouveau compte d’Ema Peetars, sur un nouveau réseau social.
Le message décodé dans le défi précédent nous donne un indice, chercher sur un réseau social russe.
Le plus connu est le réseau social « V Kontakt ».
En réalisant une recherche dans ce réseau social, le profil d’Ema Peetars apparaît :
En affichant les informations détaillées du profil, on obtenait alors le drapeau de cette épreuve.
Drapeau
Flag{ema_sp34ks_Russ14n}
Pendant l’épreuve, nous avons découvert le compte VK d’Ema Peetars avant son compte facebook, notamment grâce à la recherche google suivante :
"Ema Peetars"
.Le second lien listait l’existence de nombreux utilisateurs VK, dont celui de Chainburst.
The Accountant
Cette section détaillera l’ensemble des étapes pour rassembler des informations sur le membre de Manipar surnommé Le Comptable.
Ship it 200 pts
Le but est d’identifier le constructeur d’un bateau nommé BREMER ELENA.
Sur base de son nom, il est possible d’identifier son IMO via des sites répertoriant les numéros d’identification des navires tel que celui-ci.
Nom :
BREMER ELENA
IMO :
9347073
Pavillon :
Allemand
Type :
Navire cargo
Ensuite, un simple Dorks permet de cibler un fichier qui contiendrait le nom du chantier naval de ce bateau.
Dorks :
"9347073" filetype:pdf "shipyard"
http://www.hsm-ag.de/wp-content/uploads/2015/07/MV-ELENE-BRAREN.pdf
Chantier naval :
Bodewes Scheepswerven
Pays :
Pays-Bas
Ville :
Hoogezand
Enfin, il suffit de rechercher une entreprise nommé Bodewes et ayant un site à Hoogezand dans le registre du commerce du Pays-Bas (KVK) pour identifier le chantier naval.
Un lien vers un site Web est indiqué sur la page de commande de documents de cette structure :
Il suffit alors de suivre ce lien et de rechercher sur le site le nom du bateau pour confirmer que ROYAL BODEWES est bien le constructeur de ce bateau :
Ce qui nous donne le drapeau :
Drapeau
Flag{Royal Bodewes}
Pollution 300 pts
Nous cherchons donc une mesure de concentration d’ion hydrogène aux coordonneés
53°59.99'N08°06.40'E
en janvier 2017 effectuée par un organisme recconu.Le but de cette recherche est d’identifier de potentiels rejets d’éléments polluants par un bateau.
Décomposons la problématique :
La mention
concentration d'ion hydrogène
fait probablement référence au pH ou potentiel hydrogène souvent utilisé afin de détecter des ajouts d’éléments dans un milieu aqueux (ex : rejet de polluants dans l’eau).Les coordonnées
53°59.99'N08°06.40'E
sont au format DDM (Degrees Decimal Minutes), il est possible de les lires ainsi :Afin d’avoir plus de facilité dans leur manipulation, nous allons les convertirs en degrés décimaux :
Nous obtenons donc :
Lattitude :
53.999833
Longitude :
8.106667
Il suffit alors de taper ces coordonnées dans Google Maps (même si le format DDM est aussi accepté) pour obtenir l’emplacement suivant :
Ce point se situe en Mer du Nord au large du Nord de l’Allemagne.
Cherchons donc des publications d’une institution européenne concernant des études qui auraient pu être menées en Mer du Nord en 2017 sur des cas de pollutions :
site:.eu "ph" "northern sea" "pollution" "2017"
.Le second lien retourné par la recherche concerne un rapport de l’Agence Européenne pour l’Environnement dont la dernière modification date de janvier 2017 (ce qui semble coller avec la description donnée dans l’intitulé).
Cependant, sur base de l’URL
report_2002_0524
, il est probable que le rapport date en réalité du 24 mai 2002.Néanmoins, sachant que cette agence mène ce genre d’étude, des données produites ou aggrégées par cette agence sont peut-être en libre accès.
En se rendant en pieds de page, des liens des services auxquels l’EEA contribue :
Une plateforme retient mon attention :
Copernicus | Europe's eyes on Earth
Il semblerait que ce service donne la possibilité de visualiser des données environnementales et notamment maritimes.
Il est notamment possible d’utiliser des outils de visualisation de données (projection sur une carte), ce qui me permettrait d’y projeter mes coordonnées :
Via le service MyOcean Pro il est possible de sélectionner un jeu de données, une fenêtre de temps et des coordonnées pour projeter des mesures (ici le pH).
Nous obtenons donc une mesure de pH (8.022) effectuée le 16 janvier 2017.
Fausse piste
Néanmoins, les coordonnées ne collent pas totalement, la mesure a été prise aux coordonnées 53.992 Nord, 8.109 Est.
Ce point est à environ 880 mètres des coordonnées qui nous ont été fournies :
J’ai donc tenté de récupérer les données brutes de cette plateforme afin d’identifier s’il n’y avait pas d’autres points aux alentours.
Les données sont fournies au format NetCDF qu’il est possible de décoder avec l’outil
ncdump
.Après quatres tentatives en échecs (et une sévère envie de mourrir <3), aucune coordonnées ne correspondaient exactement, il était temps de changer de source de données.
En chercheant des sources de données européennes, je tombe sur la plateforme d’OpenData européenne :
En tapant les bons mots clés dans la barre du moteur de recherche de jeux de données de cette plateforme, il est possible d’identifier un jeu de données qui semble coller :
hydrogen ion concentration (pH) of sea water 2017
En suivant le lien de téléchargement du jeu de données, j’atterris sur un portail de fournitures de données hydrographiques allemand :
BSH OpenData
En suivant le lien permettant de consulter les relevés de pH effectués en 2017, j’identifie une mesure dont les coordonnées correspondent exactement aux coordonnées fournis (et à la date, le 20/01/2017 à 12:48) :
Wasserstoff-Ionenkonzentration des Meerwassers (pH-Wert) 2017
Et d’après la légende, la mesure de pH serait le 13ème champ du relevé.
Drapeau
Flag{8,09}
Keep an eye on 300 pts
Cette épreuve nous demande de trouver l’inscription d’un panneau vert présent sur une caméra de sécurité installée par DonGru.
L’énoncé utilise l’expression « keep an eye » est utilisée. Cette même expression était utilisées dans le fichier TODO.txt que nous avions trouvé précédemment grâce au « Directory listing » sur le blog du groupe Manipar :
Une référence est faite au site Insecam, qui présente une liste de caméras non sécurisées (en utilisant les identifiants par défauts du constructeur) exposées sur la Toile.
La catégorie « Marina » est donnée afin d’affiner la recherche et nous éviter de perdre trop de temps.
Au bout de la 7ème page, on finit par trouver le fameux panneau vert sur cette page :
Drapeau
Flag{Green_Turtle_Club}
Next Business 200 pts
Cette épreuve nous demande de trouver un compte du comptable utilisant le pseudonyme Cryptoka. On nous précise que ce compte lui sert à réaliser des affaires.
L’outil WhatsMyName retourne 8 différent comptes, mais aucun ne semblent correspondre à ce que l’on cherche.
Nous continuons alors notre recherche avec les moteurs de recherche Google et DuckDuckGo, sans grande réussite.
En relisant l’énoncé, je m’aperçois que la plateforme que nous cherchons permet de vendre des services à des particuliers.
Une plateforme répond à ce critère, même s’il est plus orienté sur le développement ou le design : Fiverr.
En cherchant sur ce site, on trouve alors le profil de Cryptoka : https://www.fiverr.com/cryptoka
Sa page d’accueil nous apprend plusieurs choses :
Cette facture nous indique le nom et prénom de Cryptoka : Karl VonTonberg.
Le drapeau est inscrit dans cette facture, à droite.
Drapeau
Flag{s3rv1c3_0n_F1v3rr}
The car 200 pts
L’objectif de cette épreuve consiste à retrouver le numéro de référence de fabrication du parebrise arrière de cette voiture (au format [0-9]{10}), à partir des informations présentes dans la photographie ci-dessous :
Peu d’éléments sont réellement pertinents sur cette image, hormis le tatouage de pare-brise qui contient plusieurs informations :
Il est possible de lire le nom du fabricant (Saint-Gobain SEKURIT), une partie d’un numéro d’identification (43x 002687, x étant un caractère difficile à identifier) ainsi que la marque de la voiture (Peugeot).
Faisons donc une recherche Google sur la base de ces informations :
saint gobain sekurit 002687 peugeot
.Grâce à cette recherche, nous identifions une annonce eBay concernant un pare-brise ayant un tatouage d’identification sensiblement similaire au tatouage présent sur la photo de cette épreuve :
Source : https://www.carwindshields.info/windshieldmarkings
En complément des identifiants présents sur le tatouage, l’annonce précise le MPN (Manufacturer Part Number) du pare-brise : 1609989480.
Cet identifiant semble correspondre au format attendu par cette épreuve.
Sur base du modèle de la voiture (Peugeot RCZ Basis, série de 2010) il est possible de pivoter sur une annonce (vente) équivalente d’un pare-brise arrière, permettant ainsi de retrouver le MPN de cette pièce : 1613329480.
Drapeau
Flag{1613329480}
Higher 400 pts
L’énoncé nous indique que le groupe Manipar essaye de vendre des photos satellites de la ville de Berlin, datant du 25 Novembre 1970.
Le service de renseignement allemand cherche à savoir si ces données ont réellement été subtilisées.
Notre objectif, si nous l’acceptons (oui), trouver en source ouverte cette photo. Le drapeau devra contenir l’identifiant d’entité de la photo satellite.
Le première étape était de vérifier si cette information était accessible depuis le moteur de recherche Google.
En cherchant les mots clés
berlin satellite photo 1970
, on découvre parmi les résultats, une photo de qui correspond aux dates indiquées :Le site, qui répertorie des bases aériennes allemandes durant la seconde guerre mondiale et la guerre froide, n’indique pas d’identifiant d’entité pour cette image mais apporte d’autres information.
La photo provient de
US Geological Survey
, d’après la légende en bas à gauche.Cette entité américaine définit aussi comment se construit un « Entity ID » sur son site :
L’objectif suivant est de trouver un site (probablement de l’US Geological Survey ou USGS) donnant l’accès à ces images satellites avec l’identifiant d’entité.
Nous affinons la recherche google avec les nouvelles informations récupérées :
"Entity ID" November 1970" "berlin" satellite usgs
Un nouveau site apparaît, nous expliquant comment accéder aux informations des données des satellites militaires.
Même article avec une meilleur présentation trouvé lors de l’épreuve :
https://www.archives.gov/research/cartographic/aerial-photography/satellite-photography
On apprend que les programmes de satellites américain qui correspond à nos dates de recherche s’appellent
CORONA, ARGON, and LANYARD Program, 1959 - 1972
.Rebondissons maintenant sur le lien associé à ces noms de satellite, on découvre alors le site “National Archives Catalog”.
Ce site contient de nombreuses archives de l’état américain, dont de nombreux documents issues de campagnes d’espionages.
Le site vaut le coup d’œil, on y trouve notamment des écoutes d’appels téléphoniques de personnes d’intérêts des années 1940-1980 que l’on peut consulter librement.
L’épreuve semble toucher à sa fin, cependant l’enregistrement de l’archive rend public uniquement deux photographies : celles des villes de Moscou et de San Francisco.
Aïe, coup dur pour le joueur français.
Après beaucoup de manque de rigueur et de recherche dans le vent sur l’époque des différents programmes de photographie des satellites américains dans la fin du XXIème siècle, notre enquêteur reprend sa lecture de l’article initial.
Très bonne initiative du joueur français (sans compter le retard), car l’article indique comment se servir d’une carte interactive proposée par l’USGS (tiens, tiens, tiens), permettant de visualiser la Terre à partir d’images satellites provenant de différentes campagnes.
Encore plus intéressant, l’article explique que les noms des sources de données qui ont été déclassifiées :
Et bingo, la source Declass 1 correspond à notre période temporelle, en plus de correspondre au programme satellite vu précédemment.
Nous saisissons alors les données dans les différents filtres de recherche, comme indiqué ci-dessous :
On sélectionne la capitale Berlin (première ligne du tableau), ce qui affine encore la recherche.
Puis dans la section « Data Sets », on sélectionne la source Declass 1.
La recherche est lancée et elle retourne un seul résultat, qui dispose d’un « Entity ID » :
Drapeau
Flag{DS1112-2107DA031}
Pour votre curiosité, voici l’image que nous met à disposition l’USGS :
La qualité de l’image est malheureusement mauvaise, il doit sûrement s’agir de l’image de pré-visualisation et non l’image originale. Elle doit être disponible si vous avez la motivation de vous créer un compte sur le site d’archive depuis ce lien.
The artist 300 pts
Dans cette épreuve il nous est demandé de trouver la signification de la chaîne de caractère
Untitled Collection #124242633
.Aucun Dorks direct ou combiné ne permet d’identfier une quelconque piste.
Cependant, en saisissant
Untitled Collection
dans le moteur de recherche Google, le premier résultat est associé à l’acronyme NFT (Non-Fungible Token) :Or, ces jetons sont bien souvents associés à des œuvres au format dématérialisé, ce qui colle avec le nom de l’épreuve ainsi qu’au pseudo du Comptable (Cryptoka, visiblement friand de cybersous et potentiellement de DEEP ou Dispositif d’Enregistrement Électronique Partagé).
En suivant le premier lien, nous arrivons sur une page (d’un moteur de recherche NFT) contenant une chaîne de caractère similaire :
Cette chaîne de caractère semble indiquer qu’il s’agit d’un titre standard couplé avec un identifiant à 9 chiffres :
Untitled Collection #[0-9]{9}
.Il ne reste plus qu’à rechercher notre identifiant (124242633) dans la barre de recherche de ce moteur de recherche pour retrouver l’œuvre de Cryptoka :
Ainsi que le drapeau :
Drapeau
Flag{NFT_1s_th3_N3xt_Bus1n3ss}
Catch’em all 300 pts
Dans cette épreuve, il nous est demandé de retrouver des traces d’activités commerciales qu’aurait Cryptoka sur une plateforme de vente en ligne de particulier à particulier.
Après quelques recherches (basées sur le nom de Cryptoka : Vontonberg), nous identifions un lien étrange mentionant la mise en vente d’une carte Pokémon rare :
https://www.lacollesurloup.fr/fr/ccdifkshop/enfants/garcons/autres/1448952615-carte-pokemon&usg=AOvVaw0vp7KIURoqA1WeoASv8EOS
.Ce lien pointe sur le site de la commune de La Colle-sur-Loup, ce qui ne colle pas avec une plateforme qui mettrais en vente ce type de bien.
Par ailleurs, ce lien ne redirige pas vers une page de mise en vente de carte Pokémon :
Il est donc probable que ce lien redirigeait en réalité vers une autre plateforme, prenons le lien d’origine et isolons la partie statique de l’URL via la requête Dorks :
inurl:"/enfants/garcons/autres/"
Il semblerait que ce lien pointait à l’origine vers la plateforme Vinted, ce qui colle avec la description (vente de particulier à particulier).
Recherchons M. Vontonberg sur la plateforme Vinted :
Il semblerait que Cryptoka a bien mis en vente une carte Pokémon sur ce site :
Il ne nous reste plus qu’à consulter qu’à consulter son profil :
Drapeau
Flag{P0k3m0n_1s_Bus1n3ss}
Deeper 400 pts
Peu de d’information nous permettant d’établir une piste solide était renseignée dans la consigne de cette épreuve.
Néanmoins, quelques éléments nous permettaient de nous aiguiller :
Nous avons quand même tenté d’identfier des canaux Telegram qui pourraient coller à la description (Cryptoka aurait des activités commerciales louches), sans succès.
Partant de ces éléments, il est probable que ces informations se trouvent sur un des Internet Sombre, prenons le plus connu : Tor.
Nous allons utiliser un moteur de recherche indexant une bonne quantité de nœuds (ici Phobos) afin de rechercher des collodrômes :
Le troisième lien nous dirige vers DeepPaste qui en plus de nous permettre de faire des recherches dans les informations mises en ligne possède un nom qui colle avec le nom de cette épreuve :
Tentons donc des mots clés.
Le nom Cryptoka ne semble pas fonctionner et il est peu probable que M. Vontonberg prenne le risque d’utiliser son vrai nom sur ce type de plateforme.
La consigne évoque les activités commerciales louches de Cryptoka, s’il s’agit de la revente d’informations confidentielles (qui pour le coup ne sont pas si confidentielles) à travers Manipar il serait judicieux de creuser cette piste :
Effectivement, Cryptoka semble utiliser DeepPaste pour faire la promotion de son activité de revente d’informations :
Drapeau
Flag{M4n1p4r_d4rk_bus1n3ss}
Dig the past 400 pts
In the middle of your investigation, your coworker arrives urgently in your office because he needs you.
He is working on a complex case, and he received this strange message:
“Remember when Kermit did his show in that cafeteria, back in January 2004? The sentinel talked about it…
Nevermind, the source will show up on kermit’s birthday. Be there on time, please!”. We think that you could find this “kermit”,
and his birthday, so you can go back quickly on the accountant case…
Format : Flag{mm-dd}
Cette épreuve est complexe car l’artiste que nous cherchons possède un nom de scène similaire à celui de Kermit la peluche grenouille.
Dans ce genre de cas, chaque recherche est polluée par de faux positifs dû à la popularité de l’homonyme.
Il nous est toujours possible d’exclure des termes clés comme « ventriloque » en ajoutant le caractère « - » collé au début du mot.
Cependant, ce n’est pas avec cette astuce que nous avons résolu le défi.
Pas spécialement de méthodologie à connaître, juste besoin de trouver les bons mots clés et les bons filtres.
Les axes de recherche ont été :
En cherchant avec les mots clés « The Sentinel january 2004 » et en filtrant par dates sur le mois de Janvier et Février 2004, on finit par trouver un journal intitulé “Sentinel”.
En feuilletant les pages du journal du mois de Janvier, on trouve l’article que nous cherchions:
En dessous de l’image du comédien Kermit, on obtient son nom et prénom :
Kermit Apio
.En réalisant une recherche rapide, on obtient un site qui nous donne de nombreuses informations sur l’artiste :
Grâce à sa date de naissance, on peut valider le drapeau en indiquant le drapeau au format
Flag{MM-DD}
Drapeau
Flag{07-02}
The Wanderer
Cette section détaillera l’ensemble des étapes pour rassembler des informations sur le membre de Manipar surnommé Le Vagabond.
Indoor 200 pts
Il nous est demandé d’identifier la localisation du lieu depuis lequel a été prise la photo identifiée dans l’épreuve
Resources
.Un simple
strings
de la photo permet d’identifier des métadonnées EXIF en en-tête du fichier :Coordonnées :
59°7.681'N,11°23.0793'E
Une fois les coordonnées saisies dans Google Maps, il semblerait que la photo ait été prise à Halden en Norvège.
Drapeau
Flag{Halden}
Tourism 200 pts
Dans cette épreuve, il nous est demandé de retrouver le nom du lieu depuis lequel la photo ci-dessous a été prise :
La précédente épreuve exploitait la présence de coordonnées GPS dans des métadonnées EXIF, il est donc peu probable que ce même mécanisme soit réutilisé.
Dans le doute, faisont une petite vérification :
Evidemment, aucune coordonnée GPS.
La qualité du cliché est relativement faible mais possède suffisament d’élements distinctifs (façade du bâtiment) pour qu’une recherche d’image inversée puisse fonctionner.
Certains moteurs de recherche s’appuient sur des modèles de reconnaissance d’image qui semblent plus spécialisés sur certains types d’images.
Dans notre cas il est recommandé d’utiliser les modèles de Google et/ou Yandex, j’ai souvent de bons résultats avec Yandex, tentons d’abord celui-ci.
Recherche Yandex
Bingo ! Une facade similaire est visible dans l’onglet Similar images (7ème en partant du haut).
La mention The image source is outdated or unavailable est dû au fait que nous avons revisualisé le résultat de cette recherche plusieurs jours après l’épreuve
Cette photo nous amène sur un blog qui nous permet d’identifier ce bâtiment.
Il s’agit du château Koldinghus situé au Danemark.
Drapeau
Flag{Koldinghus}
Find the road 200 pts
Cette fois-ci, l’épreuve se corse légèrement, on nous demande de retrouver le nom de la rue depuis laquelle le cliché ci-dessous a été pris :
Bon, éliminons d’office les EXIF et la recherche inversée, la présence du filigrane Google dans le coin supérieur gauche de la photo nous suggérant que nous allons nous lancer dans une manche de Geoguessr :
Deux bâtiments singuliers retiennent mon attention :
1. Un bâtiment ressemblant à une gare.
Celui-ci expose une devanture sur lequel semble être inscrit Hauptbahnkof.
Après une recherche, il s’agit du mot Hauptbahnhof (avec tous ces pixels qui jouent au Twister ça n’était pas évident).
On distingue aussi un logo DB, tentons donc une recherche
"Hauptbahnhof DB"
:Ces images semblent indiquer (logo au dessus d’une gare et sur un train) qu’il s’agirait d’une entreprise ferrovière privée allemande (DB étant l’acronyme de Deutsche Bahn).
2. Un bâtiment ressemblant à un hôtel.
Ce batiment expose lui aussi une devanture sur lequel est inscrit deux mots :
Le 1er est le mot ESSEN qui d’après les quelques restes de mes cours d’allemands correspond au verbe manger.
Hein ?
Le deuxième mot est masqué par des œils-de-bœuf (oui, on dit œils et pas yeux) et n’a pas l’air réellement exploitable.
Pourquoi écrire MANGER au dessus de ce qui semble être un hôtel ?
Il aurait été plus adéquat d’y écrire DORMIR (ou JOUER AU TWISTER) ?
Tout simplement parce qu’une ville allemande s’appelle MANGER (logique) :
Il ne reste plus qu’à tenter
Essen Hauptbahnhof
dans Google Maps :Et de passer en vision véhicule :
Pour retrouver le lieu pris en photo depuis la rue Hollestraße de la ville d’Essen en allemagne.
Drapeau
Flag{Hollestraße}
On the road again 200 pts
Un nouveau cliché nous est soumis pour analyse, avec cette fois-ci un environnement rural.
On nous demande de retrouver le nom du lieu (ville/village) le plus proche de l’emplacement depuis lequel le cliché a été pris.
Au premier abord, ce manque d’éléments sur lesquels il serait possible de pivoter semble rajouter de la difficulté à cette épreuve.
Pourtant, cela limite drastiquement les pistes à explorer et par extension les fausses pistes (surtout que contrairement à un cas réel de ROSO, cette épreuve est forcément réalisable).
Vous connaissez la chanson, décomposons le problème :
1. Un panneau de promotion pour la sécurité routière
Ce panneau est au centre de l’image et attire forcément directement notre attention.
Le slogan LA VITESSE TUE semble être lié à une campagne de sensibilisation à la sécurité routière.
Sur la base du slogan, il est envisageable de retrouver quel organisme a initié cette campagne et quelle zone géographique elle couvre.
Et effectivement, en rechercheant
"la vitesse tue" "panneau"
via la recherche d’images du moteur Google, on identifie une image similaire au panneau :La qualité de l’image étant bien meilleure, nous pouvons y lire : Le gouvernement du Grand-Duché du Luxembourg.
2. Un panneau de direction
Deux débuts de noms de lieux sont inscrits sur ce panneau :
Le Luxembourg n’ayant pas une superficie importante, un recoupement des noms de lieux luxembourgeois avec ces indices devrait réduire notre zone de recherche.
En utilisant cette liste Wikipédia des noms de communes luxembourgeoises nous savons désormais (via la magie du CTRL+F) que ces deux lieux sont :
Il nous suffit donc de passer en caméra véhicule Google dans cette zone relativement restreinte et de chercher ce fameux panneau :
Après quelques minutes, nous retrouvons cette intersection à proximité du lieu-dit Roost.
Drapeau
Flag{Roost}
Fly 300 pts
Fly est l’épreuve du chemin The Wanderer qui nous aura pris le plus de temps, nous avons manuellement recherché le lieu bien qu’une technique « semi-automatique » permettait d’accélérer la recherche.
Le but de cette épreuve était d’identifier le lieu pris sur la photo satellite ci-dessous :
Dans un premier temps, identifions les points clés présents sur cette image :
1. Une piste et des marquages au sol
Deux pistes perpendiculaires (péremptoires ?) ainsi qu’un marquage au sol sont nettements visibles à droite de l’image.
Cette piste n’a pas l’air d’être faite de bitume mais plutôt de terre ou d’herbe.
2. Des bâtiments
Au centre de l’image, nous pouvons identifier des bâtiments qui ressemblent à un groupement de hangars.
Nous pouvons aussi relever la présence d’une forme ronde au milieu d’un carré de végétation.
3. Un petit avion
Proche des bâtiments, il est possible d’identifier un petit avion.
Une fois ces éléments mis ensemble, il est possible d’émettre l’hypothèse qu’il s’agit de la photo d’un petit aérodrome (hangars, la piste n’est pas en dur & présence d’un petit avion).
La forme particulière de la piste ainsi que des constructions nous permettra de reconnaitre plus facilement le lieu dans nos recherches.
D’après la consigne, ce lieu est situé dans l’Est de la France.
Grâce à une liste des aérodromes de France, nous avons pû commencer nos recherches :
Etant donné que le dernier lieu visité par DonGru était au Luxembourg, nous avons commencé par chercher des aérodromes proches de la frontière, sans succès.
Après plusieurs dizaines de minutes de recherche, nous avons décidé de rechercher un peu plus au sud et nous avons fini par tomber sur l’aérodrome de Til-Chatel.
Drapeau
Flag{Til-Châtel}
Bonus
Pendant l’écriture de ce rapport, la résolution de cette épreuve nous a parrue quelque peu chaotique (un peu comme des pixels qui jouent au Twister).
En effet, en quelque minutes il est possible de rédiger un petit script qui importe un fichier de coordonnées, supprime ceux qui ne sont pas dans l’Est de la France et qui prend des captures d’écran d’un navigateur sur Google Maps :
L’avantage de ce mode de fonctionnement est qu’étant donné qu’on utilise le pilote Gecko en mode graphique, il est possible de visualiser la fenêtre de navigateur ouverte par Selenium ainsi que la photo de cette épreuve sur un autre écran pour identifier bien plus efficacement l’aérodrome :
Il est fort probable qu’il y ai des solutions bien plus optimales pour résoudre cette épreuve mais ce script servira sûrement pour d’autres CTF :-).
The Statue 200 pts
Dans cette épreuve il nous est demandé de retrouver le lieu depuis lequel la photo ci-dessous a été prise :
Trois éléments semblent importants sur cette image.
1. Une plante
Une plante est visible au second plan de cette image.
Il est parfois possible de restreindre une zone de recherche en se basant sur la végétation.
Malheureusement, en se basant sur un site qui permet d’identifier le type d’une plante depuis une photo, il semblerait que cette plante (Cycas du Japon) pousse un peu partout sur le globe :
2. Une villa ?
Un bâtiment ressemblant à une villa est visible à l’arrière plan de cette photo.
Il s’agit là aussi d’une fausse piste, la photo étant assez sombre elle donne un aspect uniforme à ce qui est en réalité un ensemble de bâtiments distincts.
3. La statue
Le troisième point est bien plus intéressant.
La statue pourrait être une représentation du Petit Prince de Saint-Exupéry, plusieurs éléments confirment cette hypothèse :
Basons notre recherche sur cette fameuse statue, en tapant
"statue" "petit prince" "france"
il est possible d’identifier une pose similaire (coin inférieur gauche) sur une photo d’une statue du Petit Prince :En fouillant sur le site hébergeant cette photo, il est possible d’identfier dans l’URL
https://petit-prince-collection.com/images/album/large/pavalat-les-flots.jpg
le nom d’une ville depuis laquelle la photo a potentiellement été prise.En se rendant à Pavalas-les-Flots depuis Google Maps, nous retrouvons bien le rond point sur lequel est exposé cette statue :
Drapeau
Flag{Palavas-les-Flots}
Further 500 pts
L’épreuve nous demande de trouver la prochaine destination de notre voyageur. Il nous est aussi indiqué que nous devons nous baser sur toutes les informations que nous avons récupéré jusqu’à maintenant.
Commençons par inscrire l’ensemble des lieux où nous avons identifié notre cible durant les épreuves précédentes sur une carte :
La trajectoire de notre voyageur se déplace tout droit vers son point de rendez-vous, comme indiqué dans le message de Cryptoka à DonGru.
En zoomant sur la zone de la prochaine potentielle destination, on tombe sur l’archipel des Baléares.
Durant l’épreuve « Where are you? », on apprenait que la blogueuse Ema Peetars aka Chainburst avait été en voyage erasmus à Ibiza avec ses trois meilleurs amis sur une de ses publications Facebook.
Cette fois-ci sur le profil VKontakt d’Ema, elle indique qu’elle vient d’arriver à l’hôtel Royal plaza.
Cet hôtel se situe à Ibiza, ce qui vient recouper la première information présente sur son profil Facebook.
Enfin, la section du message de Cryptoka à DonGru
make sure C. will be there on time
fait référence à Chainburst, ce qui veut dire que le lieu de rendez-vous semble être à Ibiza.Nous essayons cette hypothèse et obtenons la validation de l’épreuve.
Drapeau
Flag{Ibiza}
The meeting 300 pts
Cette épreuve nous demande de revenir sur l’ensemble des informations que nous avons récolté au cours des épreuves précédentes, afin de trouver les informations suivantes :
Avec les trois thématiques de cette épreuve, on comprend alors que chaque thème nous apporte une réponse.
Nous avons déjà déduit la ville et le lieu dans l’épreuve précédente.
Cependant, la date reste encore une énigme.
Dans un premier temps, nous avons pensé qu’il s’agissait du résultat de l’épreuve « Dig the past ».
Cependant la soumission du résultat
Flag{Ibiza|Royal plaza|2021-07-02}
est refusée.Notre seconde hypothèse se basait sur la date de téléversement du fichier TODO.txt et au message qu’il contient.
En partant du principe que DonGru ait lu le message le jour où le fichier a été téléversé, et en se basant sur ce qu’indique le message suivant :
DonGru, you know where to go. Be there in 5 days, we have an agreement.
On peut réaliser le calcul suivant :
25 Novembre 2021 + 5 jours = 30 Novembre 2021
La soumission du résultat
Flag{Ibiza|Royal plaza|2021-11-30}
nous est aussi refusée, contredisant ainsi notre seconde hypothèse.Nous avons alors remis en question notre méthode de recherche.
Les deux premiers indices semblaient provenir d’un thème respectif :
En suivant cette logique, nous avons commencé à passer au peigne fin l’ensemble des informations récupérées sur le thème du comptable.
C’est là qu’un élément nous a alors sauté aux yeux.
Le compte Vinted de Karl VonTonberg aka Cryptoka dispose d’une description indiquant la phrase suivante :
Please ! Do not buy me anything on 04 dec. 2021. I will be off.
Karl fait sûrement référence à la date de rendez-vous, à laquelle il ne sera pas disponible.
Nous testons cette nouvelle hypothèse, et soulagement, elle s’avère être bonne.
Drapeau
Flag{Ibiza|Royal plaza|2021-12-04}
Cette épreuve permettait de soumettre uniquement 5 réponses, d’où le soulagement de l’avoir enfin validé.
The boss
Frame 100 pts
Cette épreuve nous demande d’analyser une vidéo pour y trouver un message caché.
En réalisant des poses régulières dans la vidéo, on arrive à trouver trois morceaux de drapeau :
3very_
flag{An4lyz3
Fr4m3}
En mettant bout à bout ces trois morceaux, on obtient le drapeau final :
Drapeau
Flag{An4lyz3_3very_Fr4m3}
Note potentiellement utile pour la suite.
Jason 200 pts
En complément des morceux de drapeau, il est possible d’apercevoir des identificateurs d’ensembles de services (SSID) :
L’objectif de cette épreuve est de retrouvrer l’adresse MAC du point d’accès ManiparWifi.
Il existe un outil qui cartographie des réseaux Wi-Fi : WiGLE.
Ce service permet notamment de retrouver des points d’accès Wi-Fi en filtrant sur plusieurs critères tel que le SSID, nous permettant ainsi de retrouver l’adresse MAC de ce point d’accès :
2A:AC:50:E8:35:62
.Drapeau
Flag{2A:AC:50:E8:35:62}
Source 200 pts
On nous indique dans l’énoncé qu’un nouveau membre a été découvert. Son pseudonyme est
IntelBender
. On apprend qu’il s’agit d’une personne maîtrisant les sujets d’informatique.Naturellement, nous utilisons l’outil WhatsMyName pour trouver les comptes associés à ce pseudonyme et on obtient :
Le compte d’
intelbender
possède un seul dépôt de code public intitulé « contact », qui contient le drapeau que nous cherchons, dans le fichierREADME.md
affiché par défaut sur github.Drapeau
Flag{G1thub_is_th3_pl4ce_t0_B3}
Trebel, bass, ut base 200 pts
Comme expliqué précédemment, nous avons trouvé en plus du compte GitHub, un compte KeyBase.
La description de ce compte présente le drapeau :
Drapeau
Flag{IntelBender_1s_0n_K3ybase}
Decrypt age 400 pts
L’épreuve lit les deux épreuves précédentes.
Le dépôt github contient un fichier
contact.txt
. En se basant sur les informations du Keybase (en l’occurence la clé publique gpg), l’objectif consiste à déchiffrer le contenu du fichier contact, qui est chiffré.Nous avons rapidement identifié le type de chiffrement en remarquant que le début de chaque message était identique :
kXR7VktZdyH7rvq
.En cherchant cette chaîne de caractère sur google
"kXR7VktZdyH7rvq"
, on obtenait un fichier dans pastebin.com qui indiquait le chiffrement avec l’entête suivante :BEGIN KEYBASE SALTPACK SIGNED MESSAGE.
Nous nous sommes alors dirigé vers la documentation de cette méthode de chiffrement : https://saltpack.org/
Il nous restait alors moins de 5 minutes avant la fin du CTF.
Nous avons essayé d’utiliser l’utilitaire python, mais nous avons échoué à déchiffrer le message dans le temps imparti.
Remerciements
Merci à l’équipe d’organisation de l’HexaCTF et tous les créateurs des épreuves.
L’ensemble des épreuves étaient extrêmement bien agencés, rendant l’immersion bien meilleure par rapport à la majeure partie des autres CTF d’OSINT auxquels nous avons eu l’occasion de participer jusqu’à maintenant.
Félicitations pour ça !
Cependant, il est dommage que les énoncés n’aient pas été rendus accessibles après la fin de l’épreuve afin de simplifier la rédaction des participants souhaitant réaliser un rapport écrit.
Signé : L’équipe des patatodingos de Cadriciel Malveillant.
Glossaires
This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International License.