CodeGate 2012 Quals – misc #3

CodeGate CTF 2012 - misc #3 - task description

In dieser Aufgabe (misc #3) sollen wir nun also irgendein “Geheimnis” finden. Das Geheimnis scheint in einer Datei zu stehen und als Antwort dieser Challenge wird ein Passwort erwartet. Um uns einen Überblick zu verschaffen, öffnen wir zunächst das pcap-file mit Wireshark.

CodeGate CTF 2012 - misc #3 - wireshark protocol hierarchy

Ein Blick in die Protokoll-Statistik zeigt, dass es sich nur um HTTP-Verkehr (und die dazugehörigen TCP-Verbindungen) handelt. Also stellen wir zum Sichten des Datenverkehrs den Wireshark-Filter auf “http”.

CodeGate CTF 2012 - misc #3 - wireshark http traffic

Die übrig gebliebenen 89 Pakete sind schnell durchgesehen und gegen Ende der Übertragung fällt auf, dass Dateien aus dem Verzeichnis “/hack/” bezogen werden. Bei genauer Betrachtung sticht das Paket 2886 hervor, mit dem eine Datei namens “korean_secret” beim Server angefragt wird. Die Antwort des Servers im darauf folgenden http-Paket beginnt mit den Zeichen “%PDF-1.6”.

Der Client erhält also mit seiner Anfrage nach dem “korean_secret” eine PDF-Datei vom Server. Diese wollen wir uns nun genauer ansehen, indem wir die beim HTTP-Verkehr übertragenen Dateien extrahieren. Dazu wird das Werkzeug chaosreader verwendet.

rup0rt@lambda:~/misc3$ chaosreader misc3.pcap &> /dev/null

rup0rt@lambda:~/misc3$ ls *.pdf
session_0032.part_09.pdf  session_0033.part_09.pdf  session_0033.part_10.pdf

rup0rt@lambda:~/misc3$ xpdf session_0033.part_10.pdf
Error: Incorrect password

Man erhält drei PDF-Dateien, von denen eine mit einem Passwort geschützt ist. Ein simpler “brute force”-Angriff auf das Passwort mit dem Werkzeug pdfcrack scheint keinen Erfolg zu haben, also bleibt nichts anderes übrig, als irgendwie mit einem Wörterbuch zu arbeiten.

Bevor jetzt wild nach Wörterbüchern im Internet gesucht wird, wollen wir zunächst versuchen, ob sich mit den im HTTP-Verkehr übertragenen Daten vielleicht ein geeignetes Wörterbuch generieren lässt. Die besuchten Webseiten hat uns der chaosreader bereits geliefert. Also rufe ich die Webseiten kurz auf und kopiere den sinnvollen Inhalt in eine Textdatei.

Anschließend schreibe ich ein kurzes Skript um die Sätze so zu trennen, das pro Zeile nur noch ein Wort in Kleinbuchsten steht.

rup0rt@lambda:~/misc3$ ./misc3.pl misc3.txt > content.txt
rup0rt@lambda:~/misc3$ sort -u content.txt > wordlist.txt

Nachdem die entstandene Wortlist noch sortiert und doppelte Einträge entfernt wurden, ist eine umfangreiche Liste entstanden, die nun an pdfcrack übergeben werden kann.

rup0rt@lambda:~/misc3$ pdfcrack session_0033.part_10.pdf -w wordlist.txt
PDF version 1.6
Security Handler: Standard
V: 4
R: 4
P: -3904
Length: 128
Encrypted Metadata: True
FileID: 3f96dd275a3a594b9699307df9117b5f
U: 774e894ba5544df616025fe657b3ac4e00000000000000000000000000000000
O: 215c67bf60b941032efc5e200d906082a394cad728608cad8aea351adaaa2718
found user-password: '28-letter'

Ohne weitere Permutationen an der Wortliste vornehmen zu müssen, wurde das Passwort direkt gefunden und lautet “28-letter”. Um die Lösung für diese Challenge zu erhalten, muss es nur noch Konvertiert werden.

rup0rt@lambda:~$ echo -n "28-letter" | md5sum | tr '[:lower:]' '[:upper:]'
23FB0EC48DF3EACABCA9E98E8CA24CD1  -

Die Antwort lautet also “23FB0EC48DF3EACABCA9E98E8CA24CD1.

Leave a Reply

Your email address will not be published. Required fields are marked *