Droga do certyfikacji OSCP jest w mojej ocenie jedną z trudniejszych i wymagających. Biorąc pod uwagę wszystkie wpisy jakie przeczytałem innych osób (oczywiście większość po angielsku - medium) postanowiłem podzielić ją na etapy, które przygotowały mnie do zdania egzaminu.
Na początek trochę teorii. Certyfikat OSCP wydawany przez firmę Offensive Security, wymaga od zdającego przeprowadzenia pentestu na 5 maszynach w czasie 24H pod nadzorem opiekunów egazminu. Całość jest 100% praktyczna. Po egzaminie mamy kolejne 24H na przygotowanie raportu opisującego jak zdobyliśmy maszyny (do zdania uprawnia nas 70 punktów na 100 możliwych).
Kurs PWK w cenie od 999$-1349$ dla 30-90 dni dostępu do laboratoriów, który jest obligatoryjny oraz uprawnia nas do przystąpienia do egzaminu. Opcja na którą się zdecydowałem to 60 dni (opiszę później dla czego warto ją wybrać).
Podzielę moje przygotowania na kilka etapów:
- Początek przygody
- Laboratoria
- Ostatnie szlify
- Egzamin
1. Początek przygody
Ciężko jest przeliczyć ile tak naprawdę czasu poświęciłem na przygotowanie do egzaminu (jeżeli coś lubisz to czasu nie liczysz). Sama przygoda zaczyna się od zdania eJPT z eLearnSecurity. Dla jednej osoby będzie to kilka miesięcy dla innej rok. Mi najbardziej pomagały systematyczność czyli codziennie małymi krokami jakieś maszyny w THM lub HTB.
Oglądanie ippsec dla poprawienia metodologii , jak on dzieli maszyny na etapy i jak poszukuje informacji. Najbardziej owocny okres i najbardziej intensywny to czas od Czerwca do Września(kiedy zdawałem egzamin) w tym okresie nie było dnia żeby nie zrobić jakiejś maszyny i nie nauczyć się czegoś nowego. Jako że na co dzień nie jestem pentesterem mam rodzinę, pracę i całą masę innych rzeczy. Czas jaki miałem zarezerwowany, codziennie godzina 20:00 a o której kończyłem? aż nie zdobędę roota! szczególnie jest to wymagające jak się ma np. na 6/8 rano do pracy a skończyło się ok. 2:00 w nocy 😀.
Podsumowując, zaczynając swoją przygodę należy wcześniej zbudować właściwą metodologię, podstawowe umiejętności w eskalacji uprawnień wyniesione z platform THM/HTB, opanować transfer plików pomiędzy maszynami.
Trzeba być upartym, ciekawym i nie poddawać się.
2. Laboratoria
Wypełniamy formularz rejestracyjny, podajemy Emial (jak mamy firmowy to super, nie musimy przechodzić weryfikacji ID), wybieramy datę kiedy chcemy zacząć kurs, podajemy dane karty (nie potrącą nam VAT!), zatwierdzamy i czekamy na pakiet startowy oraz Kali Linux VM. Warto ją pobrać skonfigurować (instalacje kompilatorów do 32 bit, ulubione toole) i odrazu zrobić backup.
Wybrałem dla siebie opcję 60 dni. Wyniosłem praktykę z HTB/THM więc stwierdziłem, że przy pominięciu materiałów PDF (jest tego po aktualizacji z 2019r ponad 850 stron, a w kieszeni zostanie parę $ na VIP konta w PG/HTB) przygotuję się do certyfikacji. Wyłamałem się z założenia tylko raz dla Active Directory oraz video obejmujący ten temat. Osobiście pominąłem robienie zadań tylko dla 5 pkt do egzaminu. Jak mam się przygotować do zdania za pierwszym podejściem czas należy poświęcić na praktykę (komendy, transfery plików, podstawowe narzędzia miałem opanowane z platform).
O godzinie 2:00 otrzymałem Connection Pack tj. dostęp do VPN, materiały. Metodologia Offsec - masz wszystko od nas, czyli chlup na głęboką wodę i ucz się pływać 😀. Kurs nie zaliczam do "beginner friendly". Cel na laby to 60 dni czyli do pokonania ok 60 maszyn (lab ma ok. 75) przy założeniu jedna maszyna na dzień.
Wszystko miałem to odpaliłem nmapa.. i się złapałem za głowę ;) jak to ugryźć tyle hostów. Zacząłem od wejścia na forum, zrobienia 2 maszyn z ich metodologią tak "dla przetarcia" i poznania jak oni budują serwery. Na stronie jest lista 10 maszyn na początek które Offensive Secirity poleca. Pokonałem 9 z nich, poznałem DNS i zrobiłem skanowanie dla pozyskania Hostname i ułożenia sobie resztę maszyn do zdobycia (na końcu zdobiłem tą 10 - wymagała pivot do podsieci).
Pokonałem wielką piątkę (maszyny trudne wg kursantów), pokonałem obie sieci Active Directory (bardzo ciekawy kawałek kursu), zdobyłem dostęp do ukrytych podsieci (te ataki z tunelowaniem, miód na moje oczy!).
Podsumowując:
Laboratoria maja dużo starych podatności, maszyny są ze sobą powiązane, na pewno sieć jest ciekawie przygotowana z bardzo różnym stopniem skomplikowania (są maszyny na 25 min hackowania i są takie na kilka godzin lub dni).
Cel jaki sobie ustawiłem to 60 maszyn w 60 dni co udało się osiągnąć!
Czy udało by się przygotować do egzaminu z samych laboratoriów? odpowiem w następnym podpunkcie.
3. Ostatnie szlify
Ostatnie dwa dni labów poświęciłem na "złapanie" koncepcji Buffer Overflow dla systemów Linux/Windows 32 bit. Posiadając już doświadczenie w python (wpis na blogu) napisanie prostego skryptu do fuzzowania, badchars i ostatecznie POC pod buffer nie stanowiło problemu. Wydaje mi się, że sam BOF jest łatwy o ile przerobimy 5-10 podatnych programów (polecam win10 32 bit w wirtualce, wyłączony defender i instalowanie tam podatnych aplikacji) dobry pokój posiada pod to TryHackMe.
Same laboratoria według mnie nie są wystarczające (laby to symulacja sieci corpo, egzamin to pojedyncze maszyny do zdobycia). Wykupiłem VIP w Proving Grounds z Offensive Security (jak uczyć się to na maszynach przygotowanych przez ludzi z Offsec) i robiłem maszyny wg listy TJNull. Dodatkowo VIP w HackTheBox i również lista TJNull. Całość cenowo zamknęła się w 29$ co jest znacznie tańsze niż dodatkowe 30 dni w labach PWK 😀
Podsumowując, jako ostatni szlif dołożyłem do kompletu 25 maszyn oraz 6 aplikacji (razem z BrainFuck z THM) jako przygotowanie do Buffer Overflow. Oczywiście cały czas prowadziłem notatki w CherryTree z wszystkich maszyn oraz szybkie onelinery. POLECAM zweryfikować zapiski, zrobić backup VM Kaliego (oczywiście backup W10 - MS może zaskoczyć po aktualizacji) dzień/dwa przed egzaminem.
4. Egzamin
Do postawienia kropki nad "i" pozostało tylko podejście do egzaminu. Wygodne jest w bookowaniu egzaminu możliwość przełożenia go w czasie (ja nie musiałem) tylko należy pamiętać że nie wcześniej niż 72H przed egzaminem.
Plan jaki miałem to trzy dni przed datą (w moim przypadku 6 września godzina 8:00 - polecam godziny w jakich normalnie funkcjonujemy/pracujemy) egzaminu zrobić mini symulację 1 maszyna BOF i do tego 1 ciężka maszyna oraz 1 łatwa z platformy PG.
W dzień egzaminu dostałem connection pack i instrukcję połączenia z systemem proctoringu (polecam poczytać exam guide - odpowie na większość wątpliwości), przez 24H jesteśmy obserwowani przez opiekunów egzaminu oraz widzą co robimy na pulpitach.
Wcześniej zaopatrzyłem się w wodę, przekąski oraz coś na dodanie energii (chciałem jak najmniej robić przerw, możemy robić ile się chce, należy tylko poinformować opiekuna, ja przyjąłem 15 min przerwy po zdobytej maszynie i jedna dłuższa na mini odpoczynek).
Po przejściu procesu weryfikacji, pokazanie pokoju ID przystąpiłem do egzaminu. Przyjołem schemat: BOF w tle skanowanie reszty wskazanych IP.
Z exploitacją BOF poradziłem sobie w ok 1,5H. Zebrałem wszystkie print screeny, rewizja notatek i lecimy z właściwą częścią.
Kolejna na tapetę wpadła maszyna z najwyższą notą 25 pkt, grzebałem się z nią ok 4H i przeszedłem do kolejnej. Maszyny o punktacji 20 pkt zrootowałem w 2H/maszyna, zebranie screenów oraz notatek (ze względów na tajemnice egzaminu, nie napisze co zawierały, dodam tylko że były to dość świeże podatności 2019/2020r).
Parę godzin w egzaminie, szybka kalkulacja mam 25 + 20 + 20 = 65 pkt no to jedna maszynka i mamy to 😀
W tym momencie zrozumiałem co znaczy słynne motto "Try Harder", najłatwiejsza maszyna w "stadzie" przepaliła mi 10H pracy. Tak łatwa że wystarczy odpalić exploit i gotowe.. znalezienie prawidłowego exploita i dopasowanie go pochłonęło właśnie ten czas (oraz rewerty maszyny - możemy resetować boxy 25 razy). Musiałem odpocząć 1H zanim złamałem maszynę. Przyjść ze świeżością, myślę że to bardzo pomogło.
O godzinie 5:00 śmiałem się do monitora, odpaliłem netcata i buch mamy strzał, to pozostało zebranie screenów notatek i finisz.
Do godziny 7:00 przeszedłem wszystkie kroki w maszynach jeszcze raz, poprawiłem notatki zebrałem więcej zdjęć i napisałem że kończę egzamin.
Po małej drzemce przystąpiłem do przygotowania raportu z testu penetracyjnego. Wybrałem dla siebie templatkę w języku md oraz eksport do PDF z LaTeX. Rozpisanie szczegółowo każdego kroku, dopasowanie zdjęć, opisów podatności w języku angielskim (poprawa błędów na translatorze) zajeła mi z przerwami 10H. Spakowałem wszystko, uploadowałem do Offsec.
Wystarczyło poczekać 24H na bardzo przyjemny Email z Offcec. Jedną ze specyficznych rzeczy jest to że nie dowiemy się ile punktów nam zabrakło jeżeli nie zdamy, informacja przychodzi w formię Fail/Pass.
Na koniec chciał bym też podziękować żonie, bez wsparcia (w mojej 3 miesięcznej nieobecności po godzinach) ciężko by było przejść tę drogę.
Mam OSCP i co teraz ? zgłębianie wiedzy, praca jako pentester oraz wyznaczenie sobie następnego celu w mojej drodze... OSWE, eWPT ? czas pokaże 😀.
Klika pomocnych źródeł:
Poniżej mój certyfikat:
Certyfikat OSCP
"I Tried Harder"