Retext OSCP 2021

Retour d'expérience sur le cours PWK et mon passage de l'examen OSCP.

 April 4, 2021 -  23 min read

TL;DR

La formation PWK fournie dans le package OSCP est une formation que je recommande à tous ceux qui s’intéressent de près ou de loin aux tests d’intrusions, quel que soit le niveau technique. L’environnement de lab est hétérogène et permet de travailler des méthodologies “simples” comme la reconnaissance réseau, mais également des mécanismes plus avancés comme du double pivoting avec firewalling. L’assurance de réussir l’examen en revanche dépendra principalement de la qualité et la quantité des révisions réalisées. Les compétences techniques initiales sont, selon moi, un facteur secondaire.

Introduction

Cet article expliquera l’approche que j’ai pu avoir afin de me préparer à cette certification. La création d’un journal de bord détaillé ne m’a pas semblé pertinente, je vous proposerai néanmoins certains repaires temporaires. Je précise également que l’article ne contient pas d’informations confidentielles concernant le lab ou l’examen de l’OSCP. Enfin, cet article est purement subjectif. Il représente mon point de vue personnel et s’inscrit dans un cadre temporel précis (les certifications évoluent rapidement). C’est pourquoi je vous conseille également de consulter d’autres retours d’expérience, avec par exemple l’article d’ACKNAK.

Cet article intervient en complément de ma présentation faite à Hack2G2, disponible ci-dessous:

Les slides sont également disponibles ici.

Pourquoi une certification ?

Pourquoi passer une certification ?

Ayant terminé mon école d’ingénieur en cybersécurité, je souhaitais valoriser mon expérience personnelle et mes 3 années d’alternances en pentest. La demande des employeurs et des clients de disposer de pentesters “certifiés” est un facteur qui m’a conforté dans l’idée de passer une certification en pentest. Enfin, une certification comme l’OSCP était pour moi une satisfaction personnelle que je souhaitais ajouter à mon CV depuis longtemps.

Pourquoi en passer une “maintenant” ?

Nous sommes en septembre 2020. La fin de mes études et la baisse d’activité de mon équipe de CTF Aperi’Kube m’ont permis de libérer du temps. Le confinement mis en place contre la pandémie mondiale de COVID-19 est par ailleurs l’occasion rêvée de passer une certification aussi chronophage. J’ai donc décidé de me lancer dans les révisions techniques peu de temps après ma fin d’études.

Quelle certification choisir ?

Le choix d’une certification technique dépend généralement de plusieurs facteurs :

  • Le contenu de la formation associée
  • Sa réputation
  • Sa difficulté
  • Son prix
  • Autres (besoin de l’entreprise, besoin client …)

Certaines certifications propriétaires ne possèdent pas d’alternative, dans ce cas la question du choix ne se pose pas. En ce qui concerne la cybersécurité (et surtout le pentest), il existe une multitude de certifications avec des caractéristiques différentes.

Afin de répertorier ces différentes certifications, des projets communautaires comme Security Certification Roadmap ont vu le jour :

Security Certification Roadmap

Je ne vais pas aborder l’ensemble des certifications sur cet article, mais je souhaite aborder 2 organismes qui ont attiré mon attention.

EC-Council - CEH

L’entreprise EC-Council a récemment publié une nouvelle version de sa certification “Certified Ethical Hacker” : CEHv11. Cette certification autrefois basée sur un QCM de 4 heures propose depuis peu un examen pratique de 6 heures avec une vingtaine de challenges.

CEH

  • Points positifs
    • Le panel de technologies abordées semble large (WPA3 cracking, Lab de pentest, Reverse Engineering, …).
    • L’élève peut passer au choix la certification QCM ou technique (ou les deux).
    • L’apparition du CEH “Practical” a redoré l’image de la certification.
    • La certification CEH est parfois plus connue des clients que l’OSCP.
  • Points négatifs
    • Les communautés avec lesquelles j’ai pu échanger avaient tendance à ne pas reconnaitre cette certification, estimant que le niveau technique proposé était trop faible pour apparaitre sur un CV.
    • Le modèle économique se base en partie sur un renouvellement financier annuel pour assurer la validité de la certification.

