14/05/2024

Cybersécurité

Cybersécurité : mon retour d’expérience sur la certification CPTS proposée par Hack The Box

I. Présentation

Dans cet article, je vous présente mon retour d'expérience sur le passage et l'obtention de la certification CPTS (Certified Penetration Testing Specialist) de la plateforme Hack The Box que je viens d'obtenir en cette fin 2023 ! La certification CPTS proposée par la plateforme Hack The Box est apparue en 2022 :

Source : Hack The Box - CPTS

Pour les novices en la matière, un pentester (expert en test d'intrusion en français) est chargé de tester et évaluer la sécurité d'une entreprise ou d'un périmètre technique (application web, mobile, système d'information, etc.) en adoptant la démarche, les outils et les objectifs d'un pirate informatique. Son rôle est donc d'identifier les faiblesses et vulnérabilités d'une cible, de les exploiter comme un attaquant réel, puis d'écrire un rapport d'audit dans lequel il détaille sa démarche, ses découvertes et propose des recommandations à son client (l'entreprise auditée/attaquée) pour corriger les faiblesses identifiées.

Cette certification aborde de nombreux domaines techniques et d'après mon expérience en tant que pentester et auditeur en cybersécurité, tous sont pertinents :

  • Penetration testing processes and methodologies
  • Information gathering & reconnaissance techniques
  • Attacking Windows & Linux targets
  • Active Directory penetration testing
  • Web application penetration testing
  • Manual & automated exploitation
  • Vulnerability assessment
  • Pivoting & Lateral Movement
  • Post-exploitation enumeration
  • Windows & Linux Privilege escalation
  • Vulnerability/Risk communication and reporting

Le modèle économique d'Hack The Box repose sur des cubes (= points) qu'il est possible d'acheter sur la plateforme et qui permettent eux-mêmes d'acheter des modules de cours. Le passage et la réussite d'un module fournissent des cubes supplémentaires (20% de son prix). Pour passer la CPTS, il est nécessaire de compléter les 28 modules du job role paths "Penetration Tester" (1980 cubes) :

Un job role path est donc un ensemble de modules réunis pour fournir une vue d'ensemble des thématiques du job en question.

Pour ma part, je suis passé par l'achat (via mon employeur) d'une certification Silver Annual Subscription (490$) qui permet d'avoir accès à tous les modules de Tier I et II et pas seulement aux modules nécessaires au passage de l'examen. Il existe aussi des modules de Tier III et IV qui sont techniquement plus aboutis, mais non nécessaires au passage de l'examen.

Il s'agit du modèle le plus rentable à mon sens puisqu'avec un accès à ces différents modules, il est possible de compléter en une seule année tous les paths relatifs aux trois certifications proposées par Hack The Box (Certified Penetration Tests Sepcialist, Certified Bug Bounty Hunter et Certified Defensive Security Analyst). D'ailleurs, la complétion des modules du job role path "Penetration tester" permet également de compléter 75% des modules du job role path "Bounty Hunter", qui donne accès à l'examen pour la certification du même nom.

II. Déroulement de la certification

L'obtention de la certification passe par :

  • la complétion de 100% des modules/cours du job role path "Penetration tester"
  • le passage de l'examen et l'obtention de 85% des points requis
  • l'envoi d'un rapport d'audit à la suite du passage de l'examen

Je parlerai plus en détail de l'examen dans la prochaine section, mais avant, il est nécessaire de s'attarder sur la complétion des cours. 28 modules sont proposés et abordent différents domaines techniques. Des modules "généraux" :

  • Penetration Testing Process
  • Getting Started
  • Documentation & Reporting
  • Vulnerability Assessment

Des modules orientés application web :

  • Information Gathering - Web Edition
  • Using Web Proxies
  • Attacking Web Applications with Ffuf
  • Login Brute Forcing
  • SQL Injection Fundamentals
  • SQLMap Essentials
  • Cross-Site Scripting (XSS)
  • File Inclusion
  • File Upload Attacks
  • Command Injections
  • Web Attacks
  • Attacking Common Applications

Des modules orientés système d'exploitation :

  • Linux Privilege Escalation
  • Windows Privilege Escalation
  • File Transfers

Des modules orientés AD, services, et réseaux :

  • Network Enumeration with Nmap
  • Footprinting
  • Shells & Payloads
  • Using the Metasploit Framework
  • Password Attacks
  • Attacking Common Services
  • Pivoting, Tunneling, and Port Forwarding
  • Active Directory Enumeration & Attacks
  • Attacking Enterprise Networks

