Über Schwachstellen und Fehler
Vorab
Wer sollte diesen Artikel lesen?
Jeder, der vorhat, die Prüfung zum "OffSec Exploitation Expert (OSEE)" abzulegen
Jeder, der leidensfähig ist und über seine Grenzen hinauswachsen will
Wenn euch einige der folgenden Ausführungen übertrieben vorkommen, liegt das sicher an den Emotionen, die diese Prüfung auslösen kann. Eines ist jedoch ganz sicher nicht übertrieben, nämlich der gesamte Aufwand, der zum Bestehen dieser Prüfung erforderlich ist.
Dieser Artikel ist verfügbar
Lange Geschichte, kurz und bündig erzählt...
Die Kurswoche selbst ist der pure Spaß! Es ist ganz großes Kino, Morten Schenk (blomster81) und Alexandru Uifalvi (sickness) als Trainer zu erleben. Und gemeinsam mit einem Haufen Gleichgesinnter (sagte ich Irrer?) aus aller Herren Länder die verrücktesten Exploits zu entwickeln...
Die Prüfungsvorbereitung ist hart. Die bereitgestellten Kursmaterialien erklären alle Konzepte im Detail. Wesentliche Debugger-Befehle und Speicherauszüge sind gut dokumentiert. Dennoch ist das Kursmaterial kein Silbertablett, es gibt Lücken, und Leistungstransfers sind erforderlich. Es ist unabdingbar, sich die Exploits selbst zu erarbeiten, jeden einzelnen Debugging-Schritt nachzuvollziehen und auch die Extra-Meilen zu gehen. Die ganze Sache hat mich etwa sechs Monate gekostet, berufsbegleitend: lange Abende und entbehrungsreiche Wochenenden. Kombiniert mit unzähligen Situationen, in denen ich feststeckte, Dinge ausprobieren und experimentieren musste. Die Belohnung waren jedoch unzählige Aha-Momente...
Die Prüfung fühlte sich dann an wie ein Auffahrunfall. Zwei Exploits auf diesem extrem hohen Niveau in nur 72 Stunden zu implementieren, ist wirklich schwierig. Ich musste zweimal ran, und habe es erst drei Monate später erfolgreich geschafft. Manche brauchen noch mehr Anläufe...
Das Gefühl danach, endlich bestanden zu haben, ist unbeschreiblich! Man kann es nicht in Worte fassen. Hochgefühl, Begeisterung, an der Grenze zum Wahnsinn...
Kann ich den Kurs empfehlen? Auf jeden Fall! Aber nur mit einer klitzekleinen Warnung:
Man muss sich schon ein wenig selbst hassen, um diese Schule durchzumachen! Ehrlich gesagt, muss man jede einzelne Zeile Exploit-Code verstehen, hinterfragen, nachstellen und beherrschen. Das gilt für C/C++, Assembler, x64-Shellcode, WinDbg und vor allem für die zahlreichen Absturzsituationen, die immer wieder auftreten. Keiner der im Kurs behandelten Exploits ist Vanilla! Es gibt unzählige Hürden, Fehler, Umwege, aber auch Tricks, Ideen und Rezepte. Am Ende eine Reverse Shell zu bekommen... Eine Rechteausweitung mit NT AUTHORITY\SYSTEM... Aus diesem Lernprozess heil herauszukommen, die Themen zu beherrschen und anwenden zu können, das ist immens erfüllend und befriedigend... Das ist gefühlt olympisches Gold! Und das meine ich nicht überheblich, sondern rein emotional.
Ich habe noch nie einen Kurs mit einer solchen Fülle an Ideen erlebt. Kein vergleichbarer Kurs, der so viele kreative Lösungen auf diesem Niveau zeigt und lehrt. Morten und Alex erklären alle aktuellen Sicherheitsmaßnahmen, die Microsoft in den Kernel eingebaut hat, die Intel in die CPUs eingebaut hat, und zeigen gleichzeitig Ideen für Umgehungen. Am Ende sind die Teilnehmer in der Lage, einen voll funktionsfähigen Exploit auf Basis einer einfachen Schwachstellenbeschreibung zu schreiben, der auf einer aktuellen Windows-Installation läuft. Krasser Scheiß! Sorry, das so explizit sagen zu müssen...
Der Kurs "EXP-401: Advanced Windows Exploitation" ist das Flaggschiff von Offensive Security. Auf der Website schreibt OffSec: "Dies ist der schwierigste Kurs, den wir anbieten, und er erfordert eine erhebliche Zeitinvestition. Die Kursteilnehmer müssen sich verpflichten, jeden Abend Fallstudien zu lesen und das bereitgestellte Lesematerial durchzuarbeiten. .... Der OSEE ist die schwierigste Exploit-Zertifizierung, die man erwerben kann."
Mehr gibt es nicht zu sagen... Ich kann jedes einzelne Wort unterschreiben.
Offsec, Morten, Alex: Hut ab! Dies ist ein unglaublich gut gemachter Kurs und eine intelligent konzipierte Prüfung. Die Aufgaben sind wirklich hart und unter dem gegebenen Zeitdruck schwer zu bewältigen.
Man fragt sich, ob Scheitern Teil der Prüfung ist...
Auf jeden Fall habe ich einen Heiden-Respekt vor jedem, der OSEE-zertifiziert ist!
Über mich
Manu Carus. Mehr gibt es nicht zu sagen.
Die Reise
Vor drei Jahren habe ich mich mit meinem Hacker-Bro Emre Bastuz auf die Reise begeben. Unser Ziel war das Triple: OSCP, OSCE, OSEE. Das komplette Pentester-Programm mit abschließende Krönungszeremonie: die Black Hat in Vegas als kleine Belohnung. Wir wollten das Beste aus uns herausholen und sehen, wie weit wir am Ende kommen würden. Wobei sich der OSEE als ernstzunehmender Gegner entpuppte...
Wir empfanden Paul Jerimys Security Certification Roadmap besonders motivierend:
Das Ziel war, ganz oben rechts anzukommen! An der Speerspitze schnuppern...
Ich habe keine Ahnung, wie objektiv die o.a. Abbildung ist. Ich selbst bin "Official ISC2 CISSP Training Instructor" und glaube, dass ich einen guten Überblick über den Zertifikatsmarkt habe. Ich würde den CISSP vom Schwierigkeitsgrad her zwischen "oberes Ende von Intermediate" und "unteres Ende von Expert" einstufen. Das Gleiche gilt für den OSCP, wobei ich den OSCE als Expert einstufen würde und der OSEE weit darüber hinausgeht.
Ich bin mir auch nicht ganz sicher, wie viele Nerds da draußen OSEE-zertifiziert sind. OffSec schweigt sich dazu aus. Und eine LinkedIn-Suche zeigt nur ein paar hundert Treffer. Aber eines ist sicher: Die Luft da oben auf der rechten Seite ist ziemlich dünn, und nachdem OSEE kommt nichts mehr. Zumindest in meiner bescheidenen Ansicht...
Also, los geht's...
Der OSEE hingegen war ein ganz anderes Kaliber...
Für uns war von vornherein klar: So etwas macht man nicht nebenbei. Man braucht ein sorgfältig geplantes Zeitfenster, in dem es beruflich nicht zu wild einher geht. So sind wir das dann auch angegangen: Kurs geplant, Projekte drum herum organisiert, und gebucht.
Aber am Ende hat sich alles ganz anders entwickelt. Pandemie. Keine Präsenzschulungen mehr. Aufgeschoben für mindestens ein Jahr. COVID-19 hat uns einen Strich durch die Rechnung gemacht. Das heißt, wir mussten warten...
Im September 2022 war es dann endlich so weit: Emre und ich reisen nach London. 5 Tage Kurswoche. Hotelzimmer in der Nähe des Towers, großartig!!!
Die Kurswoche
Wir haben uns beide sehr auf das Präsenztraining gefreut. Aber eine Woche vorher bekamen wir dann die Nachricht: 4 Tage Training, nicht 5 Tage. Das Training beginnt erst am Dienstag.
Queen Elizabeth hat beschlossen, sich von der Welt zu verabschieden. Deshalb wurde der Montag, der Tag ihrer Beerdigung, zum Feiertag erklärt. Und in ganz England, vor allem in London, wurden entsprechende Ehrenzeremonien abgehalten.
Für uns bedeutete das, dass der Montag als Kurstag gestrichen wurde und die Kurswoche von 5 Tagen auf Dienstag bis Freitag, also insgesamt nur 4 Tage geschrumpft ist. Mehr Input in weniger Zeit. Die Woche wird also noch härter werden. Na dann...
Wir haben den Feiertag in London genossen, sind zum Hyde Park gelaufen und haben die Zeremonie besucht.
Das war schon beeindruckend, respektvoll und feierlich. Sehr bewegend zu erleben, wie Land und Volk sich von der Queen verabschiedeten.
Dann der Dienstag. Wir hatten ein gutes englisches Frühstück, sind zu Fuß zu QA rüber, dem Veranstalter, und dann voll aufgeregt in den Klassenraum.
Die erste Folie gibt dann auch den Ton an. Morten und Alex stimmen uns auf die Kurswoche ein:
der 1. Tag wird anstrengend
der 2. Tag heftig
der 3. Tag abgedreht
der 4. Tag INSANE!
So in etwa...
Am ersten Tag also starten wir 64-bit-Shellcode im Schnelldurchgang. Keine Zeit zu verlieren. Reverse Shell in zwei Stunden. Das muss man einfach drauf haben, mehr Zeit gibt's für das Thema nicht. OK...
Dann ist es Zeit für den ersten Exploit: VMware Workstation Guest-to-Host Escape. Den Windows Heap Manager verstehen, Heap Spraying implementieren, Function Pointer überschreiben, ROP Chains bauen und eine Vielzahl von Hindernissen überwinden. DEP, ASLR und ROP sind hier weniger ein Problem, aber CFG, WDEG und EAF sind echte Unholde. Morten und Alex verlangen bei jedem Exploit das berühmte i-Tüpfelchen: Die Reverse Shell soll auch dann gut funktionieren, wenn die VMware-Tools nicht auf der Guest VM installiert sind. Wir müssen also die Low-Level-Kommunikation von VMware zwischen Guest und Host verstehen und nachbilden. Lesen von Linux C/C++ Source Codes, Reverse-Engineering von Windows Binaries. Ah ja... Ich sitze mit 20 anderen Teilnehmern im Schulungsraum, höre interessiert zu, baue die Exploits nach, und irgendwie halte ich Schritt...
Übrigens verrate ich hier keine Geheimnisse über den Kurs, OffSec hat die Course Syllabus veröffentlicht.
Am zweiten Tag werden wir uns mit Edge und Chakra beschäftigen. Konstruktion von Type Confusions, Implementierung von Read-/Write Primitives. Umgehung von CFG, CET und ACG. Vor allem aber: Out-of-Context arbeiten und in die Tiefen der Windows-internen RPC-Kommunikation eintauchen. COM lässt grüßen... Abgerundet wird das Ganze durch einen Sandbox-Escape, der benötigt wird, um am Ende eine Reverse Shell auszuführen. Krasse Exploits! Am frühen Nachmittag (wie gesagt, wir reden hier über den zweiten Kurstag) kommen mir leichte Zweifel, ob ich der gesamten Kurswoche gewachsen bin, aber ich bleibe konzentriert. Motivation ist alles. Am Ende des Moduls kommt nochmal das Sahnehäubchen oben drauf: Der Exploit soll versionsunabhängig sein, d.h. er muss auf verschiedenen Edge-Versionen laufen... Nicht schlecht... Dann bauen wir den Code halt nochmal um...
Morten und Alex haben für die Abende ein paar Extra-Meilen in den Kurs eingebaut. Wer diese Aufgaben bis zum nächsten Trainingstag löst, kann ein paar OffSec-Swags gewinnen. Emre und ich beschließen, dass uns der Schlaf heilig ist (wir kommen in die Jahre!), also ziehen wir es vor, abends in einen Pub zu gehen, Burger, Pommes und Ale zu bestellen und die Kneipenatmosphäre nach Feierabend zu genießen, in Maßen natürlich... Um ehrlich zu sein, sind wir nach jedem einzelnen Trainingstag am Abend wirklich erschöpft...
Der dritte Tag verlässt Ring 3 und bahnt sich seinen Weg in den Kernel. Ziel ist es, eine Schwachstelle in einem Kernel-Treiber auszunutzen und die Kontrolle über Ring 0 zu erlangen. Interessanterweise ist der anfällige Treiber Teil eines bekannten Sicherheitsprodukts... Sollte uns das nicht eher schützen, als neue Angriffsflächen zu eröffnen? Wir lernen Kernel-Debugging, Treiberkommunikation, Token Stealing und vieles mehr. Wir müssen uns mit SMEP, Paging, Meltdown und anderen Techniken herum schlagen. Obwohl ich im Vorfeld viel über diese Themen gelesen habe, hatte ich überhaupt keine Übung im Kernel. DEP, ASLR, ROP, kein Problem. Aber Kernel-Exploits? Vielleicht hätte ich den HackSys Extreme Vulnerable Driver (HEVD) vor dem Kurs knacken sollen, dann wäre ich an Tag 3 nicht ganz so verloren. Ich nehme es mit Humor und ändere meine Strategie. Anstatt zu versuchen, mitzuhalten und dann zurückzufallen, schalte ich in den Zuschauermodus und beginne, meine Zeit vor Ort einfach zu genießen: zuhören, sich konzentrieren, Notizen machen, verstehen und so viel wie möglich aufnehmen. Am Ende habe ich einfach eine gute Zeit... Oh, und in diesem Modul gibt es natürlich wieder das berühmte Sahnehäubchen am Ende: Der Kernel-Exploit muss ebenfalls versionsunabhängig programmiert werden...
Der vierte Tag, Freitag, ist dann knallhart. Eine Sicherheitslücke in der Native Windows API soll ausgenutzt werden. Alex erklärt, wie das Betriebssystem Windows-Objekte intern verwaltet. Und da Microsoft diesen Teil aus gutem Grund nicht dokumentiert hat, muss gefühlt der halbe Windows-Kernel reverse-engineered werden. Völlig abgedreht! Wahnwitz! Mir wird plötzlich klar, dass Alex den Exploit, an dem wir hier arbeiten, selbst entwickelt hat. Dass wir in dieser Kurswoche live erleben, wie man einen solchen Exploit schreibt, an welche Grenzen man stößt und was für heftige Hürden zu überwinden sind. Das war übrigens in den Tagen zuvor nicht anders: Die bisher vorgestellten Exploits wurden von Morten geschrieben, und auch hier konnten wir den gesamten Entwicklungsprozess eines Exploits live mitverfolgen, von der Wiege bis zur Bahre. Heftig... Diese Jungs sind nicht nur Trainer. Sie sind die Autoren der Exploits. Und wissen genau, was sie hier tun...
Wie ich schon sagte, der vierte Tag ist wirklich arg. Aber es hilft nichts: "Try harder" ist die Devise... Egal, welche Probleme es zu überwinden gilt: Am Ende zählt nur das Ergebnis. Privilege Escalation und ein stabiler Kernel. Und das kann man nur durch Beharrlichkeit erreichen! Ich werde hier nicht ins Detail gehen. Ich erinnere mich nur daran, wie ich den Kopf schüttele und mit offenem Mund nach vorne starre und versuchte, auch nur halbwegs zu verstehen, was hier vor sich geht... und wo ich überhaupt gerade bin... und wieviele...
Am Ende kann ich den Exploit auf meinem Computer nachstellen und habe auch das meiste verstanden. Aber das Ganze hier ohne Stützräder selbst entwickeln? Au weia...
Natürlich hören Morten und Alex hier nicht auf. Nein, der Exploit muss unter Low Integrity laufen, was bedeutet: mehr Probleme, mehr Kopfschmerzen, mehr Verzweiflung, mehr Ausdauer. Und dann kommen noch die Extra-Meilen...
Was ich wirklich bemerkenswert finde, ist, dass beide Trainer am Ende des Kurses einen Ausblick geben. Welche Sicherheitsmitigationen bauen Microsoft und Intel derzeit in ihre Produkte ein? Was bedeutet das für die Exploits, die wir gerade entwickelt haben? Wie können wir die neuesten Sicherheitsvorkehrungen umgehen, die vor kurzem auf den Markt gekommen sind (und wahrscheinlich erst in einigen Jahren in der Fläche wirksam werden)? Und während wir uns diese Fragen stellen, entwickeln die beiden bereits die ersten Prototypen. Wir erleben einen Blick in die Zukunft. Keine Theorie. Praxis. Wie kann ich diese neuesten Abwehrtechniken in Software und Hardware umgehen? Das nenne ich mal einen Kurs!!! So etwas habe ich da draußen noch nicht gesehen... Man hat den Eindruck, dass das Wissen, das man hier erwirbt, einen für die nächsten fünf bis zehn Jahre in eine verdammt gute Position bringt! Wenn sich die Welt nur nicht so schnell drehen würde...
Emre und ich reisen begeistert ab, nicht ohne uns vorher noch einmal mit Pub Food und Ale für die erfolgreiche Woche zu belohnen...
Wir haben den Eindruck, dass keiner der in dieser Woche vorgestellten Exploits trivial ist. Man muss schon richtige Kapriolen schlagen. Wer hier aufgibt, ist fehl am Platz. Man braucht echte Resilienz, absolute Entschlossenheit, Ausdauer und Beharrlichkeit. Mit anderen Worten: Wenn etwas auf Anhieb nicht klappt, muss das erst recht Motivation genug sein, um weiterzumachen. Aufgeben kommt nicht in Frage, es gibt immer eine Lösung. Die Frage ist nur: Wie viel Mühe bist du bereit zu investieren? Wir sind erst am Ziel, wenn wir NT-AUTHORITY\SYSTEM sind :-)
Die Prüfungsvorbereitung
Ich habe etwa 6 Monate gebraucht, um mich auf die Prüfung vorzubereiten, natürlich berufsbegleitend. Manchmal konnte ich ganze Tage darauf verwenden, manchmal das ganze Wochenende, aber oft war es nur Stückwerk. Ich bin selbständig, und der Kunde hat Vorrang, immer...
Ich habe dann die Kursunterlagen Seite für Seite, Zeile für Zeile durchgearbeitet und jede einzelne Aussage darin überprüft und hinterfragt. Reverse-Engineering in IDA, x64-Assembler in WinDbg, Quellcodes in C/C++, JavaScript und Python. Ich fand es schwierig, schnell voranzukommen, denn wie sich herausstellte, ist das Kursmaterial zwar sehr gut, aber es wird nichts auf dem Silbertablett präsentiert. Vielmehr zeigen die Materialien zwar konzeptionell, wie der jeweilige Exploit funktioniert, aber man muss sich einige Lücken im Text selbst erarbeiten, wenn man die Exploits live auf seinem Testrechner ausführen will.
Nun gibt es sicherlich Leute, die hier schneller vorankommen als ich. Ich bin ein Mensch, der sich jedes Thema mit der Hand an der Tastatur erarbeiten muss. Lesen hilft nur bedingt, ich brauche praktische Erfahrung, und so neige ich dazu, so ziemlich jeden Fehler zu machen, den man sich vorstellen kann. Wenn also im Kurstext steht: "hasItem() is the 22nd method of the DataView object", dann kann man das akzeptieren. Wer aber so tickt wie ich, schreibt ein Skript, das diese Aussage zu bestätigen versucht. Diese zusätzlichen Schritte kosten Zeit und verlangsamen die Vorbereitung. Aber am Ende weiß ich halt ganz genau, warum die Dinge so sind, wie sie sind.
Meiner Meinung nach ist es auch absolut notwendig, die im Kurstext aufgeführten Extra-Meilen durchzuarbeiten. Einige sind sehr hilfreich für die Prüfungsvorbereitung, andere sind so wahnwitzig, dass man dankbar darüber hinweg liest... Für manche Extra-Meilen habe ich nur ein paar Stunden gebraucht, an einer anderen habe ich 5 Tage lang herumgekaut. Es ist mir ein Rätsel, wie man diese Extra-Meilen innerhalb der 5-tägigen Kurswoche an einem Abend, quasi in der Nacht nach einem langen, anstrengenden Kurstag, knacken und dann die OffSec-Swags einsacken kann. Für mich: nicht machbar...
Übrigens: Die Folien und die Kursunterlagen ergänzen sich beide sehr gut. Beim nachträglichen Durcharbeiten der Kursunterlagen hat es sich als nützlich erwiesen, die Folien noch einmal zu Rate zu ziehen, ebenso wie meine eigenen Notizen, die ich während der Kurswoche erstellt habe. Die Folien enthalten Aussagen, die auf der Tonspur im Kurs vermittelt wurden, aber in den schriftlichen Unterlagen nicht zu finden sind. Letztere sind tiefgründig und fundiert, aber die Folien führen immer wieder in den Helikoptermodus: Was ist eigentlich das Ziel? Welche Hürden müssen wir überwinden? Wie kommen wir zur Shell?
Am Ende habe ich das ganze Material drei Mal durchgearbeitet!
Das erste Mal, um die Schwachstellen, Exploits und Verfahren Schritt-für-Schritt zu verstehen und nachzuvollziehen. Ein zweites Mal, um jede Anweisung genau zu prüfen und den Code selbst zu schreiben. Ein drittes Mal im Höhenflug, um sich einen Überblick über die Verfahren zu verschaffen, ein Gesamtbild zu erhalten und Strategien zur Umgehung der Sicherheitstechniken aufzuschreiben. Zum Beispiel: Wie umgehe ich CFG? ACG? SMEP? WDEG? EAF? Welche Einschränkungen gibt es bei Low Level Integrity? Und welche Lösungen kann ich dafür aufbieten?
Am Ende hatte ich 1.800 Seiten an Notizen und Auflistungen!
Ich denke, das drückt den Aufwand für die Vorbereitung ganz gut aus... Wie gesagt, die Kursunterlagen selbst, die ausgehändigt werden, haben etwa 650 Druckseiten...
Das Examen
Die Prüfung ist brutal.
Die Aufgabe: Hier sind zwei Sicherheitslücken (CVE-....-...). Hier zwei vulnerable Maschinen. Schreibe voll funktionsfähige Exploits, die alle Sicherheitsvorkehrungen umgehen, die ein modernes Windows-Betriebssystem zu bieten hat.
72 Stunden Zeit, Schlafen und Essen inbegriffen...
Das Problem hier ist mehrdimensional. Zeit, Wissen, Psychologie.
Es ist alleine zeitlich nicht einfach, in diesen 72 Stunden nur zwei der im Kurs behandelten Exploits zu reproduzieren. Nein, OffSec hat hohe Erwartungen an die Prüfungsteilnehmer. Die Wiederholung von etwas Bekanntem, das schon einmal durchgekaut wurde, reicht für eine Zertifizierung nicht aus. Der Prüfungsteilnehmer soll in neue Situationen eingeführt werden, mit neuen Problemen konfrontiert werden, sich durch Unbekanntes arbeiten und unter Zeitdruck Schritt für Schritt eigene Lösungen finden müssen.
Das bedeutet, dass das im Kurs vermittelte Wissen für die Prüfung nicht ausreichend ist. Gefragt ist auch die Fähigkeit, sich in neue Probleme hineinzudenken, kreative Lösungen zu entwickeln und sich diese, so komplex sie auch sein mögen, unter dem gegebenen Zeitdruck zu erarbeiten.
Als ich die beiden Prüfungsaufgaben zum ersten Mal gelesen hatte, dachte ich: Wow... Ich bin zwar ziemlich gut vorbereitet, aber das hier ist... Wow... Das ist eine Herausforderung...
OK, die erste Aufgabe ist hart. Die zweite auch, aber irgendwie habe ich mich mit der zweiten Aufgabe wohler gefühlt, auch wenn sie im Allgemeinen schwieriger zu lösen ist. Also habe ich mich zuerst an Nummer 2 gemacht. Für einen voll funktionsfähigen Exploit habe ich dann ganze zwei Tage und Nächte gebraucht. Ich habe normal geschlafen (na ja, eher 6 als 7 Stunden), regelmäßige Pausen eingelegt (je 45 Minuten Mittag- und Abendessen, eine kurze Kaffeepause und zwischendurch ein bischen frische Luft), aber eigentlich habe ich ziemlich hart gearbeitet und dem Gefühl nach irgendwie nonstop. Von 8 Uhr morgens bis 2 Uhr nachts und dann noch einmal von 8 Uhr morgens bis 2 Uhr nachts.
Am dritten Tag habe ich dann die erste Aufgabe in Angriff genommen. Nach einigen anfänglichen Verständnisschwierigkeiten bin ich dann doch recht weit gekommen. Aber es war wirklich schwer. Bei beiden Aufgaben denkt man, ständig gegen die Wand zu fahren: Problem. Nachdenken. Wie kann ich das Problem lösen? Versuchen, eine Lösung umzusetzen. Nächstes Problem. Nachdenken. Das geht am Stück so weiter. Man hat ständig das Gefühl, es liegen 30 oder mehr Hürden vor einem, und jede Hürde muss irgendwie überwunden werden. Das, was ich im Kurs gelernt hatte, hat mir eine realistische Chance eingeräumt, die Prüfung überhaupt erst anzugehen. Aber eigentlich geht es mit der ersten Prüfungsstunde erst so richtig los! Die Prüfung baut auf allem auf. OffSec verlangt wirklich, dass man über sich hinauswächst.
Am Ende ging mir dann die Zeit aus. Ich hatte die erste Aufgabe bis zur geforderten Mindestpunktzahl fast gelöst, aber halt eben nur fast, und dann wurde die VPN-Verbindung unterbrochen...
Die Prüfung fühlte sich irgendiwe wie ein Unfall an. Ständig gegen die Wand fahren, Hindernisse umfahren, nur um dann wieder gegen die nächste Wand zu fahren. Selbstzweifel: Werde ich es in der verbleibenden Zeit schaffen? Mein Gott, ich weiß, was ich zu tun habe, aber das ist ein ganz schöner Brocken, der hier grad vr mir liegt! Wirklich jetzt? Jeder kleine Fortschritt spornt mich zwar an, und motiviert mich zum Weitermachen, das nächste Problem in Angriff zu nehmen, was dann allerdings wieder ein paar Stunden dauert. Letztlich glaube ich, dass jede Aufgabe so angelegt ist, dass es nur genau einen Lösungsweg gibt. Das Korsett für die richtige Lösung ist so gestrickt, dass man das Gefühl hat, sich in einem sehr engen Korridor zu bewegen, und am Ende muss man ein ganzes Dutzend Techniken anwenden, um ans Ziel zu kommen. Es gibt wahrscheinlich insgesamt mehrere Lösungswege, aber für mich hat es irgendwie anders geschmeckt...
Ich habe dann den Bericht geschrieben und abgeschickt. Ich dachte, ich wäre wirklich kurz vor dem Ziel gewesen, und mir fehlte nur ein kleines Mü. Aber ich habe mich geirrt. OffSec ist da erbarmungslos: "Dear Manu, we are sorry to inform you that you failed to pass the exam..." Kein Wunder, das OSEE-Zertifikat ist die schwierigste Herausforderung, die OffSec seinen Prüfungsteilnehmern stellt. Auf Bonuspunkte, Mitleid oder sonstige Hilfe aus dem Universum kann ich also nicht hoffen. Es zählt nur eines: Packst du es? Oder packst du es nicht? Und wenn nicht: Bist du bereit, mehr einzubringen?
Es nützt nichts.
Noch einmal...
Zwei Monate später, zweiter Versuch.
Ich nutze die Zeit, um mich vorzubereiten, gehe alle Exploits noch einmal durch, schreibe meine Codes ein weiteres Mal. Diesmal gönne ich mir eine Woche Pause vor der Prüfung und beschäftige mich in der Zwischenzeit überhaupt nicht mit dem Thema.
Entsprechend gehe ich es an. Die E-Mail kommt rein, ich verbinde mich mit dem VPN und beginne.
Diesmal mit mehr Selbstvertrauen.
Irgendwie rocke ich das. Auch wenn es wieder furchtbar lange dauert: Dienstag 8 Uhr bis 2 Uhr morgens. Mittwoch 8 Uhr bis 2 Uhr. Donnerstag 8 Uhr bis 6 Uhr. Ja, erst zwei Stunden vor dem Ende der Prüfung habe ich das Gefühl, es gepackt zu haben. Die Aufgaben sind brutal. Um 5:30 Uhr sehe ich von meinem Schreibtisch aus, wie der Zeitungsbote den Stadt-Anzeiger in den Briefkasten wirft. Schnell vergewissere ich mich, ob ich alle Screenshots und Listings, die ich für den Bericht brauche, gesichert habe. Ich beende die Prüfung, trinke einen Guten-Morgen-Kaffee, versuche, aus Ablenkung einen Blick in die Zeitung zu werfen, aber ich bin total leer und erschöpft und kann mich auf rein gar nichts mehr konzentrieren.
Ab ins Bett, schlafen bis mittags.
Dann ist es an der Zeit, den Bericht zu schreiben. Ich habe 450 Seiten Notizen und Listings und muss das Material irgendwie verständlich dokumentieren. Gegen 23 Uhr bin ich fertig. Ich überprüfe die Dateinamen, lade den Bericht hoch und hoffe das Beste.
Nach vier Arbeitstagen erhalte ich dann am frühen Abend eine E-Mail von OffSec mit dem Betreff "Advanced Windows Exploitation - OSEE Certification Challenge Results - OS-xxxxx".
Ich traue mich gar nicht, die Mail zu öffnen. Beim letzten Mal war es wirklich hart zu lesen, dass ich durchgefallen bin. Ich reiße mich zusammen. Öffne die E-Mail. Und lese: "Dear Manu, we are happy to inform you..." Weiter komme ich nicht...
Tanze wie wild durch das Haus! Das Gefühl, das mich dabei überkommt, ist unbeschreiblich!
Was für ein Ritt. Was für eine harte Gangart. Und ich war dabei? Ich kann's kaum glauben...
Danach...
Ich habe diesen Artikel unter dem Titel "Über Schwachstellen und Fehler" geschrieben.
Natürlich geht es beim AWE um Schwachstellen, um CVEs in VMware, Edge, Kernel-Treibern und Native Windows. Und natürlich funktioniert ein Exploit nicht mit dem ersten Proof-of-Concept, dank CFG, ACG, WDEG, SMEP, EAF und anderen Mitigationen.
Aber für mich persönlich ging es bei dem Kurs, der Prüfungsvorbereitung und auch in der Prüfung vor allem darum, zu lernen und meine eigenen Schwächen zu überwinden. Ein müßiger Stolper-Spaziergang, Compiler-Fehler, zu Laufzeit-Fehler, zu Debugger-Crash und BSOD, halt von Misserfolg zu Misserfolg...
Beruflich bin ich "Official ISC2 CISSP Training Instructor" und bringe viele Menschen zu ihrer CISSP-Prüfung. Es klappt nicht bei allen im ersten Versuch. Einige Teilnehmer fallen durch. Nach Monaten der Vorbereitung. Und oft ist das Ergebnis nur ein paar wenige Punkte vom Erfolg entfernt.
All diesen Studenten möchte ich besonders Mut machen. Erstens können auch sogenannte "Experten" nicht alles in einer Sekunde auf Zuruf lösen. Und zweitens: Wenn es darum geht, ein Ziel zu erreichen, sind Zweifeln und Aufgeben keine Option. Aufstehen, schütteln, weitermachen. Anstrengung wird belohnt. Immer!
Als Berater beschäftige ich mich mit der Abwehr von Cyber-Bedrohungen, und mit der Absicherung von Informationssicherheits-Managementsystemen (ISMS) gemäß CISSP und ISO/IEC 27001, habe also nicht täglich mit Windows-Exploits zu tun. Dementsprechend musste ich für den OSEE eine lange Vorbereitungszeit einplanen. Ja, ich habe die Softwareentwicklung unter C/C++ von der Pike auf gelernt, JavaScript und Python fordern mich nicht heraus. Aber die für die Prüfung erforderlichen Pointer Techniken und Typkonvertierungen haben mich Zeit gekostet. Ich musste mich auf neue Herausforderungen einlassen, die mir vorher vollkommen fremd waren. Und für jemanden wie mich, der bestrebt ist, jeden im Kursmaterial behandelten Exploit von Grund auf zu selbst schreiben zu können, war die gesamte Prüfungsvorbereitung ein Feld voller Stolpersteine: Schritt für Schritt programmieren, debuggen, Fehler beseitigen. Umdenken, andere Wege gehen, neu codieren, weitermachen, solange, bis das Ziel erreicht ist.
Was für ein Aufwand...
Die Tiefe, die hier erreicht werden muss, ist unglaublich...
Ich meine, wer debugged schon "ntoskrnl.exe" und analysiert, was Microsoft da im Stillen eingebaut hat? Das Ganze ohne Dokumentation? In den Microsoft Docs gibt es nichts zu finden. Microsoft hat kein Interesse daran, die Interna, die in diesem Kurs behandelt werden, öffentlich zu dokumentieren. Stattdessen verschleiern und verheimlichen sie so viel wie möglich... Und das aus guten Gründen...
Der gesamte Kurs, einschließlich der Prüfung, ist eine absolut erstaunliche Erfahrung.
Ich habe in diesen Monaten nie so viel gelernt. Ja, die Ausbildung ist teuer, aber jeden Cent wert.
Für mich war es ein persönliches Lebensziel, das Triple zu erreichen: OSCP, OSCE und OSEE. Das Maximum aus mir herauszuholen. Zu sehen, wie weit ich komme. Meine Komfortzone zu verlassen. Über mich hinauszuwachsen.
Was für eine Erfahrung!
Wenn ich jetzt zurückblicke und feststelle: Wirklich jetzt? Ich habe diesen krassen Code selbst geschrieben?
Das hätte ich mir vor einem Jahr nicht träumen lassen. Eine Sicherheitslücke zu verstehen, die von Google Project Zero veröffentlicht wurde, und daraus einen voll funktionsfähigen Exploit zu bauen? Das ist ein Ding.
Auf jeden Fall scheint es auf der hellen Seite des Mondes nicht allzu viele Leute dieses Kalibers zu geben... Und das ist etwas, worauf man stolz sein kann!
Meiner Meinung nach gibt es eine Eigenschaft, die extrem wichtig ist, um die Prüfung zu meistern. Und das ist: echte Hartnäckigkeit! Der unbedingte Wille, es irgendwie zu schaffen, komme was wolle. Wer sich ins Boxhorn jagen lässt und die Flinte ins Korn wirft, ist hier an der falschen Adresse.
Wer aber bereit ist, Fehler und Frustration in Kauf zu nehmen, um daran zu wachsen, wird einen unglaublichen Energieschub erleben.
Und so sage ich: Danke, OffSec, für dieses Setup. Ihr macht es einem wirklich nicht leicht!
Hut ab, Morten und Alex, diese Prüfung ist wirklich clever, verdammt nochmal....
Danke, Emre, dass wir diese Reise gemeinsam angetreten haben! Wir sind uns in vielen Bereichen so ähnlich, und du bewegst dich mit einer so unglaublichen Lässigkeit durchs Leben!
Danke vor allem an Nina, meine Frau, die mich über lange Zeit sehr unterstützt hat. Und danke auch an meine Kollegin Gabi, die immer an mich geglaubt hat.
Vegas, wir kommen!
Comments