Je rappelle ici qu’il s’agit d’un avis purement personnel. Je vous invite à consulter le site de l’organisme afin de vous constituer votre propre avis.

eLearnSecurity - eCPTX/eWPTX/eJPT

eLearnSecurity

eLearnSecurity est une entreprise qui propose un large ensemble de certifications techniques en cybersécurité :

  • eCPTXv2 : eLearnSecurity Certified Penetration Tester eXtreme
  • eCPPTv2 : eLearnSecurity Certified Professional Penetration Tester
  • eJPT : eLearnSecurity Junior Penetration Tester
  • eWPTXv2 : eLearnSecurity Web application Penetration Tester eXtreme
  • eWPTv1 : eLearnSecurity Web application Penetration Tester
  • eCXD : eLearnSecurity Certified Exploit Developer
  • eMAPT : eLearnSecurity Mobile Application Penetration Tester
  • Threat Hunting, Forensic, …

Ces certifications sont plus abordables que l’OSCP ou le CEH (339 € par certification, 170 € pour l’eJPT). La charte graphique récente de l’entreprise pourrait laisser croire à un nouvel acteur sur la scène de la formation en pentest. Un peu de recherche suffit à invalider notre hypothèse, on apprend alors qu’eLearnSecurity existe depuis plus de 10 ans.

  • Points positifs
    • Certification abordable financièrement.
    • Plusieurs niveaux techniques sont proposés (les différents retours indiquent que l’eCPTX est plus dur que l’OSCP).
    • La formation proposée semble récente et les supports modernes
  • Points négatifs
    • L’organisme ne propose pas directement la formation (certification uniquement). En revanche un partenaire proposant l’ensemble des supports est proposé à un tarif de 40 €/mois.

Je rappelle ici qu’il s’agit d’un avis purement personnel. Je vous invite à consulter le site de l’organisme afin de vous constituer votre propre avis.


En ce qui me concerne, le choix de l’OSCP s’est fait principalement par rapport à la réputation de la certification auprès des recruteurs en France. Le contenu important de la formation (800 pages) récemment mis à jour m’a également conforté dans ce choix.

Présentation rapide de l’OSCP

Offensive Security

Offensive Security

Offensive Security est une entreprise américaine de pentest et forensics crées en 2007. L’entreprise maintient notamment la distribution de pentest Kali Linux (anciennement BackTrack), mais également le site ExploitDB, Google Hacking Database, ou encore l’outil de pentest Metasploit.

L’entreprise propose un ensemble de formation en pentest, dont l’OSCP qui correspond à leur certification d’entrée de gamme. Cette certification est à mon sens la certification la plus connue dans le milieu du pentest. Le passage de l’ensemble des certifications d’Offensive Security se fait sur des exercices pratiques, contrairement à certains organismes optant pour des QCM.

Cours PWK

PWK

La certification vient accompagnée d’une formation “PWK” (Pentest With Kali) constituée d’un PDF de plus de 850 pages, ainsi que de plus de 17 heures de vidéos explicatives, le tout en anglais. L’accès à ces ressources est illimité, mais doit rester personnel : les documents (vidéo et PDF) sont watermarkés avant d’être transmis. À noter également qu’Offensive Security se réserve le droit d’invalider l’ensemble de ses certifications en cas de fuite d’informations. Bien que le nom de la formation suggère l’utilisation de Kali, la formation s’applique en réalité sur l’ensemble des systèmes d’exploitation, bien qu’un système Linux soit fortement conseillé.

Lab PWK

À cette formation s’ajoute un environnement virtuel, également appelé “Lab”. Cet environnement est constitué de plus de 70 machines (dont certaines correspondent à d’anciennes machines d’examen). Ces machines sont réparties dans plusieurs sous-réseaux afin de permettre d’aborder la partie pivoting de la formation. L’accès au lab se fait via un profile openvpn. Le lab intègre une partie de reconnaissance réseau : les adresses IP des machines, passerelles, serveurs DNS, sont volontairement omises dans le descriptif du lab.

