Offensive Security Certified Professional OSCP Tipps

Offensive Security (https://www.offensive-security.com/) bietet verschiedene Off- und Onlineausbildungen an. Eine davon ist der «Offensive Security Certified Professional» (OSCP).

Wer sich im Bereich Ethical Hacking weiterbilden will, findet in dieser Ausbildung eine grossartige Spielwiese, wird aber auch eine steile Lernkurve bewältigen. Die Ausbildung umfasst ein moderat langes Script zur Einführung. Der eigentliche Kern dieser Weiterbildung besteht allerdings aus einem via VPN erreichbaren Netzwerk, das nur so wimmelt von verwundbaren Hosts. Dort kann man sich wochenlang und ganz legal austoben. Für die Schlussprüfung erhält man ein neues Netzwerk zugewiesen mit fünf verwundbaren Hosts. Man hat 24 Stunden Zeit, um genügend Punkte zu sammeln.

Weg des geringsten Widerstandes

Die einfachsten Hosts sollten zuerst geknackt werden. Wenn Du irgendwo nicht weiter kommst, dann gehe bald (nach vielleicht 30-60 Minuten) zum nächsten Host.  Es bringt nichts, stundenlang gegen eine Mauer zu rennen. Es gibt auch Hosts, die ohne weitere Informationen aus anderen Zielen gar nicht kompromittiert werden können.

Hilfreich ist auch das Forum. Für einen Host gibt es sogar eine offizielle Komplettlösung.

Simple Methodik entwickeln

Ich habe zur Dokumentation Keepnote verwendet und kann es weiterempfehlen. Findings und Ideen können dort gut organisiert abgelegt werden. Zudem habe ich für jeden Host in einem separaten lokalen Verzeichnis gearbeitet und in der Regel die Outputs von Tools immer auch in eine Datei geschickt. Dafür ist «tee» bestens geeignet (z.B. map 10.10.10.10 | tee nmap.txt).  Ich hatte eine KLEINE, nach Priorität sortierte Liste von «Default-Ideen». Diese hat z.B. angefangen mit einem Portscan, irgendwo in der Mitte kamen nikto und Directory/File brute force auf http Diensten und als letzte verzweifelte Option ein Brute-Force Angriff auf irgendwelche Logins. Wann auch immer man mit frischer Information aus Tools versorgt wird, muss diese Information ausgewertet werden, bevor man fortfährt. Findet man z.B. den Namen und die Versionsnummer eines Dienstes, dann benutzt man eine Suchmaschine, um nach Exploits und interessanten Dingen wie Default-Passwörtern Ausschau zu halten. Da man nicht alle Dinge gleichzeitig tun kann, habe ich eine ebenfalls priorisierte TODO-Liste geführt. Diese ist am Anfang leer. Habe ich eine Idee oder noch unverarbeitete Information, platziere ich dies auf der TODO-Liste. Und zwar je weiter oben, je besser ich die Idee oder Information finde. Diese TODO Liste finde ich wichtig. Ansonsten kann es gut sein, dass man genau das kleine, aber zentrale Stück Information letztlich wieder vergisst.

Im Nachhinein würde ich nur noch eine TODO Liste führen, die am Anfang einfach ein paar Standardideen enthält und danach nach Erfolgsaussicht sortiert ständig aktualisiert wird.

Für diverse Standardprobleme wie «nicht-interaktives FTP»  oder «Reverse Python Shell» hatte ich einen Spickzettel. Heute brauche ich das kaum noch. Nicht, dass ich eine Python Shell auswendig hinschreiben könnte, aber Suchmaschinen gehören zu meinen Freunden. Bei Copy Paste ist aber immer etwas Vorsicht angebracht.

Eure eigene Methodik könnt Ihr an jedem Übungshost weiter verfeinern. Ihr werdet sicherlich feststellen, dass sich ein einigermassen systematisches Vorgehen lohnt und man dadurch immer schneller wird.

Brute Force

Lohnt sich für Verzeichnis- und Dateisuche auf Webservern definitiv und muss auf jedem http-Dienst früher oder später erfolgen. Ich habe jeweils dirb verwendet, aber andere Tools tun es auch. Als wordlist nahm ich jeweils common.txt und in der Verzweiflung auch big.txt aus /usr/share/seclists/Discovery/Web_Content/ im Kali Image von Offensive Security (hier sonst auf github). So weit ich mich erinnere, hat sich big.txt im Vergleich zu common.txt nie gelohnt, dies im Unterschied zu echten Pentests. Dieses Bild zieht sich durch das ganze Lab: Extensive Brute Force Angriffe sind nicht notwendig.

Das Cracken von Hashes mit ophcrack und hashcat macht Spass und sollte mal probiert werden. Ich denke jedoch, dass Ihr den Hash meist nicht cracken müsst, wenn crackstation.net ihn nicht kennt. Während der Prüfung wäre Hashcat jedenfalls sehr weit unten auf meiner TODO-Liste. Wenn Brute-Force notwendig ist, dann mit einer durchschnittlich langen Wörterliste oder mit einer kürzeren Liste von «educated guesses».

Prüfung

Ich war zu faul, einen Lab-Report einzureichen. Dies kann zusätzlich Punkte geben, wenn das Prüfungsresultat knapp ist. Ich hätte jedoch mehr Spass gehabt an einer zweiten Prüfung als an einem längeren Report. Der Prüfungs-Report hingegen ist obligatorisch.

Man findet gelegentlich Empfehlungen, wonach man Exploits vorkompilieren soll. Das ist nicht notwendig. Erstens müsstet ihr dann mehrere Versionen für jeden Exploit kompilieren. Und ihr bräuchtet einigermassen einen Durchblick, was und wofür dieser Exploit gut ist. An der Prüfung wird kaum ein Exploit benötigt, der mühsam zu kompilieren wäre (wie z.B. einige Exploits mit Windows-spezifischen Referenzen).

Manchmal wird auch empfohlen, so viel wie möglich zu scripten. Nichts gegen nette Scripts. Aber auch die braucht ihr nicht. Es gibt bereits genügend Scripts und die produzieren bereits genügend Output. Ein Script zu schreiben, das noch schneller noch mehr Output generiert, spart Euch kaum Zeit. Die meiste Zeit investiert man ohnehin in die Interpretation von Outputs. Ein Script, welches Euch die paar wenigen notwendigen Eingaben abnimmt, bringt kaum Zeitersparnisse. Solche Scripts sind aber fehleranfällig. Wenn Euer Script stur enum4linux auf Port 445 schiesst, dort aber ausnahmsweise ein Webserver läuft, oder es einen extensiven Brute-Force Angriff auf ein http-Login startet, obwohl das Passwort gross und deutlich in der index.html steht, dann habt ihr nichts gewonnen. Macht mal einen kleinen Portscan. Dann noch einen Portscan über alle TCP und UDP Ports. Und dann pastet alle Services auf Eure TODO Liste und priorisiert deren Untersuchung.

Die beste Prüfungsvorbereitung sind die Hosts im Lab. Verfeinert dort Eure eigene Methodik. Macht die Aufgaben aus dem Script. Wenn ihr ca. 2/3 der Maschinen im ersten Netzwerk erledigt habt, dann sollte es mit der Prüfung klappen.

Viel Spass und viel Erfolg!