Aller au contenu
PURPLEDUEL

Des secrets dans un exécutable

Encodages et secrets · niveau moyen · 5 objectifs · 600 XP au total

Une entreprise t'a remis un programme compilé, le coffre-fort, et jure que personne ne peut en lire les secrets. Prouve qu'elle se trompe : extrais le code de service resté dans le fichier.

Laboratoire 4 sur 6 du parcours Encodages et secrets. Si tu bloques, tu as 3 indices, du plus vague au plus précis : ils coûtent 0, 40 et 120 XP.

Ce que tu apprends

Les objectifs se valident tout seuls pendant que tu travailles dans le terminal ; chacun rapporte des points d’expérience :

  • Lire le README (50 XP)
  • Demander à file ce qu'est cassaforte (100 XP)
  • Extraire le texte lisible avec strings (150 XP)

Thèmes : codici, strings, binari.

Les commandes que tu utiliseras

Le terminal est simulé et comprend une quarantaine de commandes Linux. Dans ce laboratoire, tu auras surtout besoin de celles-ci :

  • cat: affiche le contenu d’un fichier : la façon la plus directe de lire configurations, notes et journaux.
  • file: reconnaît quel type de fichier tu as devant toi (texte, exécutable, image) d’après son contenu, pas son nom.
  • strings: extrait le texte lisible d’un fichier binaire : il révèle les mots de passe et adresses restés dans un programme.
  • grep: cherche les lignes qui contiennent un mot, même dans des dossiers entiers avec -r. C’est l’outil principal pour analyser du texte et des journaux.
  • |: la barre verticale | enchaîne les commandes : la sortie de la première devient l’entrée de la suivante, et de petits outils forment une analyse complète.

L’environnement simulé

Tu travailles dans un shell Linux simulé, dans le dossier personnel de l'utilisateur runner : fichiers et dossiers imaginaires, aucune cible réseau.

La leçon de défense

Une fois le laboratoire résolu, le compte rendu explique ce qui a mal tourné et comment se protéger :

Compiler un programme n'en fait pas un tiroir fermé : tout texte écrit à l'intérieur (mots de passe, clés d'API, jetons, adresses internes) se récupère avec strings en une seconde, sans même l'exécuter. Les secrets n'ont leur place ni dans le code ni dans les exécutables : on les lit au démarrage depuis des variables d'environnement ou un gestionnaire de secrets, on les change s'ils fuitent et on les cherche avec des outils d'analyse de secrets avant la livraison.

Avant et après ce laboratoire

Pour l’ouvrir, tu dois avoir résolu :

Après ce laboratoire, tu peux passer à :

Le parcours Encodages et secrets

Encodages et secrets enseigne une distinction qui sauve beaucoup de données : encoder n'est pas chiffrer. Base64, hexadécimal, ROT13 et texte en miroir changent l'aspect des informations sans les protéger, car n'importe qui les remet en clair sans aucune clé. Dans les laboratoires, tu reconnais ces formats à leur aspect, tu les retires couche par couche même quand ils sont empilés, tu extrais le texte lisible d'un programme compilé et tu comprends pourquoi protéger vraiment un secret demande un vrai chiffrement, des hachages salés et un gestionnaire de secrets.

Tous les laboratoires du parcours Encodages et secrets

Approfondir avec les guides (en anglais)

Tous les guides (en anglais)