Lab

Prix

Les prix initialement proposés par Offensive Security sont en dollars américains. Les prix en euros ne prennent pas en compte les potentiels frais de votre banque. En ce qui me concerne, j’ai opté pour le package Cours + 60 jours à 1017 € et n’ai pas eu de frais supplémentaires. Concernant la durée du lab, je conseille un accès de 60 jours au minimum (je reviendrais sur cette durée dans l’article).

Package Prix ($) Prix (€)
Cours + 30 jours d’accès au lab + un examen OSCP $999 847 €
Cours + 60 jours d’accès au lab + un examen OSCP $1199 1017 €
Cours + 90 jours d’accès au lab + un examen OSCP $1349 1143 €
Cours + 365 jours d’accès au lab + 2 examens OSCP $2148 1821 €
Rattrapage Prix ($) Prix (€)
Frais de rattrapage d’examen OSCP $249 211 €
Extension de Lab Prix ($) Prix (€)
Extension de Lab de 30 jours $359 304 €
Extension de Lab de 60 jours $599 508 €
Extension de Lab de 90 jours $799 677 €

Proving Grounds

Afin de préparer ou compléter l’OSCP, Offensive Security propose également depuis 2021 un lab “Proving Grounds” avec une partie gratuite (PG Play) correspondant aux VM Vulnhub, et une partie payante à $19 mensuel (PG Practice) avec des machines similaires au lab PWK. Ce lab peut également être vu comme un terrain d’entrainement pour les personnes ne souhaitant pas passer la certification OSCP.

Contenu de la formation

Le Syllabus du cours PWK est disponible librement sur le site d’Offensive Security. On y retrouve notamment les différents sujets traités par la formation (liste non exhaustive) :

  • Penetration Testing: Ce que vous devez savoir. (Il s’agit ici de la présentation des risques du pentest sauvage, de certaines anecdotes concernant certaines techniques …)
  • Se familiariser avec Kali Linux. (Tutoriel d’installation et de prise en main de la distribution Kali Linux.)
  • Command Line Fun. (Revue des commandes bash basiques, notamment sur la partie réseau et système de fichiers.)
  • Outils pratiques. (?)
  • Scripting Bash. (Création de scanners personnalisés.)
  • Collecte d’informations passive. (Des méthodologies d’OSINT sont notamment abordées dans le cours.)
  • Collecte d’informations active. (Des méthodologies d’OSINT sont notamment abordées dans le cours.)
  • Scan de vulnérabilités. (Utilisation de scripts NSE, utilisation de certains scanners comme Nikto et Nessus.)
  • Attaques applicatives web. (Injections SQL et injections de code/commandes …)
  • Introduction aux Buffer Overflows. (Stack overflow basiques Linux/Windows avec prise en main de debuggers.)
    • Buffer Overflows Windows. (Stack overflow Windows basique avec prise en main de debuggers.)
    • Buffer Overflows Linux. (Stack overflow Linux basique avec prise en main de debuggers.)
  • Attaques Client-Side. (XSS, Macro offices, …)
  • Localiser des exploits publics. (Découverte d’exploit-db.)
  • Correction d’exploits. (Apprendre à reconnaitre les points bloquants des exploits pour les adapter à notre contexte.)
  • Transfert de fichiers. (Téléchargement en upload et download sur Windows et Linux via différents protocoles.)
  • Évasion d’Antivirus. (Utilisation de msfvenom et techniques simples d’évasion.)
  • Élévation de privilèges. (Présentations de différentes techniques d’élévation de privilèges sous Windows et Linux.)
  • Attaques sur mots de passe. (Utilisation des outils de bruteforce “remote” comme Hydra et “locaux” comme John.)
  • Redirection de port et Tunneling. (Le lab offre de nombreuses possibilités avec la plupart des machines isolées d’internet.)
  • Attaques sur Active Directory. (Le lab offre plusieurs environnements Active Directory différents. Pour chaque environnement, plusieurs chemins d’exploitations sont possibles.)
  • Framework Metasploit. (Familiarisation avec le framework, configuration d’options avancées.)
  • Framework Powershell Empire. (Découverte du framework Empire.)

