Einstieg in CTFs "Basic Pentesting: 1 Vulnhub" für Anfänger #1 Basic Exploitation
Wie angekündigt meine ersten versuche ein CTF zu lösen.
Wer das ganze nachvollziehen will findet die VM zum Download auf Vulnhub.
Das eigentliche Writeup beginnt ab Punkt 3.
1. Allgemeines zu CTFs/Pentesting und zu meiner Person
1.1 Was sind CTFs
Zuerst einmal möchte ich grob erklären was ein überhaupt ein CTF ist und wofür es überhaupt gut sein soll.
Bei einem CTF(Caprute the Flag/Erobere die Flagge) geht es hauptsächlich darum sich in VMs(Virtuelle Maschinen) einzuhacken um eine oder mehrere Flaggen zu finden.
Die Flaggen können auch Hinweise enthalten.
Diese VMs sind meistens Unix Maschinen zumindest habe ich bis jetzt keine Windows CTFs gesehen, korrigiert mich in den Kommentaren falls ich falsch liege.
1.2 Was habe ich bisher getan?
Der ein oder andere fragt sich bestimmt wie einem das alles nun helfen soll.
Nun ja so pauschal lässt sich das leider nicht sagen es gibt schließlich viele Wege um an sein Ziel zu kommen. Für mich zumindest macht dieser am meisten Spaß da der Praxis Bezug da ist.
Ich habe bevor ich mit CTFs angefangen habe viel zum Thema gelesen.
Ich kann zb das Buch "Hacking the Art of Exploitation" empfehlen um eine gewisse Vorstellung zu bekommen wie ein Exploit im inneren funktioniert und wie Netzwerkangriffe durchgeführt werden.
Jedoch konnte ich mit dem Wissen nicht wirklich was anfangen, ich wusste nicht wie. Weil ich natürlich im Rahmen des legalen bleiben wollte habe ich meine eigenen Maschinen(Windows Server) installiert und versucht diese zu knacken.
Leider mit null erfolgt zwar wusste ich zu dem Zeitpunkt aus den Büchern das es eine SMB Lücke in Windows Servern gab MS-08-067 das half mir allerdings nicht besonders weiter. Die genannte Lücke funktioniert nur unter SMB Versionen die in Windows Server 2000/2003 vorhanden sind.
Nach ersten Nmap Scans und stundenlangem googeln ob die Dienste Sicherheitslücken haben kam ich einfach nicht weiter.
So habe ich mit meinem Halbwissen das GUI Armigate gestartet und verzweifelt den Windows Server 2012 R2 mit allen Exploits beschossen die MSF(Metasploitframework) zu Verfügung hatte.
Das Ergebnis Frustration und eine lange Zeit in der ich mich nicht mehr damit beschäftigt habe.
Ab dem Zeitpunkt war es für mich unmöglich die Maschine mit meinem Wissen zu knacken.
1.3 Licht am ende des Tunnels
Nach einer langen Auszeit bin ich schließlich zufällig auf CTFs gestoßen und habe schnell gefallen daran gefunden.
Die CTF VMs sind so konzipiert das auf Ihnen Sicherheitslücken vorhanden sind. Endlich hatte ich etwas womit ich üben konnte ohne aus Frustration abbrechen zu müssen.
Sollte es doch für mich nicht möglich sein gibt etwas zu lösen konnte ich im Netz ein Writeup zu der Maschine suchen so wie dieses hier.
Ich konnte zwar immer noch nicht aktuelle Systeme mit neustem Patchlevel knacken dies ist in der Realität aber auch nicht immer notwendig.
Aus meiner Erfahrung als Sysadmin weis ich das Menschen und besonders Administratoren ziemlich faul sein können oder einfach nicht die Zeit dazu haben sich um alles zu kümmern.
Das Beispiel mit der Windows Server 2003 Lücke, natürlich ist Windows Server 2003 veraltet und nicht mehr supportet. Allen sollte mittlerweile klar sein das es ein hohes Sicherheitsrisiko ist solche Systeme im Einsatz zu haben. Trotzdem kann man solche Systeme noch ab und zu im Einsatz sehen, Gründe dafür sind meist Applikationen die von den Herstellern einfach nicht mehr gepflegt werden oder die Kostenfrage eines Updates auf die neuere Version von Programm XY für die Firmen finanziell nicht in frage kommt.
Aus diesen Gründen ist es auch sinnvoll sich mit Veralteten Sicherheitslücken auseinanderzusetzen.
Es muss auch nicht immer Software sein der 5 Jahre alte Router der hinten im eck vergessen wurde und keine Sicherheitsupdates erhält kann auch zum Ziel werden ;).
2 Vorbereitung für CTFs
2.1 Voraussetzung an die Hardware/Software und die Person
Bevor es weitergeht möchte ich eigne Voraussetzungen aufzählen um selber mit CTFs anfangen zu können.
Natürlich entsprechen diese meiner persönlichen Meinung und müssen nicht auf jeden zutreffen.
Diese helfen allerdings das beschriebene besser zu verstehen.
Welches knowhow brauchst du?
- Meiner Meinung nach sind UNIX Grundkenntnisse unverzichtbar.
Zu einnem wird dein Werkzeug eine Linuxdistribution deiner Wahl sein zum anderen sind die VMs die du angreifen wirst Unix Maschinen.
Du kannst die entsprechenden Tools auch unter Windows Installieren jedoch ist es viel einfacher das ganze unter Unix/Linux Umgebungen zu tun. - Programmierkennsinne sind auch von voreilt es muss keine bestimme Sprache sein die man können muss jedoch solltest du schon mal ein wenig Programmiert haben um zb. später selbst Exploits schreiben zu können.
- Sich selbst nicht überschätzen zu lernen.
Es wird immer jemanden geben der mehr l33t ist als du.
Es ist ok wenn man mal nicht weiter weis und jemanden um Hilfe fragt.
Zudem gibt es viele verschiedene Bereiche und es geht darum seinen für sich selbst zu finden (Reverse Engeniering, Web Exploitation, Forensic, Social Engeniering ...). - Ein wenig Administration, es ist kein muss in der Administration vorher gearbeitet zu haben aber es hilft.
Wenn du weißt wie man etwas zusammensetzt kannst du es schließlich wieder in seine Bestandteile auseinandernehmen. - Viel Ehrgeiz es wird oft vorkommen das du selbst scheiterst oder nicht weiterkommst, ich schließe mich da selbst nicht aus. Mit dem willen voran zu kommen und neues lernen zu wollen kommt man jedoch immer ans Ziel der eine schneller der andere langsamer jeder hat sein eigenes Tempo.
Was brauchst du an Hardware?
- Eine halbwegs potente CPU wäre von vorteil Minimum ein I5 oder vergleichbarer AMD sollte es tun.
Der Grund ist weil du deine Testsysteme virtualisierst.
Es macht sicherlich keinen Spaß wenn du Sekundenlang auf deine Tastatureingaben warten musst. - RAM 8 GB sollten reichen besser währen aber 16GB. Es wird auch mit etwas weniger RAM laufen aber nicht so flüssig.
- Mindestens 500 GB an Festplattenspeicher währen gut du kommst auch mit weniger aus die VMs haben in der Regel ca. 2-8GB an Größe jedoch kann sich da so einiges ansammeln.
- Optimal eine schnelle GPU, nein nicht zum zocken von Watch Dogs 2.
Es kann vorkommen das man Passwort hashes(Verschlüsselte Passwörter) findet. Diese können dann mit tools wie Hashcat oder John geknackt werden. Das ganze funktioniert natürlich auch mit der CPU ist jedoch mit der GPU um ein vielfaches schneller.
Was für Software brauchst du?
- Als erstes eine Virtualisierungsumgebung zb. (VMWare Player, Virtual Box).
Es geht auch jede andere Virtualieserungsumgebung. Die VMs sind jedoch meist mit den zwei oben genannten getestet. - Eine Pentesting Distro, dein Werkzeug als Pentester. Die bekannteste ist Kali Linux welche auch ich nutze, hier ist eine liste an benkannten Pentesting Distros.
Es ist natürlich jedem selbst überlassen welche er benutzt für Anfänger würde ich Kali Linux empfehlen da dort das meiste schon vorinstalliert ist.
Es ist natürlich auch möglich sich selbst eine Pentesting Distro zu basteln indem man die Tools die man braucht in eine vorhandene Distro hinein installiert.
Wenn du es besonders schwer haben möchten kannst du auch Archlinux verwenden. - Eine CTF VM, ich beziehe meine derzeit aus VulnHub. Es gibt sicherlich noch viele weitere Quellen.
Fürs erste reicht aber Vulnhub.
2.2 Wie setzte ich die Bausteine nun zusammen?
Je nachdem für was du dich entschieden hast gibt es verschiedene Möglichkeiten in meinem Beispiel verwende ich Kali Linux und VM Ware Player.
- Download von
Kali (um Zeit zu sparen verwende kannst du eine vorinstallierte .ova(Virtuelle Festplatte von VMWare) verwenden) und VM-Ware - Installation von VM-Ware Player
- Import der .ova in WM-Ware, ein öffnen der .ova mit VM-Ware startet den Import vorgang
- Netzwerkkonfiguration, du solltest unbedingt darauf achten das VW-Ware auf Host Only konfiguriert ist damit die VM von Vulngub nicht ins Internet kann. Man weiß nie was die Maschine alles beinhaltet sicher ist sicher.
- Update von Kali Linux
Für das Update solltest du kurzzeitig die Netzwerkkonfiguration auf NAT stellen.
Wenn Kali gestartet ist kannst du dich mit Benutzer root Passwort toor einloggen.
Als nächstes solltest du das Keyboardlayout wechseln.
1. Alle Programme anzeigen
2.Region and Language auswählen German Hinzufügen
3. Über die Taskleiste lässt sich nun de auswählen.
Danach öffnest du das Terminal und gibst den Befehl "apt-get update" und "apt-get upgrade" ein.
Das war‘s jetzt kannst du schon loslegen :).
3. Writeup Basic Pentesting: 1 Vulnhub
Kommen wir nun zum eigentlichen Teil zum lösen des CTFs.
Wobei ich mich hier etwas korrigieren muss es ist eigentlich ein BoottoRoot da keine Flags vorhanden sind.
Bei einem BoottoRoot geht es darum root rechte zu erlangen. Bei CTFs kann es sein das mehrere Flags vorhanden sind man also an mehreren stellen suchen muss.
3.1 Was ist auf dem Radar zu sehen?
Im ersten schritt geht es darum so viel Informationen wie nur möglich über das System zu sammeln.
Ein guter Anfang ist es die IP des Servers herauszufinden. Auf Vulnhub sieht man ob man bei der Netzwerkkonfiguration etwas beachten muss. In diesem Fall ist das Netzwerkinterface auf DHCP konfiguriert.
Mit einem kurzen ARP-Scan findet man die IP der Servers heraus. (arp-scan Subnetz)
Da ich weis das 10.0.0.1 mein Gateway ist, also wird 10.0.0.105 unser Ziel sein.
Nun wollen wir wissen was auf dem Server für Dienste laufen. Nmap hilft uns dabei.
Per nmap -sSV [IP] wird ein TCP SYN Scan der ersten 1000 Ports mit anschließender Versionserkennung durchgeführt.
Wie du sehen kannst sind 3 Dienste auf dem Server aktiv 21 FTP, 22 SSH, 80 HTTP.
Damit ist der erste schritt getan nun werden wir die Dienste auf mögliche angriffe testen.
3.2 FTP Exploitation
Per FTP können daten im Internet oder lokalem Netzwerk ausgetauscht werden.
FTP Dieste können so konfiguriert sein das man ohne Login zugriff auf die Daten hat (Anoymouse login).
Was für einen Benutzernamen du für den FTP Anonymouse login brauchst hängt von der Serverkonfiguration ab. Ich habe anonymouse und ftp probiert. Im ersten Moment sieht es auch so aus als hätte man Erfolg jedoch stimmt anscheinend noch etwas mit der Serverkonfiguration nicht und der login kommt nicht zustande.
In unserem Nmap scan haben wir herausgefunden das es sich um Proftpd 1.3.3c handelt eventuell ist eine Lücke in dieser Version vorhanden.
Dies lässt sich über eine kurze google suche oder eine suche per Searchploid herausfinden.
Jackpot !
Das Wort remote im Pfad bedeutet das dieser Exploit von außerhalb also remote anwendbar ist. Sprich das dieser über das Netzwerk funktioniert. Local Exploits lassen sie zb. nur auf der Maschine selbst ausführen.
Wir könnten nun über die .txt Datei nähere Informationen zum Exploit herausfinden und diesen selbst Kompilieren und ausführen da es sich um Source Code handelt.
Es geht aber viel einfacher über Metaspiot "16821.rb" ist ein Metasploitmodul.
Was genau Metasploit ist überlasse ich an dieser Stelle dir.
Kurz gesagt ist es ein Framework auf Exploit Modulen aufbaut und sehr viele umfangreiche Funktionen beinhaltet.
Zuerst startest du MSF(MetasploitFramework) per mfsconsole, danach wird das Modul per search proftpd gesucht.
Jetzt lädst du das Modul mit use exploit/unix/ftp... . Mit show options werden die notwendigen Einstellungen des Exploitmoduls angezeigt, in diesem Fall benötigen wir nur die rhost option die für remote host steht also unser Server. Die Option kann mit set rhost gesetzt werden.
Jetzt folgt der Spaßige teil, das exploit Kommando.
Ab dem Zeitpunkt macht Metaploit alles automatisch, der exploit öffnet eine Command Shell mit der wir als ROOT eingeloggt sind.
An dieser stelle haben wir die BoottoRoot Challenge geschafft 👍.
Es gibt jedoch noch mehr Wege um an rootrechte zu kommen. Diese folgen später in weiteren Posts.
4 Fazit
Ich hoffe der ein oder andere konnte etwas mit diesem Post anfange.
Das Beispiel des FTP Servers zeigt gut auf das die Netzwerksicherheit immer nur so stark ist wie sein schwächstes Glied. In einem realen Szenario könnte man zb. nun über den geknackten Server andere Systeme infizieren oder sämtliche Passwörter des Systems auslesen um an mehr Informationen zu kommen.
In diesem Fall könnten auch Personen mit wenig Erfahrung ein Firemnetzwerk korrumpieren.
Hinterlasst doch einen Kommentar ich freue mich über Feedback jeder art.
Wem das alles noch zu lasch war der kann sich auf die nächsten Posts freuen.
Grüße it5ky