Heute stelle ich die Plattform HackMyVM.eu vor und möchte euch helfen, die ersten 10 Level des Venus-Labs zu lösen.
HackMyVM.eu ist eine Plattform mit VMs, die ihr euch herunter laden und offline hacken könnt (wie der name der Seite schon vermuten lässt), mit klassischen CTF-Challenges sowie mit zwei online Labs (Venus und Hades).
Das Venus Lab von HackMyVM richtet sich an Einsteiger, die noch nicht all zu viel Erfahrung mit der Linux Konsole haben. Allerdings sind auch ein paar aufgaben dabei, die für einen absoluten Neuling in dem Bereich schon etwas kniffelig sein können.
Damit Ihr euch durch das Lab hacken könnt, müsst Ihr euch erst einen HackMyVM Account erstellen. Das ist völlig kostenlos und Ihr müsst dabei nur eine eMail-Adresse angeben.
Nach der Registrierung öffnet einfache ein Terminal und verbindet euch mit ssh zum Lab. Die Zugangsdaten findet Ihr unter https://hackmyvm.eu/venus/
Level 1
Mission: User sophia has saved her password in a hidden file in this folder. Find it and log in as sophia.
Um sich alle Dateien in einem Verzeichnis anzeigen zu lassen, gibt es unter Linux den ls
Befehl. Dieser zeigt versteckte Dateien jedoch standardmäßig nicht an. Wenn man den Befehl jedoch mit der Option -a aufruft, werden auch versteckte Dateien angezeigt. Die -l Option gibt das ganze als Liste aus. Ich verwende fast immer diese Option.
ls -la
drwxr-x--- 2 root hacker 4096 Feb 24 11:50 .
drwxr-xr-x 55 root root 4096 Feb 24 11:47 ..
-rw-r----- 1 root hacker 31 Feb 24 11:50 ...
-rw-r--r-- 1 hacker hacker 220 Aug 4 2021 .bash_logout
-rw-r--r-- 1 hacker hacker 3526 Aug 4 2021 .bashrc
-rw-r----- 1 root hacker 16 Feb 24 11:47 .myhiddenpazz
-rw-r--r-- 1 hacker hacker 807 Aug 4 2021 .profile
-rw-r----- 1 root hacker 287 Feb 24 11:47 mission.txt
-rw-r----- 1 root hacker 2542 Feb 24 11:47 readme.txt
Hier sind nun alle Dateien im aktuellen Verzeichnis aufgeführt. Die Dateien mit dem Punkt am anfang sind Versteckte Dateien, die mit einem ls
ohne -a nicht auftauchen würden.
Um sich nun den Inhalt der Datei ‚.myhiddenpazz‘ anzeigen zu lassen, benutzen wir den cat
Befehl.
cat .myhiddenpazz
Und schon haben wir das Passwort für den User ’sophia‘.
Um den Benutzer zu wechseln, gebt benutzt einfach den su
Befehl, gefolgt vom Benutzernamen, zu dem ihr wechseln wollt.
su sophia
Password:
Ihr werdet aufgefordert, das Passwort des gewünschten Benutzers einzugeben. Hat alles geklappt, seid ihr als der gewünschte Benutzer angemeldet und könnt mit einem cd ~
in das Home-Verzeichnis des Benutzers wechseln. Hier findet Ihr eine Datei namens flagz.txt mit einer Flag, die Ihr zur Bestätigung, dass ihr dieses Level gelöst habt, auf https://hackmyvm.eu/venus/flagz.php eingeben könnt (wie oben erwähnt, könnt ihr den cat
Befehl nutzen, um euch den Inhalt einer Datei anzeigen zu lassen). Die Beschreibung der Mission für das nächste Level findet Ihr dann in der Datei ‚mission.txt‘ im aktuellen Home-Verzeichnis.
Nachdem ich das erste Level relativ ausführlich beschrieben habe, werde ich die Sache in den folgenden Leveln etwas abkürzen. Sollte etwas unklar sein, weist mich gerne mit der Kommentar-Funktion darauf hin.
Level 2
Mission: The user angela has saved her password in a file but she does not remember where … she only remembers that the file was called whereismypazz.txt
Wir müssen also eine Datei ‚whereismypazz.txt‘ finden. Dafür gibt es den find
Befehl. Dieser hat einige nützliche Optionen. Hier benutzen wir die -name Option.
find / -name "whereismypazz.txt" 2>/dev/null
/usr/share/whereismypazz.txt
Das erste /
gibt dabei an, wo gesucht werden soll, nämlich im Root-Verzeichnis, also ganz von vorne an. Die -name Option ist selbsterklärend und das 2</dev/null
ist dafür da, eventuelle Fehlermeldungen zu unterdrücken. Dabei ist 2 die Standard-Fehlerausgabe, welche mit >
nach /dev/null
also ins Nichts umgeleitet wird.
Jetzt habt Ihr die Datei, die das Passwort für den nächsten Nutzer enthält.
Level 3
Mission: The password of the user emma is in line 4069 of the file findme.txt
Hier benutzen wir den Befehl sed
, um uns die Zeile 4069 der Datei ‚findme.txt‘ ausgeben zu lassen.
sed -n '4069p' findme.txt
Schon habt Ihr das nächste Passwort.
Level 4
Mission: User mia has left her password in the file -.
Da wir dem Befehl cat
nicht den Dateinamen ‚-‚ übergeben können, weil Optionen mit einem ‚-‚ eingeleitet werden und cat
diesen Namen somit nicht als solchen erkennen kann, müssen wir etwas tricksen. Wir sagen cat
einfach, dass er die Datei im aktuellen Verzeichnis suchen soll. Dies können wir machen, indem wir dem Dateinamen die Zeichenfolge ‚./‘ voran stellen. Der vollständige Befehl lautet also
cat ./-
Level 5
Mission: It seems that the user camila has left her password inside a folder called hereiam
Hier können wir mit der Methode aus Level 2 in Kombination mit der Methode aus Level 1 arbeiten:
find / -name "hereiam" 2>/dev/null
/opt/hereiam
ls -la /opt/hereiam
total 12
drwxr-xr-x 2 root root 4096 Feb 24 11:47 .
drwxr-xr-x 1 root root 4096 Feb 24 11:47 ..
-rw-r--r-- 1 root root 16 Feb 24 11:47 .here
cat /opt/hereiam/.here
Level 6
Mission: The user luna has left her password in a file inside the muack folder.
Auch hier können wir wieder mit dem find
Befehl Arbeiten. Diesmal jedoch mit der Option ‚-type f‘ welche explizit nach Dateien sucht und keine Verzeichnisse ausgibt.
find ./muack -type f
./muack/111/111/muack
cat ./muack/111/111/muack
Level 7
Mission: The user eleanor has left her password in a file that occupies 6969 bytes.
Wieder können wir den find
Befehl benutzen. Diesmal mit der Option ‚-size‘, wobei wir an die Dateigröße ein c anhängen, da find
ansonsten nicht von Bytes sondern von Blöcken ausgehen würde.
find / -size 6969c 2>/dev/null
/usr/share/man/man1/h2xs.1.gz
/usr/share/moon.txt
cat /usr/share/moon.txt
find
hat zwei Dateien mit der entsprechenden Größe gefunden. Da wir nicht davon ausgehen, dass die Passwort-Datei kompremiert ist, probieren wir zuerst aus, den Inhalt der .txt Datei auszugeben und bekommen Somit das Passwort für den nächsten Benutzer.
Level 8
Mission: The user victoria has left her password in a file in which the owner is the user violin.
Wieder ein Fall für den find
Befehl. Diesmal mit der Option -user
find / -user violin 2>/dev/null
/usr/local/games/yo
cat /usr/local/games/yo
Level 9
Mission: The user isla has left her password in a zip file.
Um eine Zip-Datei zu entpacken, müssen wir für den Zielort Schreibrechte haben, da wir im aktuellen Home-Verzeichnis keine Schreibrechte haben, erstellen wir einen temporären Ordner innerhalb des Ordners ‚/tmp‘.
mkdir /tmp/1234
unzip passw0rd.zip -d /tmp/1234
Archive: passw0rd.zip
extracting: /tmp/1234/pwned/victoria/passw0rd.txt
cat /tmp/1234/pwned/victoria/passw0rd.txt
Level 10
MIssion: The password of the user violet is in the line that begins with a9HFX (these 5 characters are not part of her password.).
Hier kommt ein neuer sehr wichtiger Befehl in Spiel, der grep
Befehl. Dieser wird dazu benutzt, nach bestimmten Zeichenfolgen oder Regulären Ausdrücken zu suchen. Hier benutzen wir auch gleich einen regulären Ausdruck. Wir suchen nach einer Zeichenfolge, die mit ‚a9HFX‘ beginnt. Dazu benugtzen wir das ^
Zeichen, das den Start einer Zeichenkette Markiert. Außerdem benutzen wir das | Zeichen (AltGr
+ <
) um die Ausgabe des Befehls cat
in die Eingabe das Befehls grep
umzuleiten.
cat passy | grep ^a9HFX
Achtet darauf, dass das Passwort erst nach der gesuchten Zeichenfolge anfängt.