D’une manière générale, j’ai trouvé le contenu de la formation complet et hétérogène. Le lab vient compléter le cours en nous mettant face aux problèmes abordés pendant le cours PWK. Par exemple, l’utilisation du logiciel Crowbar abordée dans le cours pour le bruteforce RDP fonctionnera généralement mieux qu’Hydra. L’environnement propose une multitude de services vulnérables (FTP, SSH, RDP, HTTP, SNMP, SMTP, SMB, LDAP, Kerberos, RPC/NFS, TFTP, MSSQL, MySQL …) et ne s’appuie donc pas uniquement sur des vulnérabilités web.

Mon niveau initial

Comme indiqué dans le paragraphe sur mes motivations, je suis un jeune pentester passionné et sortant d’école d’ingénieur. À ce moment précis j’ai 23 ans et j’ai déjà réalisé plusieurs pentests, essentiellement sur des environnements web. J’avais également participé à de nombreux CTF (une trentaine), principalement avec mon équipe Aperi’Kube, et même organisé quelques-uns. Concernant les plateformes de challenges, j’étais relativement actif sur Root-Me. En revanche, j’étais peu actif sur des sites comme HackTheBox ou TryHackMe. Enfin, j’avais déjà une aisance particulière en scripting (python3), qui m’a été utile pendant mes révisions et le jour de l’examen. Avant de m’engager dans cette certification, j’avais déjà identifié certaines lacunes. En premier lieu il y avait mon manque de compétences dans les environnements Windows (notamment par manque d’opportunités professionnelles). Ensuite, mes compétences liées à l’exploitation de binaires types Buffer Overflow étaient limitées (et le sont encore 😅).

Malgré mes expériences, similaires à de nombreux amis ayant passé l’OSCP, j’appréhendais comme beaucoup cette certification. Le sentiment de ne pas être assez “compétent” ainsi que l’autofinancement de cette certification ne faisaient que retarder ma décision. J’ai finalement profité de la situation sanitaire et des encouragements bienveillants de mon ami Maki pour m’engager dans cette certification. Avec le recul, je regrette de ne pas avoir sauté le pas plus tôt.

Important : Mon expérience personnelle ne constitue en aucun cas un prérequis pour passer l’OSCP. Les compétences nécessaires à l’obtention de la certification sont entièrement abordées dans le cours. Selon moi, les prérequis pour prétendre à cette certification sont avant tout l’assiduité pendant les révisions de la certification, ainsi qu’avoir des bases en informatique. Une expérience préalable en pentest vous permettra d’appréhender plus facilement le cours, mais ne vous dispensera pas des révisions.

Ma préparation avant le cours PWK

Hack The Box

Hack The Box

Ma décision de passer la certification ne s’est pas traduite directement par l’achat du package OSCP, mais par un entrainement intensif sur le lab du site Hack The Box. J’ai pour cela souscrit à l’offre VIP à 10 £/mois (~12 €/mois). L’accès à l’offre VIP permet de disposer des anciennes box (machines vulnérables), d’un environnement de révisions plus calme, des machines plus stables et moins de risque de spoil par les autres membres inscrits. J’estime avoir au moins autant appris sur ce lab que sur le lab fourni par Offensive Security. Il est par ailleurs beaucoup plus abordable que le lab PWK et mérite d’être pris en compte lors de l’achat de votre package de formation.

D’une manière générale, les box proposées sur HackTheBox sont plus compliquées que celles du lab PWK (et sont au-delà des attentes de l’OSCP). Le choix des box HTB ne s’est donc pas fait au hasard. En effet, il existe plusieurs listes communautaires énumérant les box pertinentes pour les révisions OSCP :

Liste HackTheBox

Tout comme le lab PWK, les box proposées sur HTB disposent généralement d’une première étape consistant à compromettre un utilisateur système, puis d’une deuxième étape consistant à compromettre l’administrateur de la machine. Dans la suite de l’article, j’utiliserai le terme “rooter” une box, qui équivaut à une compromission d’administrateur.

