Construire un portfolio : CTF, writeups et dépôt de code public
Imaginez un recruteur qui reçoit cinquante candidatures de personnes affirmant « passionné de cybersécurité ». Comment distinguer les plus sérieuses ? Par des preuves : des défis résolus, des explications claires, du code lisible, un rapport bien rédigé. C'est le rôle du portfolio. Dans cette leçon, vous allez décider de ce qu'il contient, comment le publier sans risque juridique ni éthique, et comment le faire vivre dans la durée.
Publier avec discernement
Un portfolio public est un acte de communication, avec des obligations. Ne publiez jamais : des informations sur une faille non corrigée d'un système réel, des données personnelles, des identifiants ou clés (même anciens), des éléments confidentiels d'un client ou d'un employeur, ni des contenus issus d'une plateforme dont les règles interdisent la publication. Ne publiez pas de code offensif prêt à l'emploi susceptible de causer du tort : un portfolio de white hat montre de la maîtrise et de la responsabilité. Toute pratique se fait dans un cadre légal (articles 323-1 à 323-3-1 du Code pénal).
Dans la leçon précédente, vous avez comparé les certifications. Le portfolio est l'autre moitié de votre crédibilité, et il se construit à partir de ce que vous avez déjà produit dans ce cours : les schémas Active Directory du chapitre 1, les scripts Python du chapitre 2, la fiche de simulation du chapitre 3, le dossier de détection du chapitre 4, la checklist du chapitre 5, et votre rapport de vulnérabilité du chapitre 6.
Que montrer ? Les cinq familles de pièces
- Des défis et des compétitions d'entraînement (CTF). Un Capture The Flag est un jeu dans lequel on résout des défis de sécurité pour trouver des « drapeaux ». Les plateformes légales (TryHackMe, HackTheBox, PortSwigger Web Security Academy) et les compétitions organisées par la communauté en proposent toute l'année. Votre classement ou vos parcours validés montrent régularité et progression.
- Des comptes rendus d'exercices (writeups). Un writeup explique comment vous avez résolu un défi : raisonnement, outils, impasses, solution. C'est la meilleure preuve de compréhension, car expliquer oblige à comprendre.
- Du code. Vos scripts (nettoyeur de liste, analyseur de journaux, audit d'en-têtes du chapitre 2) dans un dépôt public, bien documentés.
- Des rapports. Un rapport type sur une application d'entraînement, avec la structure professionnelle de la leçon 2.
- Des documents de défense et de méthode. Fiche de durcissement, règles de détection, plan de réponse à incident, checklist cloud : ils montrent que vous voyez les deux côtés.
Les writeups : écrire pour apprendre et pour montrer
Un bon writeup a une structure constante :
- Contexte : la plateforme, le niveau du défi, ce qu'il vise à enseigner (sans révéler de contenu protégé) ;
- Démarche : les étapes de votre raisonnement, avec les hypothèses que vous avez testées ;
- Obstacles : ce qui n'a pas marché et pourquoi. C'est ce qu'un lecteur apprécie le plus : on apprend des échecs ;
- Solution : décrite avec le minimum de détail nécessaire à la compréhension ;
- Leçons : ce que cela apprend sur la défense : comment corriger ou détecter la faille rencontrée.
Ce dernier point distingue un portfolio de white hat d'une simple vitrine d'astuces : vous concluez par la manière de protéger.
Une règle importante : respectez les règles de chaque plateforme. Beaucoup interdisent de publier les solutions de défis actifs, en cours de compétition ou réservés à des abonnés, afin de préserver la valeur des exercices. Elles autorisent souvent les writeups de défis retirés ou au moins demandent l'accord. En cas de doute, lisez les conditions d'utilisation et demandez.
Le dépôt de code public
Un dépôt de code ne vaut que s'il est lisible et utilisable par un inconnu. Pour chaque projet :
- un fichier README qui explique l'objectif, l'installation, l'usage avec un exemple, les limites ;
- un avertissement légal clair : l'outil s'utilise uniquement sur des systèmes que vous possédez ou pour lesquels vous disposez d'une autorisation écrite ;
- un code lisible : noms explicites, fonctions courtes, quelques commentaires utiles, gestion des erreurs ;
- des exemples de données fictives (comme les journaux du chapitre 2) ;
- un historique propre : des enregistrements réguliers avec des messages clairs montrent votre progression ;
- une vérification avant publication qu'aucun secret, aucun nom de machine réelle, aucune donnée personnelle ne s'y trouve (et rappelez-vous que l'historique conserve ce qui a été supprimé).
Privilégiez des projets défensifs, pédagogiques ou d'analyse : audit d'en-têtes, parseur de journaux, inventaire, générateur de rapport. Ils démontrent des compétences réelles sans les risques d'un code offensif.
Un blog, un site, une présence mesurée
Un petit site personnel ou un blog rassemble vos pièces et raconte votre parcours. Gardez-le simple : une page de présentation, une liste de réalisations, vos coordonnées professionnelles. Quelques bons conseils :
- Séparez vie privée et vie professionnelle : ne publiez pas d'informations personnelles inutiles (votre adresse, vos proches).
- Soyez honnête sur votre niveau : « apprenti » est une qualité, pas un défaut. Les exagérations se voient en entretien.
- Ayez une adresse de contact dédiée et des échanges courtois en public : tout ce que vous écrivez est lisible par un futur employeur.
- Participez à la communauté : répondre à des questions, relire le travail d'autrui, contribuer à des projets libres, présenter dans une rencontre locale (nous y reviendrons au chapitre suivant).
La régularité plutôt que le spectaculaire
Un portfolio qui contient dix pièces solides, dont la dernière date de la semaine passée, est plus convaincant qu'un projet impressionnant daté de deux ans. Fixez-vous un rythme réaliste : par exemple, un défi résolu et documenté tous les quinze jours, une amélioration d'un script par mois, un document de méthode par trimestre. La constance se voit.
Les erreurs fréquentes
| Erreur | Conséquence | À faire plutôt |
|---|---|---|
| Publier des clés, mots de passe ou données réelles dans un dépôt | Incident de sécurité et mauvaise image | Vérifier avant chaque publication, utiliser des données fictives |
| Copier des writeups existants | Perte de crédibilité, risque de plagiat | Écrire avec vos propres mots et votre démarche réelle |
| Publier des outils offensifs sans mise en garde | Image irresponsable, possible mésusage | Privilégier le défensif, ajouter un avertissement légal et des limites |
| Afficher des classements sans contexte | Peu parlant | Expliquer ce que vous avez appris |
| Tout publier d'un coup puis abandonner | Portfolio inactif | Rythme régulier, même modeste |
À vous de jouer
Construisez le plan de votre portfolio. Dressez un tableau de cinq pièces que vous publierez dans les trois prochains mois, avec pour chacune : le type (CTF, writeup, code, rapport, document de défense), le sujet, la date cible, et une vérification de sécurité avant publication. Choisissez au moins une pièce défensive et une pièce rédactionnelle.
Voir une solution
| Type | Sujet | Date cible | Vérification avant publication |
|---|---|---|---|
| Code | Script d'audit d'en-têtes HTTP du chapitre 2, avec README et avertissement légal | Semaine 2 | Aucun secret ; exemples sur localhost ou laboratoire uniquement |
| Writeup | Un exercice sur le contrôle d'accès, sur une plateforme d'entraînement | Semaine 4 | Règles de la plateforme sur la publication vérifiées ; pas de contenu protégé |
| Rapport | Rapport complet sur une faille d'une application d'entraînement | Semaine 6 | Application d'entraînement identifiée ; aucune donnée réelle |
| Document de défense | Fiche de durcissement Active Directory du laboratoire | Semaine 8 | Domaine de laboratoire fictif ; aucune information d'organisation réelle |
| Document de défense | Plan de réponse à incident en une page et règle de détection en pseudo-code | Semaine 12 | Entreprise fictive ; relecture par une personne extérieure |
Un tel plan montre à la fois de la technique, de la méthode et de la responsabilité, et il est tenable en quelques heures par semaine.
Relecture finale
Avant toute publication, faites cette liste : 1) aucun secret ni donnée personnelle ; 2) cadre légal et avertissement présents ; 3) règles de la plateforme respectées ; 4) le texte est compréhensible par quelqu'un qui n'a pas fait l'exercice ; 5) vous seriez à l'aise que votre futur employeur le lise.
Vous avez maintenant tous les éléments d'un profil crédible. Le dernier chapitre en fait un projet professionnel : les métiers, un plan de 90 jours et la veille qui vous permettra de continuer à progresser.
À retenir
- Un portfolio apporte des preuves : défis résolus, writeups, code, rapports, documents de défense.
- Un bon writeup raconte la démarche, y compris les échecs, et conclut sur la manière de se défendre.
- Un dépôt de code est utile s'il est lisible, documenté, accompagné d'un avertissement légal et exempt de secrets.
- Respectez les règles de chaque plateforme et ne publiez jamais de faille non corrigée ni de donnée réelle.
- La régularité l'emporte sur le spectaculaire.