CSAW CTF Qualifiers 2012 –
Networking 200

“Some dude I know is planning a party at some bar in New York! I really want to go but he’s really strict about who gets let in to the party. I managed to find this packet capture of when the dude registered the party but I don’t know what else to do. Do you think there’s any way you can find out the secret password to get into the party for me? By the way, my favorite hockey player ever is mario lemieux.”

Zusätzlich zu diesem Text, wird uns bei der “Networking 200” – Challenge auch eine PCAP-Datei bereit gestellt. Das Ziel ist, mit Hilfe dieser Netzwerkdaten, herauszufinden, wie das “geheime Passwort” lautet, das erforderlich ist, um Zugang zur Party zu erhalten.

Wir öffnen als Erstes die Datei mit Wireshark um uns einen Überblick zu verschaffen. Die Datei selbst ist über 64 Megabytes groß, was ein manuelles Durchsuchen nach auffälligen Inhalten fast unmöglich macht. Daher betrachten wir zunächst die “Protocol Hierarchy”-Statistiken in Wireshark.

CSAW CTF 2012 - Networking 200 - Protocol hierarchy

Hieraus erkennen wir, dass die Datei insgesamt über 73000 Pakete umfasst, die größtenteils TCP-Daten darstellen. Die einzigen Daten, die von Wireshark einem Protokoll zugeordnet werden konnten und von uns sinnvoll interpretiert werden können, sind HTTP-Daten.

Continue reading

CSAW CTF Qualifiers 2012 –
Web 300

http://128.238.66.217/
“This is a website belonging to a horse-fighting gang. Even with an account, it’s not clear what they’re up to. Your task is to get administrator access and see if you can figure anything out. Your account is csaw_challenger/letmein123.”

Bei der Challenge Web 300 handelt es sich um ein Board, in der diverse Informationen präsentiert werden. Dies umfasst im wesentlichen jeweils eine Seite mit News, bzw. Benutzerinformationen oder jegliche Informationen zu Pferden (Name, Beschreibung etc pp).

CSAW CTF 2012 - Web 300 - website

Die Seiten selbst werden per GET Request weiter verarbeitet. Ausserdem stellt man recht schnell fest, dass ein Session Cookie des aktuell angemeldeten Benutzers gesetzt wird. Somit muss man wohl irgendwie versuchen die Session des Administrators zu übernehmen. Bei näherer Untersuchung fällt auf, dass jegliche Informationen mittels URI (id=XXX) ausgewertet werden. Das lässt vermuten, dass bei dieser Challenge eine SQL Injection Schwachstelle ausgenutzt werden muss. Das wird auf den Seiten “user.php” und “horse.php” überprüft.

http://128.238.66.217/user.php?id=1′ or ‘1’=’1      => keine Schwachstelle
http://128.238.66.217/horse.php?id=1′ or ‘1’=’1    => Schwachstelle !!!

CSAW CTF 2012 - Web 300 - SQL injection error message

Continue reading

CSAW CTF Qualifiers 2012 –
Exploitation 200

Diese Challenge (Exploitation 200) stellt ein Binary bereit und verlangt von uns:

“Read the key out of ./key in the current working directory.”

Zusätzlich wird der Server “128.238.66.218” mit dem Port “54321” genannt.

Es geht also darum, die bereitgestellte ausführbare Datei, die auch auf dem genannten Server an Port 54321 betrieben wird, so durch das Senden von Daten auszunutzen, dass wir an den Inhalt der “key”-Datei gelangen, die auf dem Server abgelegt ist.

Wir sehen uns das Binary wie üblicherweise mit dem Tool “file” genauer an, um die zum Bearbeiten erforderliche Virtuelle Machine bestimmen zu können.

rup0rt@lambda:~/CSAW2012$ file exploitation1-release
exploitation1-release: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x94e984380a61d713c1a614f40eeee92c533593d4, not stripped

Es handelt sich um ein normales 32-bit Linux-Programm. Ich starte daher eine entsprechende Machine, hier ein Debian GNU Linux 6.0 über VirtualBox.

