Ich habe es geschafft! Ich darf mich nun “Offensive Security Certified Professional“, kurz OSCP nennen.
Diese Zertifizierung hat mir tatsächlich so einiges abverlangt an persönlichen Entbehrungen, schlaflosen Nächten und schmerzvollem Scheitern. Um so süßer war dann das Gefühl, endlich die Zertifizierung geschafft zu haben.
Anders als bei anderen “klassischen” Zertifizierungen, die viel Theoriewissen vermitteln und mit Multiple Choice Tests enden, liegt hier eindeutig der Schwerpunkt auf Praxiserfahrung. Das ist genau das, was ich wollte: einen Kurs, der weh tut, hinein in die Abgründe der Kommandozeile.
Nach der Anmeldung bekommst Du folgendes:
- Ein Ebook mit dem Kursmaterial und Übungen (sehr gute Qualität, kaum Inkonsistenzen)
- Videomaterial mit kommentierten Screencasts (ebenfalls von hoher Güte, in ruhigem und klarem Englisch)
- Einem Laborzugang per VPN in das “Lab” von Offensive Security
Ich habe mich zunächst dem Ebook und dem Videomaterial gewidmet und bis auf die Übungen noch nicht an das Labor getraut. Fehler!
Mein Rat: so schnell wie möglich ins Lab und versuchen, Maschinen zu hacken. Nur so bleibt man am Ball und wird in den Bann gezogen. Ich habe leider viel Zeit ins Land streichen lassen und wollte zunächst das ganze Lehrmaterial abschließen. Da Beruf und Familie kaum Freizeit für den OSCP über ließen, hat dies ein paar Wochen gedauert.
Die Lab-Zeit musste ich mehrmals erweitern. Dabei habe ich festgestellt, dass man mit jedem Erwerb einer Lab-Erweiterung einen Prüfungsversuch erhält. Erweitert man jedoch, ohne eine Prüfung zu absolvieren, so verfällt der “alte” Prüfungsversuch. Bei der zweiten Erweiterung dachte ich mir, ich probiere es einfach mal. Zu dem Zeitpunkt hatte ich 18 von über 50 Maschinen gerootet.
Exam 1 (Stirb an einem anderen Tag)
Mit ordentlichem Respekt begann ich die Prüfung an einem Montag um 11 Uhr vormittags (mitteleuropäischer Zeit der früheste Prüfungsbeginn). Die Familie war im Urlaub, mein Keller mein zu Hause für die nächsten 24h.
Was dann folgte war ein Höllenritt!
Aufgabe: (Root-)Shells auf 5 Rechnern erhalten (mit unterschiedlichen Punkten gewichtet)
Ziel: 70 von 100 Punkten erreichen
Ich begann mit einer vermeidbar leichten aber hoch gewichteten Maschine und folgte dem üblichem Schema zum Entwickeln eines BufferOverflow-Exploits. Pustekuchen!
Obwohl ich scheinbar alles korrekt wie in den Übungen und der eigenen Vorbereitung machte, wollte der Exploit nicht funktionieren. Ich wusste, das hier war ein Must-Have und ließ nicht locker. Double-, Trible-check aller Schritte, kein Erfolg.
2 Uhr nachts: Mein Rechner stürzt ab. Ich fahre schweres Geschütz auf für den Wiederholungsfall!
Ich beschließe mich schlafen zu legen und stehe immer wieder auf mit einer neuen Idee. Schließlich gegen 7 Uhr morgens macht es klick! Mein Verdacht hatte sich bestätigt und die Maschine war endlich geknackt. Erst jetzt verstand ich einen kryptischen Ratschlag, den ich zuvor in einem Blog über die Prüfung gelesen hatte: “treffe niemals Annahmen!”
Zu spät, aber danke!
In der restlichen Zeit fühlte ich mich als Außenseiter, der in der Nachspielzeit 0:3 zurückliegt und trotzdem nochmal alles probiert. Ich holte nochmal alles raus und konnte eine Maschien rooten und auf einer anderen ein Low-privileged Shell erhalten. Jetzt nur noch Privilege Escalation und ich könnte es schaffen, auf 60 Punkte zu kommen. Mit dem 10-Punkte-Bonus, den man für die Einreichung der gelösten Übungsaufgaben und eines Lab-Reports erhalten kann, hätte ich die erforderlichen 70 Punkte erreicht!
Wenig später: Over and Out, um 10:45 endet die Prüfungszeit wie angekündigt.
Nur halb enttäuscht schreibe ich trotzdem den Bericht und reiche ihn ein. Knapp war es, nächstes mal wird es leichter.
Aufrappeln
Eine Prüfung nicht zu bestehen passierte mir bisher ganz selten, aber Aufgeben kommt nicht in Frage. Was führte zum Scheitern?
- Ich war nicht gut genug vorbereitet! Was beim Pentesting am meisten hilft ist Erfahrung. Es gibt keine Abkürzungen! Mit gerade mal 18 gehackten Maschinen habe ich mir nicht mal die Hörner abgestoßen. Auch wenn es nicht pauschal gilt, aber die Anzahl der im Lab gehackten Maschinen ist ein guter Indikator dafür, ob man für die Prüfung bereit ist. Der Anbieter nennt hier alle ca. 30 Maschinen aus dem Student Lab bis auf die Big-Three (die drei besonders schweren Maschinen Pain, Sufferance und Humble) als ungefähre Größe.
- Schlechte Strategie. Die Kunst beim OSCP ist es, sogenannte Rabbit Holes zu vermeiden, sich also zu schnell auf eine vermeidliche Lücke zu stürzen und nicht von ihr abzulassen. Das kostet Zeit und die Erfahrung zeigt, dass Offensive Security nicht will, dass man in die Tiefe geht, sondern in die Breite. Also gilt die goldene Floskel-Regel: “Enumerate, enumerate, enumerate!” tatsächlich.
- Zu wenig Schlaf vor und während der Prüfung. Mein Tipp: 24h vor der Prüfung mit dem Üben aufhören und nur auf die eigene Ausgeruhtheit konzentrieren.
Nach ein paar Wochen Pause buchte ich erneut eine Labtime von 30 Tagen und es galt nun, soviel viel möglich an Erfahrung zu sammeln. Ich plante zusätzlich eine Prüfung zur Mitte der Labtime als weitere Übung. Wenn es klappt, super. Wenn nicht, geschenkt, weiter üben.
Exam 2 (Der Morgen stirbt nie)
Überraschung! Neue Prüfungsbedingungen! Offensive Security hat in der Zwischenzeit u.a. folgendes geändert:
- Die Bonuspunkte für den Labreport schmelzen von 10 auf 5 Punkte
Gut zu wissen. Wenn ich bedenke, wie knapp ich beim ersten Versuch gescheitert war, trotz meiner offensichtlichen Defizite, ein nachvollziehbarer Schritt von Offensive Security. Ich benötigte nun also auf jeden Fall einen erfolgreichen (Teil-)Hack auf 4 von 5 Maschinen.
Auch wenn ich bei diesem Versuch ein Scheitern einkalkulierte, nahm ich ihn dennoch ernst. Innerhalb von 6 Stunden war ich ungefähr genauso weit wie beim ersten mal und hatte noch reichlich Zeit für die restlichen Maschinen. Ab jetzt wurde es wieder hakelig und ich hatte es mit Maschinen mit einer Unmenge an offenen Ports zu tun, offensichtlich eine gewollte Ablenkung. Zum ersten Mal begann ich jedoch ein Big Picture des Prüfungslabors zu erkennen und entdeckte auf einer Maschine eine potentielle Lücke. Am Ende scheiterte es an der Umsetzung des Exploits und an der Zeit. An Schlaf war wieder nicht zu denken. Diese Gefühl, wenn dein Gehirn sich nachts um 3 anfühlt wie Pudding, war mir neu. Es ging tatsächlich an die Belastungsgrenze.
Diesmal verzichtete ich auf einen Report, da das Feedback von Offensive Security beim ersten Versuch ausblieb.
Zielgerade
Jetzt Begann es, Spaß zu machen. Die Maschinen fielen. Manche taten weh und beschäftigten mich tagelang, andere nur ein paar Stunden (ganz wenige sogar nur Minuten). Am Ende hacke ich mich in 2 weitere Netze, wende Pivot-Techniken an und traue mich sogar erfolgreich an eine der Big-Three: Pain. Über 40 Maschinen habe ich erfolgreich gehackt und fühle mich bereit.
Exam 3 (Goldeneye)
2 Wochen intensive Labtime später war ich endlich bereit.
Am Vorabend schaute ich noch ein paar Videos von Jan Wikholms Path to OSCP an. Vor allem das hier hat nochmal motiviert:
https://localhost.exposed/2016/08/13/path-to-oscp-part-23-hope
Wenn man seine Freude im Moment des Triumphes in seinen Augen sieht, erinnert es an Leistungssportler, die eine Goldmedaille gewinnen und den zehrenden Trainingsaufwand belohnt wissen. Ein hinkender, mir aber sehr zusagender Vergleich.
Diesmal begann ich die Prüfung um 14 Uhr, weil ich hoffte, mit ruhigerem Gewissen schlafen gehen zu können, da noch genügend Zeit am nächsten Tag übrig bliebe. Was gar nicht nötig war…
Dieser Versuch verlief wie geschmiert:
um 1 Uhr nachts hatte ich genügend Punkte erkämpft und konnte mich endlich schlafen legen. Nachdem ich am nächsten Morgen die notwendige Dokumentation gesammelt und geprüft hatte, wollte ich die restlichen Maschinen auch knacken. Viel souveräner und gelassener war dies nun nur noch Formsache. Ich konnte also die Prüfung mit wohl 100 von 100 Punkten abschließen. Gegen 15 Uhr reichte ich den Report ein und traf mich mit Freunden und Familie im örtlichen City Beach. Yes!
Fazit
Der OSCP ist zweifellos eine der größeren Herausforderungen, der man sich als ITler in Sachen Zertifizierung stellen kann. CISSP und TISP sind dagegen Peanuts, wie Patrick Sauer treffend formulierte.
Wer bereits als Pentester Erfahrung hat, wird es deutlich leichter haben. Meine Erfahrung als jahrelanger Softwareentwickler und -architekt half hier nur bedingt, da das Scripting mit Python, Bash und Ruby selten das Problem war. Es half sicherlich am meisten beim Fixen von Exploits aus der Exploit-DB.
Ich habe definitiv meine Admin-Skills für Windows und Unix/Linux verbessert und kann nun Penetration Test durchführen.
Nach der Prüfung ist vor der Prüfung, als nächstes könnte ich den OSCE angehen, der mehr auf die Entwicklung von Exploits abzielt. Mein Fokus wird aber wohl eher auf die Praxisanwendung des Erlernten abzielen und so werde ich mich zum Üben auf Overthewire austoben und auf Hackerone an Bug Bounty Programmen versuchen. Happy Hacking!