Du mois d’octobre 2020 à début janvier 2021, j’ai rooté près de 60 machines HTB retirées, soit une box tous les deux jours pendant 4 mois par ordre croissant de difficulté. J’ai réalisé ce sprint sur des périodes de révisions essentiellement en dehors de mes horaires le travail, le soir de 18 h à 00 h, et le week-end. La validation de ces box s’est faite majoritairement sans l’aide de Write-Ups (corrections), sauf dans le cas où la box devenait trop chronophage. Ce compromis entre le temps passé à chercher et la notion enseignée est un paramètre qui peut être difficile à appréhender. Aussi, je recommande aux personnes n’ayant pas pratiqué de challenges type “CTF” de ne pas utiliser ces write-ups pour commencer, quitte à passer plusieurs jours sur une box. En effet, trop de personnes échouent leur examen en ayant trop pris l’habitude d’aller s’aider des corrections (ceci est valable également pour le lab PWK). Pour les autres, il s’agit d’un choix personnel, mais il faut garder à l’esprit que trop de “Try Hard” sur une technologie particulière peut parfois nous détourner de notre objectif principal.

Je n’ai pas abordé ici le lab “Proving Grounds” d’Offensive Security, qui aurait pu constituer un bon candidat comme environnement d’entrainement pré-OSCP. Ce dernier à le mérite de se rapprocher au plus proche du lab PWK puisqu’il est proposé par la même entreprise. Cependant, j’ai jugé HTB plus pertinent, car la qualité des box et la diversité des technologies abordées sont reconnues ; de plus le lab HTB couvre un périmètre complémentaire au lab PWK (et Proving Grounds).

Prise de notes

Lors de la réalisation de ces box, j’ai tenu à jour un wiki personnel afin d’y renseigner mes commandes et techniques de manière organisées. J’ai opté pour un repository GIT avec des fichiers au format MarkDown, mais également des scripts. Voici un extrait de l’architecture:

├── 21 - FTP.md
├── 25,143,587 - SMTP & IMAP.md
├── 80,443 - WEB.md
├── Bruteforce
│   ├── local.md
│   └── remote.md
├── index.md
├── Linux
│   ├── Privesc.md
│   ├── setuid2.c
│   ├── setuid.c
│   └── ...
├── Pivoting
│   ├── index.md
│   ├── local_port_fwd.py
│   ├── socks5_py3.py
│   └── ...
├── ReverseShell
│   ├── index.md
│   ├── Invoke-PowerShellTcp.ps1
│   ├── Msfvenom.md
│   ├── perl-reverse-shell.pl
│   ├── php-reverse-shell.php
│   └── ...
└── Windows
    ├── 111 - RPC - NFS.md
    ├── 139, 445 - SMB.md
    ├── 1433 - MSSQL.md
    ├── 161 - SNMP.md
    ├── 389, 636, 3268, 3269 - LDAP.md
    ├── 69 (UDP) - TFTP.md
    ├── 88 - Kerberos.md
    ├── BufferOverflow
    │   ├── bof_step_1.py
    │   ├── bof_step_2.py
    │   ├── bof_step_3.py
    │   ├── bof_step_4.py
    │   └── Methodo
    ├── index.md
    ├── LSASS.md
    └── Privesc.md

Afin de pouvoir naviguer et effectuer des recherches dans ces notes, j’ai utilisé l’IDE VSCode :

VSCode

Cette prise de note personnelle est à mon sens essentiel pour progresser et obtenir la certification. Certains pentesters opteront pour des outils différents, comme CherryTree. L’accès à votre wiki ainsi qu’aux wikis publics est autorisé à tout moment, y compris pendant l’examen.

Parmi la liste des ressources présente dans mes marque-pages, j’aimerais vous partager les suivantes que j’ai jugé utiles pour le passage de cette certification :

  • HackTricks : Wiki complet décrivant des méthodologies par protocoles ou environnement
  • PayloadAllTheThings : Base de données de payloads, de bypass et de méthodologies
  • ired.team : Wiki orienté Red teamming
  • GTFOBins : GTFOBins est un site qui liste les binaires Unix pouvant être utilisés pour élever ses privilèges, échapper des shells restreints, mettre en place différents shell, transférer des fichiers, …
  • WADComs : Équivalent à GTFOBins pour les environnements Windows/AD

