Comment j’ai passé l’OSCP (2023)
Sommaire
- TLDR;
- Présentation du cours et de l’exam
- Ma Timeline
- Mon Background
- Ma Préparation
- OSCP DAY
- Conclusion !
- Random Tips
- Ressources
TLDR;
Partant avec des solides bases en Web, programmation, en cybersécurité et en pentest, je me suis préparé en janvier avec le ProLab Dante de HackTheBox, puis j’ai commencé l’OSCP en avril, et j’ai passé l’OSCP en août.
Pour la préparation: j’ai pratiqué autant que possible et j’ai construit des automatismes de mon workflow de pentest.
J’ai fait :
- Dante (HackThebox ProLabs)
- PEN-200 : cours et exercices
- PEN-200 : Labs (les 3 modèles d’exam et un peu des autres)
- HackTheBox Academy : SQL Injection Module
- TryHackme : Lab Throwback, Active Directory Exploitation
- HackTheBox : 30 machines en suivant la fameuse TJ Null’s list (+Ippsec walkthroughs)
J’ai travaillé ma prise de notes et me suis construit un wiki perso au fur et à mesure avec Obsidian et Joplin.
Pour l'examen: les 2 jours qui ont précédé, j’ai relu les notes de tous les challenges / box / labs que j’ai pu faire. Pendant l’examen, si tu bloques plus de 45 minutes / 1h00 sur la même étape, passe à autre chose ou prends une pause pour te rafraîchir la tête (j’ai perdu 6h en ne voyant pas une info qui était sous mes yeux rip). Après quelques galères j’ai quand même réussi et j’ai validé l’exam à 70 points sur 100.
Voici le retext complet:
1) Présentation du cours et de l’exam
PEN-200 (cours de l’OSCP) est un cours pratique et autodidacte de test d’intrusion (pentest) qui vise à enseigner de solides bases et compétences en test d’intrusion par l’apprentissage de techniques et outils utilisés dans le monde pro.
Délivrée par OffSec (anciennement Offensive Security), cette certification est sûrement celle dont tout aspirant pentester vise pour gagner en crédbilité dans le milieu (bien que ce soit toujours un débat, je te laisse dire ce que t’en penses en commentaire).
1.1) Cours PEN-200
Le cours PEN-200 (2023) recouvre un large panorama de sujets en test d’intrusion:
- Mindset pour étudier (“Try Harder” Mindset)
- Déroulement et rapport d’un test d’intrusion
- Techniques d’énumeration
- Exploitation Web
- Surfaces d’attaques diverses
- Attaques côté-client
- Élévation de privilèges
- Mouvement latéral
- Pivoting
- Bases du contournement d’antivirus
- Exploitation Active Directory
Le cours est orienté débutant, ce qui veut dire qu’ils partent du principe que tu sais un minimum comment fonctionne Internet, comment fonctionne un réseau, et ils t’apprenent les fondamentaux et techniques / outils en test d’intrusion.
1.2) L’examen
1.2.1) Déroulement de l’examen
L’examen c’est un test d’intrusion (TI Interne) composé de 6 machines:
- 3 machines standalones (qui n’ont aucun rapport les unes aux autres, Linux ou Windows)
- 3 machines qui forment un set Active Directory (dont 1 est un pivot)
Tu as un accès au Lab de l’examen pendant 23h45, 15 minutes sont allouées au check du début d’exam.
Puis dans les 24h00 qui suivent, tu dois soumettre un rapport détaillé de ton test d’intrusion.
De plus, c’est un exam surveillé (“proctored”): tu dois partager ton écran et allumer ta cam, un opérateur OffSec est disponible pour répondre à tes questions, ou pour lui dire quand tu quittes ton bureau pour aller au WC / prendre une pause, tout au long de ton examen.
1.2.2) Système de points
Pour valider l’exam, il faut 70 points, sur les 100 possibles:
-
40 points pour la compromission de l’Active Directory (il faut être Domain Admin sinon c’est 0 point!)
-
20 points par standalone (3x20 <=> 60 pts):
- 10 pts pour l’accès initial (foothold)
- 10 pts pour l’élévation de privilèges (privilege escalation / privesc)
A l’examen, tu peux donc avoir un maximum de 100 points, 40 + 60, voire 110 si tu fais les 10 points bonus.
Pour les 10 points bonus, ils seront attribués automatiquement si tu complètes 80% des exercices du cours et que tu root plus de 30 machines des Labs.
La meilleure stratégie pour moi, c’est de commencer par le set Active Directory, puis avec les 40 points gagnés, continuer sur les standalones.
Je n’ai pas fait les 10 pts bonus, tbh j’aurais pu (21/30), pas eu le time.
2) Ma Timeline
La timeline de ma préparation jusqu’à l’obtention de l’OSCP:
3) Mon Background
Avant d’entreprendre l’OSCP, en dernière année de Master, je ne partais pas de zéro.
J’avais déjà une certaine culture générale solide en informatique & de l’expérience en test d’intrusion: exploitation Web & développement Web, fonctionnement de réseaux, programmation générale etc.
Je recommande de comprendre les fondamentaux de comment fonctionne Internet (Web, réseaux, protocoles), des bases en programmation, et comment fonctionne Linux / Windows / Active Directory.
((Envoie un DM si tu ne sais pas trop te positionner))[https://twitter.com/0xNarek]{:target=”_blank”}
4) Ma Préparation:
Voici les grandes lignes de ma préparation:
- Dante
- HackTheBox
- PEN-200 course, exercices & Labs
- TryHackMe Attacking Active Directory (Attacktive)
- TryHackMe Attacking Kerberos
- TryHackMe Attacking Post-Exploitation
- TryHackMe Throwback
- HTB VIP: TJ Null’s List
Avant de commencer direct le cours de l’OSCP et me préparer au mieux, j’ai regardé toutes les manières dont je pouvais m’entraîner qui me convenaient:
👉 PEN-200: Cours & Exos
👉 PEN-200: Labs
👉 HackTheBox: Machines
👉 HackTheBox: Academy
👉 HackTheBox: Pro Labs
👉 TryHackMe: Tout type
J’ai commencé ma préparation en Janvier 2023, et j’ai passé l’examen début Août 2023, soit 7 mois de différence.
Comme activités en parallèle de ma préparation, j’avais YouTube, les cours, et l’alternance. J’ai décidé de me focus principalement sur l’OSCP, donc j’ai mis en pause YouTube. Pour les objectifs comme une certif je peux recommander de ne pas multitask de gros projets en même temps, fais une chose à la fois, mais fais la à 100%.
ROAD TO OSCP
📅 [Janvier 2023]
Tout d’abord, je sentais que je manquais en expérience au niveau de l’exploitation Active Directory, pentest Windows et mouvement latéral.
Du coup j’ai commencé par Dante, un ProLabs de HackTheBox (maintenant à 49€/mois All-in-One Access).
J’y ai appris les choses suivantes:
🔻 Mouvement latéral en Active Directory
🔻 Techniques de pivot (pivoting) avec Ligolo, chisel, sshuttle
🔻 Transférer des fichiers d’hôtes à hôtes
🔻 Exploitation en Active Directory (AS-REP Roasting, Kerberoasting, DCSync, BloodHound)
🔻 Utiliser Impacket
🔻 et plus…
et j’ai amélioré mes skills en:
🔹 énumération rigoureuse Web et services
🔹 élévation de privilèges Linux & Windows
🔹 prises de notes
📅 [Mars - Avril 2023]
Puis après Dante milieu Mars, j’avais en tête de commencer le cours de l’OSCP milieu Avril (EC2 début avril, mon vlog de l’event), j’ai décidé de continuer sur des machines HackTheBox standard du 15 Mars au 15 Avril.
Le 15 Avril, j’ai eu mon accès au cours PEN-200, je commence mes 3 mois d’accès.
Avant c’était un PDF de 800 pages et un accès à un mega Lab.
Maintenant c’est un cours interactif avec des exercices en fin de chaque chapitre et 6 Labs:
- 3 similaires à un ProLabs HTB
- 3 similaires au modèle de l’examen
J’ai suivi régulièrement le cours.
Conseil si tu viens d’avoir ton accès PEN-200: essaie de commencer les Labs le plus tôt possible. Perso, je voulais d’abord faire tout le cours + exercices, mais ça s’est révélé être chronophage, et je n’avais plus assez de temps pour les Labs. Commence tôt, tu auras le temps de passer sur tous, et pourquoi pas avoir les 30 flags root pour les 10 pts bonus
📝 La prise de notes est vraiment game-changer pour le cours, voici comment je m’y suis pris personnellement:
Tous le cours PEN-200, je l’ai pris en notes dans Obsidian, éditeur Markdown intuitif local, et tout ce qui touchait aux Labs je les ais pris en notes sous Joplin, un autre éditeur Markdown local que je préférais pour les notes de pentest.
C’est un choix personnel, tout dépend de tes préférences.
PRO-TIP: quand tu veux chercher une commande mais que tu ne sais plus dnas quelle note tu l’as mise, utilise la recherche globale
Voici les raccourcis pour les 2 applis:
Pendant le cours, j’essayais vraiment d’aller au bout de chaque exercice et faire l’effort de faire même les exercices que je connaissais, for the sake of practice.
❓ Si jamais je bloquais vraiment, je demandais un avis dans le Discord OffSec, dont l’accès aux channels PEN-200 se fait après vérification.
J’avais eu de mauvais echos du cours de l’OSCP (sûrement concernant le PDF), mais j’ai été agréablement surpris de la qualité: - des explications des concepts - des techniques démontrées - et des exercices mis à disposition
🔥 En vrai pour des bases solides générales, le cours PEN-200 est vraiment OP.
En parallèle du cours de l’OSCP, je fais aussi le module Injections SQL de HTB Academy pour être rodé sur les SQLi, le module est très bien fait et met en confiance pour une exploitation in-bound manuelle.
Je continue mon apprentissage, et je finis fin-juin un truc comme ça, je peux maintenant commencer les Labs.
📅 [15 Juin - 15 Juillet 2023]
Comme pour Dante, ils sont assez bien faits, il faut ré-appliquer ce que t’as appris durant le cours, et ça se fait plutôt bien. En cas de blocage, et après épuisement de mes ressources énergétiques de tryhard, je posais des questions dans le Discord, et j’ai eu des réponses qui m’ont permis d’avancer rapidement.
On arrive début Juillet, soit 2 semaines avant la fin de mon accès. J’ai fait une poignée de machines de 2 Labs, et je vais m’attaquer aux 3 “exam mock” Labs copies de l’examen.
Je les fais assidûment, j’apprends encore des techniques cruciales (ex: Windows SMB Coerce depuis une application Web pour voler un hash NetNTLMv2), et à chaque fois que je bloquais vraiment sur une étape et que je demandais conseil, je notais sur une feuille de conseils généraux cette étape, pour me faire une liste des points que j’ai appris au fur et à mesure, pour pouvoir les relire plus tard et me les assimiler.
Exemple de feuille de notes:
Feuille de note sur mon bureau pour quick access
On arrive le 15 Juillet, mon accès prend fin. N’oublie pas de faire la demande de téléchargement du PDF avant la fin de ton accès !
📅 [15 Juillet - 31 Juillet]
Pour refaire du pivoting, j’ai fait le Lab AD Throwback de TryHackMe (50€), moins technique / conséquent que Dante mais bien pour le pivoting en AD.
Du 15 Juillet au 31 Juillet, j’ai pris une semaine de congés à mon alternance pour finaliser ma préparation (semaine de congés révision, profites-en), et j’ai repris la fameuse TJ Null’s list, liste qui recense des machines HackTheBox semblables à celles de l’ancien exam de l’OSCP, que j’ai fork et mis à jour selon celles que je faisais:
J’ai fait:
- 2 box par jour pendant 2 jours
- Rédaction d’une box sur le modèle de rédaction Word OSCP
- Day-off
- Repeat
Voici mon plan des 2 dernières semaines:
PRO-TIP: je n’avais pas fait les machines standalones proposées par OffSec “Proving Grounds: Practice”. Elles avaient l’air de se rapprocher de l’esprit d’OffSec pour les machines de l’exam, j’ai donc lu des writeups tout en essayant de le faire step by step en me demandait à chaque étape qu’es-ce que je fais. J’en ai lu une dizaine.
Concernant le débat de lire les writeups ou pas:
Toute est une question de franchise avec soi-même. Si je bloque, que je continue 45 minutes, mais qu’après moultes réflexions, non, je trouve VRAIMENT rien: je check l’étape précise où je bloque sur la vidéo d’Ippsec, ou du writeup officiel de HTB, je le documente, je le comprends, je le google, et je continue. Il n’y a que 24h dans la journée.
L’important c’est de créer le réflexe neuronal / mémoire musculaire de penser à cette technique la prochaine fois que tu es dans cette situation, et de comprendre pourquoi on y a pas pensé la 1ère fois.
🔎 Bien souvent, enumeration is key, faut-il encore savoir faire l’énumération ! LDAP, SNMP, FTP, SMB, Web subdirectories + files, subdomain, vHosts, high ports, NFS, …
📅 [31 Juillet - 01 Août]
Après une vingtaine de box en plus, on arrive au 31 Juillet, J-3.
J’arrête tout ce qui est technique, et je relis tout ce que j’ai pu faire, Dante, exercices & Labs PEN-200, HackTheBox, TryHackMe.
Je relis aussi les règles et le déroulement de l’examen.
Je prépare ma VM Kali (prendre des snapshots), mon shell Terminator ready, mon template Joplin, mon template Word OSCP de rédaction
Ça y est, on arrive au jour J.
5) OSCP DAY
Mercredi 02 Août à 13h00 CEST
Vers 12h45 je commence à me connecter au tableau de proctoring et je fais les vérifications caméra avec le moniteur (pas de stress, tout est renseigné dans leur mail).
Rush 1/4 — 13h00 - 17H00
Je commence donc à 13h00. J’identifie rapidement le pivot vers l’AD, et je commence mon énumération…
17h00.
J’ai énuméré tout le pivot, tous pleins de pistes (plusieurs rabbit holes), mais rien de concluant.
Entre temps, je suis aussi passé sur les 3 autres standalones, pareil, énumération à fond. J’arrive à avoir un foothoold (+10) sur une la 3ème standalone (Windows), je tente de trouver un moyen de privesc mais tous mes essais échouent.
10/70 points - 20 hours left ⏳
J’ai l’impression d’avoir fait tout le tour, et rien ne semble être vulnérable !! Dans ces moments-là on a une vision trop zoomée, et il y a des choses qu’on ne voit pas. Il faut faire une pause, boire de l’eau, respirer, bouger (j’avais mes poignées de pompes à côté) : mentalement switch de contexte pour laisser le cerveau faire sa tambouille dans le subconscient et revenir avec un nouveau regard plus frais.
17h30 je reviens sur le pivot, je galère encore… et c’est vers 20h00 que je vois l’information qu’il me fallait depuis 7h00, qui était SOUS MES YEUX mais qui se fondait dans les centaines de lignes et ma luminosité d’écran réduite (epic fail): un mot de passe vers un service que j’avais bien identifié.
Je fais mon exploitation et je root le pivot dans l’heure, je peux ENFIN commencer le set Active Directory.
Welcome to the Active Directory Set!
Rush 2/4 — 17h30 - 23h00
Mon entraînement en Active Directory était largement suffisant pour ce qui était demandé, et dans les 2h00 qui ont suivi j’étais Domain Admin (+40) ! 🎉 Une énumération rigoureuse et ça passe, rien de très compliqué.
Keep It Simple, Stoopid!
50/70 points - 14 hours left ⏳
Rush 3/4 — 23h00 - 03H30
Je peux retourner sur les standalones.
Il est 3h30 du matin. Je tourne en rond, j’ai toujours pas réussi à trouver d’infos / vecteurs d’attaque pour chopper un foothold sur une des 2 standalones, et pas de privesc sur la 3ème. Je vais dormir, réveil 8h00.
LAST RUSH 4/4 — 8h00 - 12h45
Réveil 8h00.
4h de sommeil dans le sang et de l’adrénaline, petite douche + pompes pour booster mon corps & mon cerveau et une bouillie de flocons d’avoine pour me donner de l’énergie.
⏳ 4 hours 45 minutes left
Je reprends la 1ère standalone, et. JE. VOIS. une donnée que j’avais trouvée MAIS que j’avais pas mis en corrélation avec un scénario d’exploitation pour un accès initial !
Je comprends ce qu’il faut faire et l’exécution était un peu tricky, mais avec 110% de mes capacités et mon sang-froid j’arrive à déchiffrer les mots de passe du <redacted> et de les rejouer pour chopper un shell.
10h30. Foothold, +10.
60/70 points - 2 hours left ⏳
Me reste plus qu’à privesc. Énumération Linux classique, identification d’un élément non-standard / non-legacy. J’avais aucune idée de comment privesc ça, mais avec mes skillz de googleur pro j’ai pu trouver des docs pour l’exploiter.
11h30.
OffSec plz don’t revoke my cert this is an illustration not an actual exam leak
Root de la 1ère standalone, +10.
70/70 points.
J’avais ce qu’il fallait pour passer. J’ai fait un point sur mes screenshots: je prends mes notes (screenshots et commandes + output) en même temps que mon expoitation.
Je fais une dernière passe sur les 2 autres mais sans succès.
⏳ 12h45 !
Le VPN coupe court. Pas de “est-ce que t’as bien fini”, c’est direct.
Rédaction du rapport
Après une pause d’une heure, j’attaque direct le rapport.
La tournure que j’ai adoptée pour la rédaction ressemblait à ça:
- “The FTP service available on port 21 suffers from CVE-2022-XXXX.”
- “Our Team identified multiple configuration defaults and confidential files allowing remote access to the target.”
… et 5h00 après, vers 19h00, c’était rédigé. Relu 3-4 fois, tous les détails vérifiés, le nom du fichier, mon identifiant OffSec, le format de rendu attendu, comparé les hash, et j’ai submit!
sleep deprived but proud narekkay submitting his OSCP report:
FIN DE L’EXAMEN !
Je partais en vacances le lendemain.
Quelques jours après, je reçois un mail d’OffSec…
🎯 Certifié OSCP ! (Certified on Credential.net)
Conclusion !
C’est totalement faisable, à condition de s’entraîner, pratiquer, prendre des notes, recommencer, encore et encore.
Tout au long de ton aventure vers l’OSCP, entraîne toi le plus possible, développe à fond le workflow de base:
🔻 Enumération → quelles infos j’ai, quelle surface d’attaque j’ai : comment je peux utiliser les infos d’un endroit sur un autre service
🔻 Foothold → chopper un shell devrait être une routine, Linux ou Windows: nc / pwncat / msf, ce que tu veux - payload à exécuter selon le contexte, boom boom automatisme, faut que ça devienne un automatisme
🔻 Privesc → D’abord faire de l’énumération manuelle avec ce que tu vois selon le contexte, et ensuite lancer les tools d’énum auto linpeas/winpeas/etc… Super important: il faut aussi savoir interpréter ce que tu vois!!!
🔻 Looting / mouvement latéral:
- Windows : on vise le compte Administrateur local / NT AUTHORITY\SYSTEM pour dump la base SAM
- Active Directory : le compte Domain Admin pour dump ntds.dit
- Systèmes UNIX : le compte root et potentiellement casser les hash de /etc/shadow
Pour ceux qui pensent que l’OSCP c’est bidon en skillz, il vous manque la compétence d’évaluer le niveau technique enseigné dans le cours, et requis pour valider l’exam, par rapport au niveau d’un débutant.
L’OSCP est très correcte pour un niveau de Pentester Junior.
Avant de s’inscrire à l’OSCP, je recommande de d’abord se faire une expérience avec le workflow du test d’intrusion (sur des plateformes comme HackTheBox/TryHackMe):
- énumeration
- accès initial
- élévation de privilèges
- looting / mouvement latéral
Puis une fois qu’on a une base, oui, passer sur l’OSCP.
J’appréhendais aussi l’examen. L’important c’est d’être confiant dans ta capacité à exécuter systématiquement ton process de pentest, et la confiance vient de la répétition: practice again and again.
HS: Juste après avoir fini la certif, tu ressens un peu un vide. Après 7 mois où tu n’avais que ça en tête… maintenant il faut gravir d’autres montagnes… je pense à la CRTO, CRTP, d’autres ProLabs HackTheBox, Sektor7, MalDev Academy ou encore l’OSEP:
Random Tips
Backtick Keyboard Shortcut
Dans Obsidian ou Joplin, pour ajouter un bloc de code, il faut l’encadrer entre 3 backticks : `
```bash
echo this is an example
```
La touche ` n’est pas ergnomique à taper (AZERTY) et il faut le faire 3 fois… flemme. Avec Clavier+ (keyboard remapper Windows), j’ai bind CTRL+ù à 3 backticks, ce qui accélère le process:
Mon template Joplin de box HackTheBox
Mon template Joplin de l’examen OSCP
Fine-tuner sa VM Kali
Alias
Pratiques pour accélérer ton workflow, voici quelques uns des miens:
1/ “runeth”
Refresh l’interface Internet de ma VM quand je la reprends après l’avoir pausé la veille (la commande parle d’elle-même)
1
alias runeth="sudo dhclient -r eth0 && sudo dhclient eth0"
2/ “runwww”
Lance un serveur Web Python pour du transfert de fichier ou chopper des requêtes HTTP
1
alias runwww="python3 -m http.server "
Note l’espace à la fin de la commande, c’est pour prendre le cas où tu veux spécifier un port précis. Tu peux aussi ajouter –directory=/tmp/abc pour spécifier un répertoire précis
3/ “tun0”
Pour copier ton IP VPN (interface tun0) dans ton presse-papier, pratique pour éviter de faire “ip a” et de chercher > copier > coller ton IP à chaque fois
1
alias tun0='ip a sh dev tun0 | grep -oP "(?:[0-9]{1,3}\.){3}[0-9]{1,3}" | tr -d "\n" | xclip -sel c; tun0ip=$(xsel -ob); echo "\033[1;32m[+]\033[0m Successfully copied \033[1;32m$tun0ip\033[0m (tun0) to clipboard !"'
Extensions de navigateur
J’ai les suivantes pour Firefox:
- FoxyProxy (switcher entre des configurations de proxy: Burp, serveurs socks, etc)
- Wappalyzer (identifier les technos d’un site)
- Cookie Manager (gérer les cookies)
- User-Agent Switcher
- Burp Proxy Toggler
Mon outil de capture d’écran: Flameshot
(Windows / Linux), pratique, excellent.
Misc
- Ta config tmux,
- Tes raccourcis Terminator,
- Ta barre des tâches Kali
l’heure est-elle assez grosse?
Pour finir, je te mets des ressources diverses dans la section plus bas:
- les rooms TryHackMe que j’ai faites,
- mes Wikis pentest en bookmarks
- et d’autres trucs, enjoy
💬 Si t’as une question, n’hésite pas, je réponds ! (sous délai aléatoire ^^)
— Twitter: @0xNarek — Discord: @narekkay — YouTube: Narek Kay — LinkedIn: Narek Kay
Ressources
TryHackMe
HackTheBox
Ippsec
- https://www.youtube.com/@ippsec
- https://ippsec.rocks/ (Pratique pour trouver une de ses vidéos selon un mot-clé)
Documentation pentest: