“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.
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.
Wenn wir uns in die Lage derjenigen Person versetzen, die die Party erstellt hat und uns überlegen, wie wir ein solchen Ereignes öffentlich machen würden, wird man schnell zu dem Ergebnis kommen, “Facebook” oder andere öffentliche Netzwerke zu verwenden. Diese werden in den meisten Fällen über den Browser und somit HTTP-Daten angesprochen, was die Entscheidung, in Richtung HTTP-Verkehr weiter zu untersuchen, noch unterstreicht.
Wireshark mit dem Filter “http” zu versehen, verringert die Anzahl der Pakete schon auf 1373, die sich nun mit hinnehmbaren Aufwand deutlich einfacher durchsuchen lassen würden. Da wir jedoch immernoch faul sind und unseren Gedanken fortführen, eine Party über den Webbrowser anzulegen, gelangen wir zu der Erkenntnis, dass solche Events meist über HTTP-Formulare erstellt werden.
HTTP-Formulare jedoch überträgt man in den meisten Fällen, besonders bei größeren Datenmengen, über die HTTP-POST-Methode, bei der die Informationen nicht in der Adresszeile (wie bei GET-Anfragen) sondern im Körper des HTTP-Paketes übersand werden. Wir filtern die Daten daher nun mittels “http.request.method == POST“.
Damit konnten wir die Anzahl der Pakete auf 9 Stück reduzieren. Bei genauerer Betrachtung finden wir tatsächlich mit Paket Nummer 54755 eine Verbindung, die Daten an die Adresse http://www.taproom307.com/parties-events/ überträgt und vom Namen her schon sehr vielversprechend erscheint. Das Folgen des TCP-Streams führt zu dieser Ausgabe:
Im Body des Paketes sehen wir, welche Formular-Daten hier zum Server übertragen wurden. Auch wenn man den Inhalt schon gut ablesen kann, verwende ich dennoch einen URLDecoder um auch die Sonderzeichen umzuwandeln. Die interessante Variable ist hierbei “si_contact_message“, mit folgendem Text:
“Hey! I want to plan a party at your venue. I’m expecting a lot of people though and I don’t want anyone who isn’t supposed to be there showing up for the fun. If you can do me a favor and make sure to ask for the phrase “brooklyn beat box” before letting attendees in, that would be awesome!”
Die Person hat das geheime Passwort also direkt in das Kontaktfeld zur Party-Anmeldung eingefügt und wir konnten es hier problemlos wieder auslesen.
Die Lösung lautet somit: “brooklyn beat box“.