La complétion des 28 modules est de loin ce qui prend le plus de temps dans le cadre de l'obtention de la certification. Il s'agit d'une charge de travail conséquente qu'il faut réussir à placer dans son planning. Hack The Box évalue le temps nécessaire pour la complétion des modules à 43 jours de travail. Pour ma part, la complétion des modules m'a pris environ 6 mois, à hauteur de 3 à 5 heures par semaine environ (incluant quelques pauses au cours de l'année).

Le niveau technique des cours est abordable pour un débutant en cybersécurité (il faut des bases correctes en informatique générale, scripting et administration système) et permet une montée en compétence concrète sur les sujets abordés et la constitution d'une méthodologie correcte. Il s'agit de cours au format texte avec de nombreux exemples de commande, captures d'écran et labs d'entraînement. Voici par exemple la première page du module/cours sur les vulnérabilités de type file upload :

En fonction de votre expérience et de la façon dont vous abordez ces cours, cela peut prendre plus ou moins de temps. Me concernant et après plusieurs années d'expérience en cybersécurité et en pentest notamment, il est certain que la majorité des modules abordaient des sujets connus. Néanmoins, dans la plupart des cas, j'ai toujours réussi à extraire des astuces, outils ou techniques supplémentaires de ces modules. J'ai notamment profité de ces modules pour faire un point sur mes notes personnelles qui sont parfois écrites en parallèle de mes missions et qui sont donc forcément incomplètes. Certains modules m'ont permis de réécrire et réorganiser totalement mes notes sur certaines thématiques, la complétion du module prend alors plus de temps.

Il faut savoir que pour valider un module, il faut réussir à trouver les "flags" demandés dans chaque sous-chapitre, il faut pour cela démarrer le lab d’entraînement, se connecter à un VPN et effectuer différentes attaques ou énumération telles que décrites dans le cours :

Également, chaque module possède un ou plusieurs Skill assessments, une sorte d'évaluation finale orientée sur la thématique du module, à réaliser sans directives/solutions :

Si vous êtes un débutant complet dans le domaine de la cybersécurité, la complétion seule des cours n'est pour moi pas suffisante au passage de l'examen. Les modules apprennent à identifier et exploiter des vulnérabilités, des faiblesses de configuration, etc. Mais cela n'apporte pas une expérience de terrain réelle, souvent plus complexe et moins maîtrisée qu'un environnement propre et fait pour être exploité. Également, les modules n'apprennent pas à chercher par soi-même, puisque tout est guidé (à l'exception des Skill assessment, qui reprennent des éléments du cours, donc on sait à l'avance quel type de vulnérabilité chercher). À mon sens, il est nécessaire d'avoir une expérience de terrain supplémentaire (les box classiques Hack the Box peuvent être un début).

III. L'examen de la certification CPTS

Le passage de l'examen se fait sur 10 jours, une fois les prérequis atteints (100% des modules du job role path), le candidat peut démarrer l'examen quand il le souhaite sans réserver de créneau comme c'est le cas pour d'autres certifications. Lors du démarrage de l'examen, une lettre d'engagement est fournie (similaire à une lettre de cadrage/proposition commerciale réelle), fournissant des éléments de contexte, un périmètre d'audit, les conditions d'obtention de l'examen, etc.

Le format de l'examen est la réalisation d'un test d'intrusion externe (depuis Internet) sur une organisation. L'objectif est de réussir à s'introduire au sein du système d'information, puis de compromettre un nombre X de machines (flag user et root) et de domaines.

Les règles Hack The Box sont très claires à propos de l'examen, aucun détail ne doit être donné en dehors de ce qui est déjà publié par Hack The Box, je ne peux donc partager que mon ressenti concernant l'examen, mais aucun détail technique !

Après avoir passé tant d'heures sur la complétion des modules, je m'attendais à ce que l'examen soit complet, mais dans l'ensemble plutôt facile (bref, que ça roule). Je dois dire que j'ai été surpris de ce côté : j'ai passé au total 63 heures sur 7 jours pour récupérer les 12 flags nécessaires à l'obtention de la certification. À cela s'ajoutent quelques heures de reporting, également nécessaire à l'obtention de la certification. Le 8ème jour a été dédié à la finalisation du rapport, je n'avais tout simplement plus d'énergie et de motivation pour attaquer les flags 13 et 14 (optionnels) après avoir passé une telle semaine, bien que je pense avoir identifié le chemin d'exploitation.

