Midnight Flag CTF 2022 — OSINT Write-up
Dans la nuit du 23 au 24 avril 2022, s’est déroulé le CTF Midnight Flag “Infektion” organisé par les étudiants de l’ESNA (page d’accueil du CTF). Notre équipe a fini 1er au classement général sur plus de 200 équipes.
Pour ce write-up, je vous expliquerai comment j’ai pu résoudre la série de challenges de la catégorie OSINT du CTF.
Look more closely
Avez-vous aimé le teaser ?
On comprend directement qu’un flag va être placé sur le teaser du CTF sorti quelques semaines auparavant.
Je me rends donc dessus et commence à regarder attentivement tous les éléments du décor (lien du teaser: https://www.youtube.com/watch?v=H_FT7KB74KU).
Parfait, à 8 secondes on voit dans le terminal le flag : MCTF{GIT_GUD}
Watch your driving
On vient d'apercevoir un agent ennemi s'enfuir ! Malheureusement, nous n'avons pas réussi à l'identifier...Tout ce que nous avons en notre possession est sa plaque : "AC-749-TF"Votre mission est de retrouver où cette personne réside.
On sait qu’on doit partir de sa plaque d’immatriculation. Je me rends donc sur le site evaluer-chauffeur.fr avec sa plaque : https://evaluer-chauffeur.fr/AC-749-TF
On a ici une nouvelle information, on connait le pseudo d’un voisin de sa résidence : hervebertrand3
Nous allons donc passer par une phase d’analyse des réseaux sociaux liés à ce pseudo pour trouver des informations intéressantes.
Instagram trouvé : https://www.instagram.com/hervebertrand3/
Concentrons-nous sur 3 publications intéressantes :
Cette publication nous apprend qu’il est à Annecy également appelée la “Venise des Alpes”.
On connait maintenant la vue du balcon de sa résidence, et donc de la résidence de la personne qu’on cherche.
Le point qui va nous permet de tout retrouver : le restaurant proche de chez lui.
Nous allons donc sur l’outil le plus utilisé par les services secrets de ROSO d’État : Google
Je tape sur Google à partir des éléments présents sur l’image : “annecy the oster restaurant”. Google me propose de corriger par “The Roster”, j’accepte.
Si vous avez bien suivi les photos précédentes, on a une certaine vue donnant vers le Lac, on peut donc éliminer les 2 autres adresses de restaurant The Roster et se concentrer sur celui d’Annecy-Le-Vieux.
On vérifie en y allant avec Google Street View :
On va maintenant sur Google Earth pour se concentrer autour de cette zone et trouver une vue ressemblant à celle depuis le balcon de la résidence.
En remontant la Rue de Lachat, on tombe sur la même vue !
Le flag est la valeur MD5 de Rue de Lachat, donc MCTF{b498166a0f83d09f8b975940cf14b95d}
Will the big wheel
Nos services de renseignements viennent de recevoir un message d'un de nos agents en URSS et selon les premiers éléments nous devons rapidement le retrouver pour l'exfiltrer.Votre mission est de décoder son message et de nous renvoyer le lieu d'extraction.
Dans un premier temps, je vérifie s’il n’y a pas de données intéressantes cachées dans cette image, je passe donc l’image sur le site Aperisolve permettant plusieurs analyses approfondies d’une image :
On remarque qu’un texte en Base64 est contenu en commentaire de l’image :
WzUxLjQwMzA5LCAzMC4wNDQwMXw1MS40MDc4OSwgMzAuMDU1NjR8NTEuNDAwODksIDMwLjA2NDA4XSwgSSB3SUxsIHdBSXQgWW9VIGFUIHRIZSBjRW50RVIu
donnant une fois décodé : [51.40309, 30.04401|51.40789, 30.05564|51.40089, 30.06408], I wILl wAIt YoU aT tHe cEntER.
3 coordonnées GPS nous sont données et on comprend que la personne nous attend au centre de ces 3 points.
Je les place donc sur Google Maps :
On trouve au centre : Чорнобиль (signifiant Tchernobyl)
Le flag est la valeur MD5 donc MCTF{3687016d7a89edc046069933f208e8c8}
From Russia with love
Un agent ennemi a été identifié à l'aéroport, malheureusement, à l'exception du fait qu'il a pris un vol commercial, nous n'avons aucune information quant à sa destination...La seule information disponible sur cette personne est son reddit : "magojo__", en espérant que son contenu n'a pas été supprimé.Retrouvez le numéro de vol de son trajet ainsi que sa destination.
Je me rends donc sur son Reddit :
A première vue, rien d’intéressant à part son introduction de profil “time traveler”, faisant probablement référence à l’outil d’archive de site : archive.org
Je regarde donc à nouveau son profil, mais depuis une vue ancienne qui a été enregistrée sur : https://web.archive.org/web/20220418024637/https://www.reddit.com/user/magojo__
Super ! On peut donc continuer notre enquête sur son Twitter. Ce tweet plus particulièrement retient mon attention :
Pour pouvoir trouver ce vol, ce tweet nous donne plusieurs informations :
Il est parti de France, le 21 avril 2022, à environ 19h22
L’image elle aussi nous aide à savoir d’où est-il parti :
Des maisons avec des toits en Ardoise, beaucoup de champs sur l’image, au fond un estuaire. Mhmh, tout ceci sent les crêpes, je dirai même plus : Brest !
Je vérifie la présence d’un aéroport sur Brest et si les éléments corrèlent avec la ville sur Maps en vue satellite :
Cela fait sens.
Je vais maintenant regarder quels sont les vols partis de Brest le 21 avril 2022. Je vais donc sur airportia.com : https://www.airportia.com/france/brest-bretagne-airport/departures/
Un avion en direction de Paris est bien programmé sur les mêmes horaires que la photo.
Flag : MCTF{AF7733:Paris}
From Russia with love
La cible a réussie à s'enfuir ! Nous n'arrivons plus à retrouver sa trace mais nous avons néanmoins réussi à intercepter une de ses communications. En vous aidant de vos trouvailles précédentes et de cet audio, retrouvez la ville ainsi que le pays dans lequel l'ennemi doit retrouver son contact.
Le challenge est également accompagné d’un audio que j’ai mis ici https://voca.ro/14RkGxPYYoDY
En écoutant plusieurs fois, au début, on ne se rend compte de rien et on ne comprends pas le challenge.
Je passe alors l’audio sur Audacity et décide de tendre l’oreille :
Sur les moments où la personne ne parle pas, en mettant votre casque à 100 %, vous allez pouvoir entendre des bruits d’oiseaux. J’ai également découpé l’audio pour n’entendre plus que ces bruits : https://voca.ro/1im42m63tJdw
N’étant pas un expert des volatiles, je décide d’aller sur l’outil https://birdnet.cornell.edu/
Cet outil reconnaît un oiseau grâce à son bruit en passant par un système de Machine Learning :
N’hésitez pas à aller sur le site pour vous documenter plus en profondeur !
Revenons à nos oiseaux, je mets donc mon audio sur ce site :
Le site me ressort comme oiseau avec une confiance de 70 % : Red Crowned parrot
Je me documente alors depuis le Wikipédia de cet oiseau sur sa provenance : https://en.wikipedia.org/wiki/Red-crowned_amazon
J’apprends qu’il est principalement au Mexique, j’essaie donc MCTF{Mexico:Mexique} et c’est flag !
T’es dans ta jalousie, je suis dans mon Jacque Houzit 1/3
Une agence vous mandate pour une nouvelle affaire qu'ils viennent de recevoir.Vous allez devoir enquêter sur Jacque Houzit, un ancien professeur de mathématiques licencié l'année dernière pour consommation de cannabis sur son lieu de travail.Il semblerait qu'il ait récemment fait surface. Il est notamment suspecté d'être à la tête d'un réseau de deal à grande échelle et d'utiliser différents réseaux sociaux pour en faire la promotion.L'agence aurait réussi à obtenir des informations de son côté sur le fait qu'il proposerait des cours de mathématiques à des particuliers sur la ville de Rennes.Commencez votre enquête et trouvez un moyen d'obtenir l'adresse e-mail de Jacque Houzit.
J’avais déjà enquêté sur ce Jacque l’année dernière, vous pouvez d’ailler retrouver mon Write-up par ici.
Me voilà de retour dans le bain face à ce narcotrafiquant d’envergure.
Je commence donc en cherchant les cours de mathématiques de ce Jacque sur Leboncoin :
Bingo : https://www.leboncoin.fr/cours_particuliers/2150292471.htm
Je trouve également son Instagram : https://www.instagram.com/jcq.hzt/
Il a l’air de mener une belle vie bien enrichie pour un professeur de mathématiques.
Afin d’en savoir plus sur son e-mail qu’on doit retrouver, j’utilise l’outil toutatis sur son compte Instagram :
On sait ainsi que son adresse est sous la forme de j*******t@gmail.com.
En déduction de son nom Leboncoin et de ce qu’on a, j’essaie l’e-mail jacque.hzt@gmail.com en vérifiant qu’elle existe grâce à l’outil GHunt :
Parfait, elle existe ! Flag : MCTF{jacque.hzt@gmail.com}
T’es dans ta jalousie, je suis dans mon Jacque Houzit 2/3
L'agence qui vous a mandaté a elle aussi menée une enquête de son côté. Elle aurait réussi à trouver le nom d'un ami proche de Jacque Houzit, il se nommerait Gilles Parballes. Continuez leur enquête et essayez de trouver le compte Instagram privé de Jacque Houzit.
Je cherche donc ce nom distingué sur plusieurs réseaux sociaux, et tombent sur son profil Twitter : https://twitter.com/GillesParballes
Un premier tweet ressort et me semble intéressant :
Ce lien nous emmène vers une archive ZIP protégée par un mot de passe.
Il va falloir faire preuve d’ingéniosité pour trouver son mot de passe.
À ce propos, un second tweet nous aide :
On comprend alors ici que son mot de passe sera sa date de naissance.
Cela tombe bien, il a indiqué être né le 12 juillet dans sa biographie Twitter.
Pour connaître sa date de naissance, il suffit de suivre son profil.
On déchiffre le ZIP avec le mot de passe 12071978 et on a alors un fichier leak.txt nous renvoyant vers ce Pastebin : https://pastebin.com/kg30T5zU
On se concentre sur le compte de Gilles et on trouve donc l’Instagram : https://www.instagram.com/gillesbeaugosse1978/
Dessus, une unique photo, avec le compte Instagram privé de Jacque qu’on cherche : @postbad_jacque
Flag : MCTF{postbad_jacque}
T’es dans ta jalousie, je suis dans mon Jacque Houzit 3/3
L'agence vous demande maintenant de mettre fin à l'activité de Jacque Houzit en l'envoyant derrière les barreaux ! À partir des informations que vous avez réussi à récolter, trouvez la preuve que Jacque Houzit est bien à la tête d'un réseau de deal.
L’Instagram privé ne nous donne pas beaucoup d’informations, mais nous renvoie vers un autre Instagram : @sell_business_motivation
En épluchant les posts de ce compte, un est particulièrement intéressant, il renvoie vers un serveur Discord :
Je me rends donc dessus, mais un message nous annonce que tous les canaux de texte sont bloqués et donc cachés :
Heureusement, une technique permet de voir les canaux masqués (seulement leurs noms, pas leurs contenus) grâce au plug-in ShowHiddenChannels :
Une nouvelle information attire alors mon attention, le nom d’un compte Snapchat : saleplantjg.
Je regarde donc depuis mon téléphone les informations laissées par ce compte public, et on retrouve des stories publiques, dont :
Et c’est flag : MCTF{M0d3rN_D34L_1s_N0w_0n_S0c14L_M4D14}
Contactez-moi :
Site Web personnel
Twitter de l’équipe : LesPiresHat