OSCP+ - Review - OffensiveSecurity
Introducción
El pasado viernes 27 de marzo recibí el aprobado de la OSCP+ con una puntuación de 100/100. El objetivo de este post es compartir mi experiencia durante el proceso y cuál creo que es el enfoque correcto para afrontar la certificación.
¿Por qué la OSCP?
La OSCP siempre ha tenido ese aura de dificultad y su lema “try harder” puede dar la sensación de que no vas a ser capaz de aprobar a la primera. Sinceramente, tras completar el curso PEN200 y realizar el examen, puedo decir que la dificultad no radica tanto en la parte técnica sino en la gestión del tiempo y saber cómo enfocar el examen.
A día de hoy, las certificaciones de OffSec son las más reconocidas en los departamentos de recursos humanos, lo cual tiene todo el sentido. El examen tiene un formato proctored, por lo que en todo momento tienes a una persona vigilándote. Esto permite a recursos humanos garantizar que una persona con la certificación tiene los conocimientos que esta acredita.
Conocimientos previos
En mi caso partía de una base bastante sólida, exceptuando algún client-side attack de windows, todo lo demás ya lo había explotado alguna vez o lo había aprendido en otras certificaciones como la eCPPTv2 o la CRTP. Yo no te reomendaría la OSPC+ si tu único objetivo es aprender. El curso PEN200 está bien, pero tienes otros muchos recursos y certificaciones que, por mucho menos dinero, te van a aportar un grado de conocimiento parecido.
Conocimientos necesarios para el examen
OffSec insiste en que cualquier concepto enseñado en el curso puede caer en el examen, exceptuando AWS (a día de hoy). Mi recomendación para los que partís ya con conocimientos previos es que reviséis todo el curso y anotéis el tipo de vulnerabilidades que se tocan, por ejemplo, en el curso no tocan SSTI, por lo que, siguiendo las instrucciones de OffSec no te va a caer una explotación SSTI directa. Esto os puede evitar muchos rabbit holes. En una práctica de laboratorio había una Web App que en mi caso me estaba gritando SSTI, y tras dedicarle un buen rato y pedir una hint, vi que por ahí no iban los tiros. Si hubiese sabido que ese tipo de vulnerabilidad no se cubría en el PEN200 no habría perdido el tiempo ni me habría obcecado con esa vulnerabilidad por muchos indicadores que a mi parecer apuntaban a SSTI.
Estructura del examen
Para saber cómo enfocar el examen hay que conocer a qué te estás enfrentando. Para aprobar necesitas un total de 70 puntos, siendo 100 el máximo que puedes conseguir. El examen está compuesto por un total de 6 máquinas, 3 máquinas individuales y 3 máquinas que conforman un entorno de AD. La distribución de puntos es la siguiente:
- Entorno AD: suma un total de
40 puntos- Máquina 1: solo tiene una bandera que recoger, proof.txt, y te otorga
10 puntos. - Máquina 2: igual que la máquina 1, una única proof.txt con un valor de
10 puntos. - Máquina 3 (DC): en este caso solo tiene una proof.txt, pero su valor es de
20 puntos.
- Máquina 1: solo tiene una bandera que recoger, proof.txt, y te otorga
- Máquinas individuales (standalone): un total de 60 puntos, 20 puntos por máquina.
- Local.txt: todas las máquinas tienen una local.txt a la cual accederás como usuario no privilegiado, valor
10 puntos. - Proof.txt: solo puedes acceder con privilegios de administrador, valor
10 puntos.
- Local.txt: todas las máquinas tienen una local.txt a la cual accederás como usuario no privilegiado, valor
Sabiendo esta estructura podemos definir los posibles escenarios que nos darían el aprobado 70/100 puntos:
- 40 puntos AD + 3 local.txt flags (70 puntos)
- 40 puntos AD + 2 local.txt flags + 1 proof.txt flag (70 puntos)
- 20 puntos AD + 3 local.txt flags + 2 proof.txt flag (70 puntos)
- 10 puntos AD + 3 máquinas standalone totalmente rooteadas (70 puntos)
Lo que podemos sacar en claro es que no podemos aprobar el examen sin al menos comprometer una máquina del AD, así que necesitaríamos comprometer las tres máquinas individuales y una proof.txt del AD, lo que a mi parecer me parece el escenario más complicado. Simplemente con que no logres obtener el foothold de una máquina te va a obligar a comprometer el set de AD en su totalidad, porque con solo 2 standalones (40 puntos) y 2 proof del AD (10 + 10) te deja con un total de 60 puntos, y tener que empezar a hacer el AD con la presión de que lo tienes que comprometer entero te puede jugar una mala pasada.
En mi opinión la mejor forma de enfocar el examen es empezar por el AD sí o sí. Teniendo en cuenta que al menos vas a tener que comprometer una máquina del set de AD es lo mejor. En el peor de los casos donde solo consigues la proof.txt de la primera máquina y decidas saltar a las standalones ya tendrías alguna opción de aprobar y, si ves que alguna standalone se te resiste, puedes volver al AD a ver qué te has podido dejar, aunque siendo sinceros, el set de AD son los puntos más “fáciles“. En términos de dificultad a mi parecer es bastante sencillo, lo más importante es tener los conceptos claros y prestar atención a los detalles, como en cualquier pentesting real la enumeración es crucial y no hay que subestimarla.
Preparación
Aquí hay muchos métodos y depende de los conocimientos sobre los que partas, voy a comentaros cómo la preparé en mi caso y cuál sería mi recomendación si partís de 0.
Entorno
No veo que la gente haga demasiado hincapié en la importancia de tener un buen entorno de trabajo, pero es algo que me parece esencial. Necesitas un entorno donde puedas estar cómodo trabajando y con el que seas eficiente. Durante el examen vas a acabar con infinidad de shells, unas apiladas sobre otras, por lo que la capacidad de poder tener varias shells abiertas que sean capaces de tener sus propias pestañas y seas ágil moviéndote entre ellas te va a ahorrar mucho tiempo.
Mi preparación
En mi caso fui módulo por módulo revisando el contenido y asegurándome de que no había nada nuevo que me pudiese pillar por sorpresa durante el examen, además, cuando veía alguna vulnerabilidad que ya conocía pero tenía algo oxidada realizaba su laboratorio correspondiente. Partiendo de una buena base este proceso te puede llevar 1 mes, sin embargo, para una persona sin conocimientos previos en explotación web, networking, privesc, AD, etc… le puede llevar bastante más, como no es mi caso, no os podría decir.
Mi recomendación si partís de 0
Lo más importante es que desarrolléis vuestro olfato como pentesters, es sin duda lo más importante de este examen, saber por dónde tirar e intuir si estás en un rabbit hole. Esta es la diferencia entre tardar 30 minutos en rootear una máquina o 3 horas. La única forma de desarrollar este olfato es la práctica.
¿Qué haría yo? Pues seguir la estructura del PEN200 y, cuando completéis un módulo, buscar máquinas en HTB que toquen esos conceptos para afianzarlos. Mucha gente comenta que lo mejor es prepararse realizando máquinas en Proving Grounds, que vendría a ser como el HTB de OffSec, pero en mi caso no lo he probado, así que no puedo daros una opinión. Seguramente sí que sea una muy buena forma de prepararlo, ya que por lo que comenta la gente las máquinas se parecen bastante a las del examen, pero en mi opinión, si de verdad queréis aprender y mejorar vuestro olfato deberíais ser capaces de trasladar las prácticas de HTB a las máquinas de las simulaciones/examen. Además, lo más seguro es que en el examen no te pongan réplicas 1:1 de lo que has tocado en Proving Grounds, por lo que la capacidad de adaptar tu proceso de explotación a lo que te vas encontrando es crucial.
Siempre que estéis intentando pwnear una máquina, intentar hacerlo con la mínima ayuda posible. Recordad que en el examen nadie te va a poder dar pista de cómo proseguir.
Preparación del examen
Para mí lo más importante, puedes tener todos los conocimientos del mundo que si no desarrollas una estrategia para el examen es muy posible que fracases. Tienes que saber a qué te vas a enfrentar y cómo lo vas a enfocar, junto con la suscripción a PEN200 OffSec ofrece una serie de laboratorios llamados Challenge Labs para poner tus skills a prueba. Os recomiendo que una vez creáis que ya tenéis los conocimientos afianzados paséis a realizar los labs Secura, Medtech, Relia y, si vais sobrados de tiempo, Skylark.
Durante estos laboratorios, si estáis atascados, podéis utilizar el sistema de mentorship que ofrece OffSec en Discord, es muy útil si necesitáis ese pequeño empujón para salir de un bloqueo.
Simulaciones de examen
No hay mejor método de preparación que simular un intento de examen, en este caso, OffSec ofrece los challenge labs OSCP A, B y C que son exámenes retirados y te permiten hacerte una idea de a qué te vas a enfrentar.
¿Cómo afrontarlos?
En mi caso tenía el examen el martes a las 11:00 am así que decidí el viernes, sábado y domingo realizar las simulaciones lo más fielmente posible al día del examen. Si seguís este esquema os aseguro que el día del examen será como una práctica más.
Así que viernes, sábado y domingo realicé las simulaciones y durante las tres pruebas fui anotando los tiempos en los que conseguía rootear cada entorno, mis tiempos de media fueron:
- AD (3 o 4 horas): en ese rango horario ya tenía completado el AD, aunque no sea “difícil” hay que prestar atención a los detalles e intentar seguir una metodología clara, ya que pasarte algo por alto puede provocar que pierdas mucho tiempo. No puedo decir que tener la CRTP haya jugado en mi contra, ya que gracias a ella tengo unos conocimientos de AD sólidos, sin embargo, me hacía sobrecomplicar muchas cosas, mi recomendación es que mantengáis todo lo más simple posible y ceñirse a las vulns/recon que habéis visto durante el PEN200.
- Máquinas independientes (1 hora y 30): es el tiempo que recomendaría por máquina, habrá máquinas que puedas con ellas en 30 minutos y otras que estés 3 horas porque has pasado algo por alto. Si estás muy bloqueado en una máquina pasa a la siguiente, te aseguro que cuando vuelvas es muy probable que salgas del bloqueo.
Por lo que si todo va bien deberías tener el examen completado en unas 8 horas, tened en cuenta que no es lo mismo ir a saco a rootear que ir paso a paso haciendo capturas y apuntes de todo lo que encuentras.
La OSCP no solo valora que consigas todas las banderas, sino que luego seas capaz de elaborar un reporte competente.
Examen
Día del examen
Llegó el día del examen, la verdad es que haber hecho las simulaciones de examen te pone en situación, la única diferencia es que debes estar 15 minutos antes para conectar con el proctored y hacer los steps iniciales antes de conectarte al lab.
OffSec te recomienda realizar una simulación de proctored donde te vas a conectar a la interfaz web y vas a poder comprobar que tanto la webcam como el screen sharing funcionan correctamente. Además, OffSec recomienda utilizar X como display server en Linux, en mi caso utilizo Wayland (Arch + Hyprland), por lo que me aseguré de que tenía todos los programas necesarios para que la funcionalidad de compartir pantalla no diese problemas. No tuve ningún inconveniente durante el examen.
Con todo ya listo me dispongo a enfrentar el examen, aquí obviamente no puedo entrar en detalles, pero de verdad, no puedo remarcar más la importancia que tiene realizar las simulaciones de examen. A las 15:00 ya tenía el AD completado con todas las capturas y apuntes necesarios, por lo que me podía olvidar por completo sabiendo que ya tenía 40 puntos en el bolsillo. Me tomé un descanso y aproveché para comer.
Una vez hecho el descanso, 45 minutos aproximadamente, empecé con las máquinas individuales, y tuve la suerte de que la primera que hice supe por dónde tirar desde el principio y aunque me tocó hacer un poco de research para la privesc la pude rootear en unos 40 minutos, por lo que tras unas 5 horas de examen ya tenía 60 puntos y seguía 1:1 mi ritmo de las simulaciones.
En la segunda máquina es donde empezaron los problemas, si se pueden catalogar así. Básicamente por no prestar atención a los detalles me tomó más tiempo de lo que debía y ahí es cuando te pueden venir los pensamientos de ¿de verdad me voy a quedar con 60 puntos? Cuando entras en esta dinámica yo os recomiendo que antes de saltar a la siguiente máquina vuelvas sobre tus pasos e intentes prestar atención a los detalles, conseguí resolver mis problemas y a las 19:30 ya tenía los 80 puntos.
Ahora tienes dos opciones, seguir con el examen o intentar pwnear la siguiente máquina, en mi caso ya más por un tema ego personal decidí ir a por la tercera, la verdad es que al ir tan bien de tiempo y tener ya todo documentado para que simplemente tenga que copiar y pegar el día del reporting ayuda bastante.
La tercera máquina, el foothold no fue nada extremadamente complicado pero la privesc la verdad es que estaba completamente perdido, y todos los posibles vectores de escalada que vi no llevaron a nada, por lo que decidí conformarme con los 90 puntos y dejar de perder el tiempo. Empecé a revisar todas las capturas y vectores de explotación para asegurarme de que durante el reporting no me faltase nada, y revisando mis apuntes de la tercera máquina se me ocurrió una última cosa que probar, conecté dos ideas que yo consideraba independientes y bum, escalada de privilegios conseguida. La sensación de conseguir los 100 puntos no se puede describir con palabras la verdad, lo celebré como si fuese un gol en el último minuto.
Algo que os puede ayudar tanto en CTFs y certificaciones es que en vuestros apuntes anotéis todo lo que os parezca que esté fuera de lugar o sea raro, nunca sabes si al revisarlo vas a conseguir unir esos conceptos para poder llegar a conseguir un foothold o privesc.
Reporting
Sin exagerar, esta fue la parte más dura del examen. Al final, OffSec te pide que el reporte sea como lo harías en un pentest real. A día de hoy he realizado más de 40 informes profesionales y, por experiencia, un reporte no consiste únicamente en indicar el vector de ataque, sino en documentar cada una de las vulnerabilidades encontradas para que puedan subsanarse, aunque no se traduzcan directamente en un foothold, movimiento lateral o privesc. En mi caso, acabé con un informe de 115 páginas, una barbaridad. No creo que sea necesario llegar a ese nivel de detalle para aprobar, probablemente con documentar de forma clara cómo has llegado a obtener las flags sería suficiente.
Las 24 horas de examen sí que me parece un buen formato y de sobra si te has preparado bien, pero 24 horas para el reporte me parece forzar la máquina. Si se espera que se haga un reporte de calidad yo daría 48 horas.
Subí el reporte sobre las 9 am del jueves y el viernes ya tenía el correo indicando que había obtenido la certificación OSCP+, no me esperaba tal rapidez.
Conclusiones
La OSCP es una certificación por la que vas a tener que pasar tarde o temprano para mejorar tu currículum y optar a mejores puestos/salarios, pero si tu intención es simplemente aprender tienes otras opciones más baratas. La OSCP a mi parecer hay que verla como una inversión y un reto personal para validarte a ti mismo y a tus conocimientos.
Contacto
Para cualquier duda me podéis contactar a través de X sin compromiso alguno, recalco que no voy a dar ninguna respuesta acerca del propio examen, pero si tenéis algún problema/duda acerca de la preparación no dudéis en preguntarme.