Dans l'ensemble, mon ressenti concernant l'examen en lui-même est partagé entre des moments assez intenses ou un grand nombre d'informations sont à traiter, de nombreuses attaques à tester et parfois où l'obtention de flag s'enchaîne sur un cours laps de temps, et des moments de blocage très frustrants durant plusieurs heures (voire jours). Dans ce dernier cas, le décalage entre les missions dans la vie réelle et l'examen se fait ressentir :

A. Seul face à son clavier

Dans une mission réelle, les auditeurs sont généralement en équipe (binôme), ce qui permet d'échanger ses idées, d'avoir parfois une remise en question d'éléments qui nous semblent évidents (donc non vérifiés), et de nouvelles idées qui sortent de notre schéma de pensée habituel. Le simple fait de décrire un point de blocage à un tiers pendant la pause café nous force parfois à expliquer des détails sur lesquels nous ne nous attardions pas seul, ce qui (très souvent) apporte des solutions même sans réponse de notre interlocuteur.

Lors de l'examen, le fait de se retrouver totalement seul devant son écran et d'être venu à bout de ses idées est un moment assez désagréable qu'il faut savoir gérer pour éviter l'abandon. À mon sens, c'est ce à quoi le cours échoue à préparer le candidat, continuer à creuser malgré avoir fait le tour de sa "to do list" et de ses idées, savoir remettre en question chaque détail d'une pensée ou d'une hypothèse et tenter de sortir d'un "tunnel vision" qui arrive plus vite qu'on ne le pense.

Je note que passer par ces moments difficiles décuple la satisfaction de les surmonter seul, pour finir par l'obtention méritée de la certification.

B. Tous les chemins mènent à Rome

Dans une mission réelle et notamment lors des tests d'intrusion internes, plusieurs débuts de chemins d'attaques valides pour élever ses privilèges sur un domaine ou compromettre un SI sont généralement identifiés. Le pentester doit alors savoir identifier quel est le plus intéressant, rapide ou probable parmi le grand nombre de possibilités qui se présentent devant lui. Faites auditer une application ou un SI par 3 auditeurs, il est possible que vous ayez trois chemins d'attaques différents, exploités via des techniques et des outils eux aussi différents.

Lors de l'examen, un seul chemin de compromission est valide et exploitable. L'auditeur doit alors se mettre à penser comme celui qui a conçu l'examen et non de façon innovante.

Ce fameux "Think out of the box" est à mon sens la définition du hacking, savoir prendre un chemin de pensée auquel personne d'autre ne s'est risqué, voir les choses d'un point de vue inattendu pour trouver des chemins de compromission, des vulnérabilités. Bien que dans la réalité, il faut également savoir se baser sur des outils et méthodologies éprouvées (OWASP, MITRE, etc.), tout en sachant s'en échapper.

Le fait d'avoir à calquer sa réflexion sur celui de quelqu'un d'autre est donc un autre point problématique concernant l'examen à mon sens, puisque c'est précisément ce que je tente de fuir lors de mes missions en tant que pentester.

Une fois les 12, 13 ou 14 flags obtenus, il est nécessaire de rédiger un rapport d'audit professionnel à partir d'un modèle et de directives fournies dans l'un des modules. Là aussi, il s'agit d'un exercice exigeant aussi bien pour ceux qui n'ont pas l'habitude de rédiger des rapports d'audits que pour ceux qui, comme moi, se sont trop habitués à un format de rapport précis.

Bref, l'examen n'est pas à prendre à la légère, la complétion des (nombreux) modules du cours est certes rassurante, mais cela ne donne pas accès à la réussite évidente de l'examen.

IV. Mes conseils et astuces pour la CPTS

Je me permets ici de donner quelques conseils à ceux qui se lanceront dans cette aventure CPTS. Ils sont le fruit de mes bonnes idées et erreurs durant ce long parcours :

A. Concernant la complétion des modules

  • Prenez des notes, savoir se reposer sur le cours est une bonne chose, mais rien ne remplace les notes personnelles avec des détails supplémentaires, des références à des sources externes (Hacktrickz, OWASP, MITRE, PortSwigger, Hacker Recipes, etc.) qui permettent parfois d'avoir une approche et des outils différents. Je vous conseille l'outil Obsidian pour la prise de note.
  • Ne négligez aucun aspect du cours, bien que certaines parties paraissent superficielles ou négligeables, il est important d'au moins se souvenir que ces points sont abordés, et dans quel module.
  • Faites les skills assesments sérieusement, si possible sans aide extérieure/référence au cours. Cela vous entraînera à être dans un "mode examen" et vous aidera à gérer les moments frustrants de l'examen mentionnés plus haut.
  • Gérez votre timing, le mieux est de se fixer un objectif réaliste de réalisation. Par exemple 5 mois avec XX heures ou % de progression par semaine. Il est important d'éviter les pauses trop longues entre chaque progression, mais aussi les séances trop intenses au risque de se dégoûter et d'oublier la moitié du contenu.
  • Profitez des cours pour vous construire un environnement de travail où tous vos outils sont à disposition, installés et fonctionnels (jetez un œil à arsenal, très pratique pour accéder rapidement à vos commandes favorites).

