Introduction
Dans le cadre de notre participation au Forum International de la Cybersécurité se déroulant à Lille du 28 au 30 janvier 2020. Nos équipes d’experts en cybersécu et développement ont eu l’opportunité de participer à un CTF (Capture The Flag).
Pour les néophytes (comme un des membres de l’équipe le jour où l’épreuve a commencé), un CTF est une compétition de cybersécurité. Le FIC organise chaque année un CTF ouvert à tous. Pour se qualifier, chaque équipe doit réussir une pré-qualification en décembre via des épreuves de Follow-the-rabbit, composé de 7 étapes à réaliser en 7 jours. L’objectif de chaque étape est d’obtenir un flag, qui permettra d’accéder à l’épreuve suivante. Un peu comme un escape-game !
Plongez au cœur de 7 jours intenses grâce au témoignage de l’un de nos participant…
« C’est donc muni d’un clavier, d’une souris et sans aucune préparation quelconque que nous nous lançons à l’aventure. Après quelques minutes seulement, nous découvrons à notre grande surprise que notre chef d’équipe vient de réinstaller sa machine ; son seul outil de développement est alors Visual Studio Code, et il n’a ni Javascript, ni Python, d’où nos premières résolutions en C#. »
Étape 1
« Le site web nous demande un flag. Le code source de la page nous indique que pour obtenir ce flag, il faut décoder une suite de nombres en utilisant une phrase-clé (« CTF.By.HexpressoCTF.By.Hexpresso ») et le chiffre 42.
Nos trois cerveaux se mettent alors à faire des maths (notre nemesis), recoder le décodeur en C# (notre meilleur allié), et nous parvenons à obtenir le flag ! »
Étape 2
« Nous avons récupéré le fichier pcap et l’avons ouvert dans Wireshark. Nous y avons trouvé un code Python qui a visiblement été utilisé pour exfiltrer les données, découpées en petits morceaux, cryptées, et envoyées via des requêtes DNS. Nous avons extrait les requêtes DNS et identifié la présence de répétitions en début de paquet.
Nous écrivons donc le code C# le plus laid de nos carrières afin de décrypter les messages, ce qui nous a donné un texte moyennement lisible, puisque chaque paquet comporte une partie du paquet précédent… Après avoir vainement tenté de nettoyer le message à la main, nous comprenons finalement que les chiffres au début de chaque paquet n’étaient pas si inutiles que ça, puisqu’ils indiquent l’endroit où il faut couper les messages.
Après modification du code C#, nous récupérons le flag en base32, que nous convertissons avec le premier résultat Google sur « base32 ». »
Étape 3
« Nous avons récupéré une clé USB au format RAW et plus ou moins rapidement compris qu’elle était encryptée avec Bitlocker en l’ouvrant avec HxD. Nous testons alors quelques mots de passe, notamment tous les mots et suites de chiffres trouvés dans les metadatas, sans succès…
Après avoir lu (peu être trop rapidement) les règles du CTF, nous pensions ne pas être autorisés à brutforcer le mot de passe, et nous cherchons donc pendant des heures une méthode élégante nous permettant de décrypter le disque (présence d’une partition cachée, utilisation de la recovery key…). Fort heureusement, nos soutiens moraux, eux, qui avaient lu les règles en détails, nous informent que le brut-force local était autorisé.
C’est à ce moment-là que la situation dégénère : notre chef d’équipe se retrouve coincé en réunion pendant six heures, laissant le reste de l’équipe chercher une solution sans direction et sans machine Linux. Il a tout de même réussi à nous fournir une clé USB physique qu’il a imagée avec le RAW avant de disparaître.
Armés d’un dictionnaire de mots de passe trouvés sur Internet, d’Excel, de Notepad++ et de PowerShell, l’équipe parvient en seulement 2h30 à décrypter la clé usb, et, l’affichage du script nécessitant un peu de polish, 2h supplémentaires pour retrouver le mot de passe, à savoir « password »… Bien joué !
Une fois le disque décrypté, nous trouvons rapidement des fichiers supprimés grâce à Autopsy, lesquels contenaient le flag encodé en base64.
Nous n’avons presque pas perdu de temps à essayer de comprendre la présence de ls sur la clé. »
Découvrez la suite de notre aventure en deuxième partie !
Pas de panique vous pouvez la découvrir dès maintenant.