Auf der Virtuellen Machine legen wir zunächst eine “key”-Datei mit beliebigem Inhalt an. Diese soll die Datei auf dem Server nachstellen und beim späteren Testen des Exploits unterstützen, den Erfolg des Auslesens feststellen zu können. Danach starten wir die Datei machen uns mit der Funktionsweise des Binarys vertraut.

user@linux:~$ ./exploitation1-release 
Got a connection from 127.0.0.1 on port 50047

user@linux:~$ nc localhost 54321
Wecome to my first CS project.
Please type your name:  rup0rt
user@linux:~$

Genau wie auf dem Zielserver lauscht das Binary auf Port 54321. Nach dem Verbindungsaufbau mit “netcat” werden wir begrüßt und zur Eingabe unseres Namens aufgefordert. Nachdem dieser Abgesendet wurde, passiert nichts weiter.

Dem Anschein nach wird die Lösung dieser Challenge also darin bestehen, eine geeignete Zeichenkette zu wählen, so dass die interne Bearbeitung des Namens zu einem (ungewollten) Programmverhalten führt, durch das wir an den Inhalt der “key”-Datei gelangen können.

Continue reading

CSAW CTF Qualifiers 2012 –
Reversing 400

Bei dieser Challenge (Reversing 400) wird uns wiederholt nur “wortlos” eine Datei übergeben. Wir sind also wieder völlig auf uns gestellt, herauszufinden, wie und wo in diesem Binary der Schlüssel zur Aufgabe versteckt ist.

Wie gewohnt beginnen wir mit einer Untersuchung des Dateityps mit dem Tool “find”:

rup0rt@lambda:~/CSAW2012$ file csaw2012reversing
csaw2012reversing: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.24, BuildID[sha1]=0x012c3cf67d5aa15a9985ea064958921dc600c367, not stripped

Dieses Mal handelt es sich also um ein Linux-Binary, das für ein 64bit-System kompiliert wurde. Es wird daher Zeit, die entsprechende Virtuelle Machine zu starten (hier ein Debian GNU Linux 6.0) um die Datei näher zu betrachten.

Wie gewöhnlich lässt uns die Neugier nicht im Stich und wir führen die Datei zu aller Erst ohne Nachzudenken einfach aus! Als Antwort erhalten wir:

CSAW CTF 2012 - Reversing 400 - normal execution

Das Programm scheint uns hier den verschlüsselten Key zum Lösen der Challenge auszugeben, der uns jedoch in dieser Form überhaupt nichts nützt. Um zu prüfen, ob es sich wirklich um verschiedene Zeichen handelt – denn die Ausgabe wirkt durch die Fragezeichen recht merkwürdig – nutzen wir das Werkzeug “xxd”.

CSAW CTF 2012 - Reversing 400 - encrypted key

Es handelt sich also tatsächlich um einen 16 Byte langen, verschlüsselten String. Demnach muss nun ein Weg gefunden werden, diesen Key zu entschlüsseln!

Continue reading

CSAW CTF Qualifiers 2012 –
Reversing 300

Auch bei dieser Challenge (Reversing 300) bekommen wir zunächst nur ein .EXE-Binary, das wir der näheren Begutachtung unterziehen müssen. Diese Aufgabe ist der Challenge Reversing 200 sehr ähnlich, so dass wir relativ analog vorgehen und mit einer Untersuchung des Dateityps beginnen können.

rup0rt@lambda:~/CSAW2012$ file CSAWQualification.exe 
CSAWQualification.exe: PE32 executable (console) Intel 80386 Mono/.Net assembly, for MS Windows

Es handelt sich wiederum um eine Datei, die mit dem Microsoft .NET-Framework erstellt wurde, weshalb wir, genau wie in der vorherigen Challenge auch, zur Bearbeitung eine Virtuelle Maschine (wieder ein Windows XP SP3) verwenden werden. Aus Neugier erfolgt als Erstes auch ein Ausführen der Datei mit dem diesem Ergebnis: ;-).

CSAW CTF 2012 - Reversing 300 - normal execution

Der Ersteller der Challenge fragt uns hier, ob wir wirklich einfach immer die Binarys aus CTFs ausführen (ohne nachzudenken) und es bleibt nur eine Antwort: JA, Natürlich!! Wir sind neugierig und wollen unbedingt wissen, was passiert!! :-P