En préparation de l'examen, je vous conseille enfin de réaliser le dernier module Attacker Enterprise Networks sans aide et sans suivre le guide du module, sans Discord, forum ou collègue. Cela vous permettra également d'apprendre à gérer les vrais points de blocage tels que ceux que vous rencontrerez durant l'examen. Si vous y parvenez, vous pourrez aborder l'examen avec plus de confiance, bien que l'examen soit plus difficile et plus long que ce lab, il vous donnera une bonne idée de la démarche globale à adopter.

B. Concernant le passage de l'examen

  • Ne le prenez pas à la légère, il est assez exigeant et il peut y avoir des vrais pièges et points de blocage.
  • Anticipez le temps de réalisation de l'examen, positionnez-le quand vous serez sûrs d'avoir du temps devant vous. Ne comptez pas passer l'examen en un week-end.
  • Gérez votre timing, le fait de rusher l'examen en faisant X heures d'affilée dès le premier jour peut être une mauvaise idée et un très mauvais départ au niveau motivation si vous ne trouvez rien. Assurez-vous de démarrer l'examen en ayant l'esprit frais (pas le vendredi soir par exemple 🙂 ).
  • Sachez faire des pauses, discuter d'autre chose au cours de votre semaine, faire du sport et vous changer les idées régulièrement. C'est souvent là que les bonnes idées arrivent.
  • Prenez des notes concrètes et exploitables au fur et à mesure de votre avancée, cela vous permettra de faire un point sur votre progression, de repérer d'éventuels ratés ou oublis. Ces notes vous seront d'une grande aide lorsque viendra le temps du rapport et que vous n'aurez plus d'énergie ou de motivation. Spammez la touche "Impr Ecran" pour avoir toutes les traces nécessaires.