Formations préalables ?

Afin de réduire les couts de formation, il peut être utile de se former au préalable dans l’idée de réduire au maximum votre temps de lab (et limiter le nombre de repassages d’examen). La formation PWK et le lab PWK sont fournis en même temps. Il n’est donc pas possible de lire la formation avant de commencer le décompte du temps lab. Malheureusement, je n’ai pas de formation particulière à vous recommander (autre que PWK !), en revanche voici des articles couvrant une partie de cette formation et méritant d’être abordés en amont :

Cours et Lab

Après avoir rooté un grand nombre de box, je me suis inscrit pour le package OSCP avec un accès lab de 60 jours. Offensive Security propose différentes dates de début de formation (afin de ne pas surcharger le lab partagé). J’ai pu obtenir une date le 10 janvier 2021, soit une semaine après l’achat de mon package. Tout comme pour mes révisions pré-PWK, j’ai réparti mon travail sur des horaires allant de 18 h à 0 h en semaine, et toute la journée le week-end. La formation a été très chronophage, et j’ai passé 90 % de mes week-ends à réviser. Heureusement, le confinement m’a conforté dans l’idée de ne pas pouvoir sortir.

Cours

J’ai pu lire le PDF dans son entièreté, les vidéos fournies ne sont qu’une réexplication du contenu PDF. Je n’ai regardé que la partie vidéo concernant les buffer overflow, ainsi que l’active directory. Je connaissais déjà une grande partie du contenu de la formation, c’est pourquoi je regrette de ne pas avoir passé l’OSCP plus tôt. J’ai tout de même appris des choses, que ce soit des commandes Linux basiques ou des mécanismes plus avancés. Le contenu du cours respecte convenablement le syllabus évoqué plus tôt dans mon post.

Semaine 1 & 2

Les deux premières semaines de révisions m’ont permis de prendre en main les différentes ressources proposées par Offensive Security : Lecture du cours, Forum, Accès VPN, etc. J’ai également pu prendre mes marques sur le lab, effectuer un premier scan réseau, et root de 2-3 machines. La lecture du cours suggère la réalisation d’exercices. La plupart de ces derniers sont chronophages, et j’avais déjà eu l’occasion de les réaliser durant mon école d’ingénieur ou en CTF. J’ai donc volontairement omis 90 % des exercices.

Il est intéressant de noter que la réalisation des exercices, assortis de la rédaction d’un rapport, octroie 5 points complémentaires lors de l’examen final. La quantité d’exercices suffit à elle-même pour occuper 30 jours de lab. De plus, les 5 points complémentaires ne sont utiles que dans certaines configurations très spécifiques de l’examen (je reviendrais dessus dans la section examen). C’est pourquoi beaucoup de pentesters (moi y compris) choisissent de se concentrer sur le lab.

Semaine 3 et 4

À partir de la troisième semaine, une routine s’est mise en place, avec un minimum d’une box rootée par jour. J’ai commencé par les “low hanging fruits”, dont l’énumération des services suffit souvent à elle seule d’identifier les vulnérabilités. La quasi-totalité des box est composée de “rabbit holes” : des services aux apparences vulnérables sont au final de simples pièges dans le but de vous faire perdre du temps.

Semaine 5

Durant la cinquième semaine, j’ai décidé de m’attaquer au “Big 5”. Il s’agit de 5 machines réputées pour leur difficulté. Les machines s’avèrent légèrement plus compliquées que les autres, mais avec une expérience de CTF suffisante et en prenant son temps sur les phases de reconnaissances, j’ai pu rooter l’ensemble du “Big 5”.

Semaine 6

À l’issue de la sixième semaine, j’avais pu découvrir l’ensemble des sous-réseaux, plusieurs box me résistaient encore. Contrairement au lab HTB où les machines ne sont pas liées, certaines machines du lab PWK dépendent d’une post-exploitation d’une autre machine. Par exemple, le cassage des hash utilisateurs après la compromission d’un AD peut permettre de récupérer des comptes applicatifs pour une autre box.