Unsere Erwartung, dass der Schlüssel zur Challenge einfach direkt ausgegeben wird und wir uns die 300 Punkte sichern können, wird jedoch enttäuscht und wir müssen tatsächlich noch mehr tun, um die Aufgabe zu lösen :-).

Continue reading

CSAW CTF Qualifiers 2012 –
Reversing 200

Ohne viel Aufgabenbeschreibung wird bei dieser Challenge (Reversing 200) nur eine .EXE-Datei bereit gestellt. Diese näher zu betrachten und daraus irgendwie einen Weg zum Schlüssel der Challenge erkennen zu können, wird demnach den ersten Schritt darstellen. Wir beginnen damit, uns die Art der Executable detaillierter anszusehen.

rup0rt@lambda:~/CSAW2012$ file CSAWQualificationEasy.exe 
CSAWQualificationEasy.exe: PE32 executable (console) Intel 80386 Mono/.Net assembly, for MS Windows

Es handelt sich also um eine ausführbare Datei, die mit Hilfe des Microsoft .NET-Frameworks bzw. des quelloffenen mono-Frameworks erstellt wurde. Der erste Gedanke, der uns bei .NET-Binarys immer kommen sollte ist, dass sich solche Dateien relativ unproblematisch decompilen und so in den ursprünglichen Quellcode überführen lassen.

Wir starten also eine geeignete Virtuelle Maschine – ich verwende hier ein Windows XP – Service Pack 3 unter VirtualBox. Auch wenn man fremde Binarys nie einfach so ausführen sollte, bin ich immer neugierig und in einer virtuellen Maschine darf man sich so etwas schonmal erlauben ;-). Das Ergebnis sieht folgendermaßen aus:

CSAW CTF 2012 - Reversing 200 - normal execution

Der Text deutet an, dass eine Berechnung im Hintergrund statt findet, der Autor nur vergessen hat, das eigentliche Ergebnis danach auch auf dem Bildschirm ausgeben zu lassen. Es wird also Zeit, das Decompiling durchzuführen und den Quellcode dieses Programmes genauer zu untersuchen.

Continue reading

CSAW CTF Qualifiers 2012 –
Web 200

Die diesjährige CSAW Web 200 – Challenge führt uns zunächst auf einen Webserver, bei dem das Indexing aktiviert ist. Demnach können wir alle Dateien, die sich im Pfad befinden, sehen und erhalten folgende Ansicht:

CSAW CTF 2012 - Web 200 - directory listing

Im Verzeichnis befinden sich vier PHP-Dateien sowie ein PHP-Quellcode-Datei (.phps). Bevor wir uns mit Quellcodes und ähnlichem befassen, sehen wir erst einmal, mit was für einer Art System bzw. Web-Anwendung wir es hier zu tun haben. Dazu rufe ich kurz die Seiten auf, um einen Überblick über deren Funktion zu bekommen.

CSAW CTF 2012 - Web 200 - login form

CSAW CTF 2012 - Web 200 - registration form

Dem ersten Anschein nach handelt es sich also um ein simples System zum Einloggen, Registrieren und Zurücksetzen von Benutzeraccounts. Das Erstellen eines eigenen Kontos funktioniert und ermöglicht den Login, jedoch ohne weitere Informationen von der Seite zu erhalten.

Continue reading

CSAW CTF Qualifiers 2012 –
Forensics 200

CSAW CTF 2012 - Forensics 200 - forensic image

Wenn man sich “version1.png” der Challenge “Forensics 200” (Part 1) im Editor anschaut fällt sofot ins Auge, dass im PNG File jede menge TextComments mit dazugehörigen Namen in folgendem Format existieren:
tExtcomment^@key{…….}

CSAW CTF 2012 - Forensics 200 - PNG text comments

Mit “strings” und “grep” wird das ganze erstmal in lesbare Form gebracht.

=> strings version1.png | grep key

CSAW CTF 2012 - Forensics 200 - extracted png comments

Da das ganze immer noch nicht übersichtlich genug ist, wird das ganze verfeinert und nur die Namen in keys{….} sortiert ausgegeben.
Die Sortierung ist dabei völlig optional und nur zum besseren Verständis gedacht.
Zusätzlich wird der Output in einer Datei “persons1.txt” gespeichert.

Continue reading