J'ai vu des retours d'expérience sur le Discord de candidats ayant obtenu tous les flags nécessaires, mais n'ayant pas obtenu l'examen à cause d'un rapport incomplet ou pas suffisamment professionnel.

  • Identifiez et automatisez vos "points de sauvegarde" pour pouvoir revenir rapidement à un point précis de votre progression (mise en place d'un rebond, accès à une machine compromise, etc.) pour pouvoir y revenir rapidement en cas de déconnexion ou reset du lab.
  • Ayez toujours en tête les modules du cours pour retrouver une information rapidement en cas de besoin, il y a une fonction de recherche (améliorable) dans l'espace Hack The Box academy qui peut être utilisée.
  • N'oubliez pas d'utiliser les ressources à votre disposition (ressources citées plus haut) ainsi que ChatGPT pour avoir un angle de vue différent (parfois erroné). J'ai par exemple utilisé ChatGPT pour générer des commandes/scripts basiques en PowerShell ou Batch lorsque je n'avais pas le temps de creuser les options par moi-même (créer un utilisateur, l'ajouter dans tel groupe, en PowerShell, en batch) ou pour expliciter un message d'erreur.

V. Conclusion

La certification CPTS d'Hack The Box est la première certification de ce type à laquelle je m'attaque, je n'ai donc pas la possibilité de la comparer avec d'autres.

J'ai trouvé le chemin qui mène à l'obtention de la certification intéressant, exigeant et un peu (trop) long. La complétion de modules sur des sujets déjà connus (mon cas de figure) est un peu barbante, mais il faut savoir aborder l'exercice avec curiosité au risque de se retrouver coincé sur des détails pendant l'examen. Je recommande le cours et le passage de la certification aux personnes qui se lancent dans la cybersécurité ou qui ont jusqu'à 3-4 ans d'expérience dans le domaine (pas forcément en pentest uniquement). Pour ces profils, la certification est certes un plus, mais l'apport principal en termes de progression viendra du suivi des cours et de la complétion des modules.

Pour des pentesters aguerris, le passage des modules/cours peut s'avérer être un point problématique, car cela demande beaucoup de temps pour un gain limité, il y a donc des risques d'abandons en cours de route. C'est pour moi un des points noirs de la certification. Le fait d'avoir à valider les skills assesments de chaque module m'apparaît comme suffisant pour prouver que l'on a les compétences requises pour l'examen, la validation de chaque sous-chapitre d'un même module via des flags à trouver devrait être optionnelle. Avec cet ajustement, la certification pourrait devenir intéressante pour des personnes plus expérimentées pour qui les cours sont d'un apport négligeable.

L'examen a été une épreuve de mon côté, je ne m'attendais pas à ce niveau de difficulté, acceptable et raisonnable lorsqu'on est arrivé au bout, mais qui mène à de bonnes remises en question au moment de la réalisation. J'en sors globalement meilleur qu'au commencement, avec des notes personnelles bien remplies, satisfait d'avoir finalisé ce long parcours, plus humble et un avec joli PDF avec mon nom dessus :).

En novembre 2023, nous ne sommes que 152 dans le monde à avoir la certification CPTS :

N'hésitez pas à poser vos questions dans les commentaires ou sur notre Discord !

Enfin si vous voulez vous lancer dans l'aventure Hack The Box Academy pour améliorer vos compétences en cybersécurité : utilisez ce lien d'inscription (je gagnerai quelques points 🙂 ) :

author avatar
Mickael Dorigny Co-founder
Co-fondateur d'IT-Connect.fr. Auditeur/Pentester chez Orange Cyberdéfense.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “Cybersécurité : mon retour d’expérience sur la certification CPTS proposée par Hack The Box

  • Bonsoir,
    Votre article est très intéressant et l’on sent que cela n’a pas été une partie de plaisir.
    Pour autant, vous encouragez les débutants (?) à se lancer dans cette certification alors que quelqu’un d’aguerri comme vous a eut des difficultés. J’avoue ne pas comprendre ou alors il faut définir ce que vous entendez par débutants.

    Répondre
    • Bonsoir,

      Merci pour votre commentaire ! Effectivement l’examen a été plus difficile qu’attendu, ce qui ne signifie pas qu’il est totalement inatteignable, même pour un « débutant » qui doit de toute façon effectuer les modules de cours pour espérer passer l’examen. Cela représente au grand minimum des semaines d’apprentissage et de travail. Les débutants dans le domaine de la cybersécurité apprendront un tas de choses en suivant ce parcours, et même si la certification n’est au final pas obtenue (ce qui est le cas pour pas mal de gens si l’on suit les échanges sur le discord d’HackTheBox), le chemin sera très formateur et vaut le coup en soit.

      Dans le domaine du pentest (et dans bien d’autres), nous passons 95% de notre temps à ne pas parvenir à nos fins, ce qui ne signifie pas qu’il faut renoncer à prendre un chemin. Donc oui pas de doute, tout le monde peut se lancer dans le parcours du CPTS, débutant ou non 🙂

      Répondre
  • Bonjour,
    Votre retour d’expérience est vraiment complet et surtout très stimulant.
    Suite a. Sa lecture, j’ai décidé de saute le pas, je me suis inscrit sur la plate-forme HTB
    Je suis actuellement les module cpts
    j’arrive pas à installer arsenal les commande ne s’exécutent pas voilà les erreurs.
    NB sorry je sais que ce n’est pas un forum d’entraide, mais je suis coincé.
    Traceback (most recent call last):
    File « /usr/lib/python3.11/curses/__init__.py », line 94, in wrapper
    return func(stdscr, *args, **kwds)
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^
    File « /home/lordp/.local/lib/python3.11/site-packages/arsenal/modules/gui.py », line 319, in run
    wrapper(args_menu.run)
    File « /usr/lib/python3.11/curses/__init__.py », line 101, in wrapper
    endwin()
    _curses.error: endwin() returned ERR

    During handling of the above exception, another exception occurred:

    Traceback (most recent call last):
    File « /home/lordp/.local/bin/arsenal », line 8, in
    sys.exit(main())
    ^^^^^^
    File « /home/lordp/.local/lib/python3.11/site-packages/arsenal/app.py », line 185, in main
    App().run()
    File « /home/lordp/.local/lib/python3.11/site-packages/arsenal/app.py », line 64, in run
    self.start(args, cheatsheets)
    File « /home/lordp/.local/lib/python3.11/site-packages/arsenal/app.py », line 71, in start
    cmd = gui.run(cheatsheets)
    ^^^^^^^^^^^^^^^^^^^^
    File « /home/lordp/.local/lib/python3.11/site-packages/arsenal/modules/gui.py », line 827, in run
    wrapper(self.cheats_menu.run)
    File « /usr/lib/python3.11/curses/__init__.py », line 101, in wrapper
    endwin()
    _curses.error: endwin() returned ERR

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.