Semaine 7

Lors de la septième semaine, j’ai décidé de refaire une passe sur les exercices de Buffer Overflow. J’ai également commencé à me “spoil” certaines box, afin d’identifier les prérequis de certaines machines. Le réseau très hétérogène propose des macros environnements, et parfois le manque de réalisme du réseau nous amène a oublier certaines parties de post-exploitation. Pour ma part, je m’étais contenté de casser un maximum de mots de passe, que je mettais dans une wordlist “PASSWORDS.txt” (de même pour les utilisateurs avec “USERS.txt”). Ce n’est malheureusement pas suffisant.

Semaine 8

J’ai concentré ma dernière semaine sur la préparation de mon examen, en travaillant les notions que j’estimais mal acquises ou insuffisantes.

Pour conclure sur le lab, ce fut 60 jours intenses et trop courts, même avec une bonne préparation. Tout comme le lab HTB, le lab PWK m’a permis d’alimenter mon wiki.

Préparation à l’examen

Mon lab se finissait le 10 mars. Un mois avant la fin de ce lab, j’ai pu prévoir une date de passage d’examen pour le 12 mars. Les créneaux de passage le WE sont rares, je vous conseille donc de prévoir votre date d’examen dès que possible (il est possible de décaler cette date plusieurs fois).

Avant l’examen, j’ai préparé un modèle de rapport en me basant sur celui fourni par Offensive Security, mais également celui proposé par Noraj sur son repository GitHub. La création d’un tel modèle est un gain de temps précieux que vous devez prendre en compte. J’ai également relu l’ensemble des règles relatives à l’examen (durée de l’examen de 23 h 45, restrictions relatives à Métasploit, outils professionnels interdits, exploitation automatique interdite, preuves obligatoires sur le rapport…). J’ai également mis en place des solutions de secours en cas de problèmes : vérifier son crédit téléphonique en cas de coupure internet, configurer un PC de secours si possible, vérifier si l’on dispose d’une seconde webcam, etc. Enfin, vérifiez votre stock de boissons énergisantes et/ou café, et reposez-vous la veille de votre examen.

Déroulement de l’examen

L’examen de l’OSCP dure 23 h 45, auxquelles s’ajoute 24 h dédiées à la rédaction du rapport. Vous êtes bien entendu autorisé à prendre autant de pauses que vous le souhaitez.

Proctoring

L’examen est depuis peu “proctoré” : vous devez partager l’intégralité de vos écrans ainsi que votre webcam tout le long de l’examen (hors rédaction). Ce partage s’effectue facilement grâce au plug-in Janus WebRTC Screensharing. Lorsque l’examen démarre, le surveillant vous demandera alors de présenter votre carte d’identité, ainsi que de faire le tour de la pièce avec votre webcam. Une fois le processus de vérification terminé, le surveillant vous enverra les modalités d’examen. Il sera ensuite amené à vous contacter en cas de perte de la caméra ou d’un écran. À l’inverse, vous serez invité à prévenir le surveillant lors de vos pauses.

OS

L’OS utilisé pour passer l’examen est libre du moment que vous pouvez satisfaire la connexion OpenVPN ainsi que le proctoring. Ayant révisé essentiellement sur ArchLinux, j’ai opté pour un host ArchLinux + une VM Kali et Windows pour l’examen. Je vous conseille de garder le même environnement entre vos révisions et votre examen, et d’éviter de faire des mises à jour la veille de l’examen. Un environnement Kali Linux et Windows, au moins en VM, est fortement recommandé ; principalement pour certains tools packagés dans d’anciennes versions, ou pour la compilation de binaires Windows.

Notation

Pour valider l’examen de l’OSCP, un score de 70 points au minimum est demandé. Ces points sont attribués en fonction du taux de compromission des différentes box d’examen. Jusqu’à aujourd’hui, le seul modèle d’examen que j’ai pu rencontrer sur les différents retours d’expérience pour l’OSCP était le suivant :

