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.
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”.
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“.