Tache Description
Une liste d’exercice du lab à 5 points Grande liste d’exercices à préparer en amont de l’examen.
Une machine à 10 points Machine sans élévation de privilège, il s’agit d’un service tournant en root ou Administrateur, nécessitant d’adapter un exploit ou une technique simple.
Une machine à 20 points Une compromission utilisateur + administrateur est attendue.
Une machine à 20 points Une compromission utilisateur + administrateur est attendue.
Une machine à 25 points Une compromission utilisateur + administrateur est attendue.
Une machine à 25 points Il s’agit d’un Buffer Overflow a priori sous Windows. Le service est exposé sur un port, et un accès RDP à une copie de la machine est fourni. La machine RDP ne possède pas la preuve (ou flag), et dispose d’un debugger. Aucune élévation de privilèges n’est attendue.

Tous comme pour le lab, l’ensemble des box est truffé de “rabbit holes”. Cependant, de bonnes révisions vous permettront de les identifier rapidement. Il n’y a pas de “taux” de répartition Windows/Linux/autres. Autrement dit, rien n’exclut que vous vous retrouviez avec 4 machines sous FreeBSD 😂.

Concernant la liste d’exercice à 5 points, vous comprendrez rapidement qu’il y a peu de possibilités pour que ces 5 points vous aident à atteindre 70pts.

Enfin, le nombre de points n’est pas directement représentatif de la difficulté de la box. Vous constaterez par exemple dans la prochaine section que la machine à 10 points est la dernière machine que j’ai réussie à rooter.

Mon passage

Pour rappel, mon examen commençait le 12/03/2021 à 8 h 10. Voici un récapitulatif détaillé de ma journée :

  • 9 h 15 [25 pts] : Root de la machine de Pwn (Buffer Overflow) à 25 pts.
  • 10 h : Je trouve un payload instable pour la machine à 10 pts, une socket s’ouvre, mais l’exploit est instable 🙂.
  • 14 h [45 pts] : Root d’une machine à 20 pts, toujours pas de 10 pts.
  • 15 h [65 pts] : Root d’une machine à 20 pts, toujours pas de 10 pts 💀.
  • 16 h : User shell sur la machine à 25 pts, et découverte de la privilege escalation. Je n’ai pas envie d’exploiter avec le framework Metasploit. Toujours pas de 10 pts.
  • 19 h [90 pts] : Root de la dernière machine à 25pts (avec et sans Metasploit), il ne reste que la machine de 10 points 💀💀.
  • 20 h [100 pts] : Après 10 h de tryhard, l’exploit instable de la machine à 10 pts finis par passer sans raison apparente 😭.

J’ai pu profiter du temps qu’il me restait pour vérifier l’ensemble de mes preuves et captures d’écran. J’ai également commencé la rédaction du rapport.

Résultats

Trois jours après avoir soumis mon rapport, je recevais la certification OSCP avec succès 🙂.

OSCP Cert

Et après ?

La fin du lab et le passage de l’examen ont laissé place à un grand vide. Mes soirées n’étaient plus rythmées par des révisions intensives. Toutefois, le manque de challenge technique s’est de nouveau fait ressentir, et la crise mondiale de COVID-19 était toujours d’actualité. C’est pourquoi, après quelques mois de repos, j’ai décidé de me replonger dans une nouvelle certification : l’OSWE. Il s’agit d’une certification de pentest un peu plus avancée, délivrée par Offensive Security, qui aborde plus spécifiquement l’audit d’applications web en approche boite blanche. Si vous souhaitez en savoir plus, j’ai publié un article similaire au sujet de mon passage de l’OSWE.

Remerciements

Je remercie ma famille, mes amis et collègues qui ont participé de près ou de loin à l’obtention de cette certification, et plus particulièrement :

  • Maki pour m’avoir rassuré au sujet de la difficulté de la certification.
  • Noraj pour sa bienveillance, ses compétences techniques et ses conseils.
  • Fireplop pour sa bienveillance, ses compétences techniques et ses conseils
  • Midniblue pour son support inconditionnel pendant mes longues révisions et mon examen.
  • ACKNAK pour son RETEX.