Skip to content

Keyjacking - Clickjackings kleiner Bruder

Rosario Valotta hat unter dem Titel "Abusing browsers user interfaces (for fun & profit)" einen neuen "User Interface Redressing"-Angriff beschrieben, den Paul Ducklin von Sophos in Anlehnung an das bekannte Clickjacking als "Keyjacking" bezeichnet hat.

Mehrere Präsentationen auf Konferenzen

Rosario Valotta hat den Angriff auf mehreren Konferenzen vorgestellt: Auf der Hack in the Box Amsterdam 2013 (Präsentation als PDF), auf den PHDays (Positive Hack Days, Präsentation auf Slideshare) und auf der Nuit Du Hack. Auf seiner Website hat er außer dem Artikel "Abusing browsers user interfaces (for fun & profit)" auch alle Proof-of-Concepts auf einer Übersichtsseite veröffentlicht.

Angriff nur auf bestimmte Systeme möglich

Im Gegensatz zum Browser- und Systemunabhängigen Clickjacking funktioniert das Keyjacking nur mit bestimmten Versionen des Internet Explorers unter Windows, und zwar

  • dem IE 9 und 10 unter Windows 7 und
  • dem IE 10 unter Windows 8.

Aber die Kombination "(halbwegs) aktuelles Windows mit passendem IE" ist ja nun nicht gerade besonders selten, so dass entsprechende Angriffe durchaus "in the wild" auftreten könnten. Aber fangen wir am Anfang an:

Das Benutzerinterface des Browsers im Überblick

Im folgenden dreht sich alles um "Chrome", aber nicht um Googles Browser, sondern um das gleichnamige Benutzerinterface der Browser. Chrome umfasst die Benutzerkontrollen ("user controls"), Menus, Dialoge, Anzeigen wie die Informationsleiste ("notification bar"), ..., die die eigentlich dargestellte Webseite umgeben. Chrome stellt quasi das Bindeglied zwischen Benutzer und Browser dar, und ihm wird generell vertraut. Zum Beispiel, wenn der Browser vor einem gefährlichen Download oder eine Phishing-Seite warnt. Aber was passiert, wenn das Chrome von einem Angreifer manipuliert werden kann?

Wenn ein Angreifer das Chrome manipulieren kann, sind die tatsächlichen Warnungen des Browsers nicht mehr von den gefälschten Warnungen des Angreifers zu unterscheiden. Vom für die Angreifer noch viel interessanteren Unterdrücken echter Warnungen ganz zu schweigen.

Sie ahnen es vermutlich schon (sofern Sie nicht bereits die Texte von Rosario Valotta und Paul Ducklin gelesen haben und es daher genau wissen): Rosario Valotta hat einen Weg gefunden, das Chrome zu manipulieren: Das Drücken einer Taste im Internet Explorer oder ein Mausklick in Googles Chrome reichen aus, um ein bösartiges Programm von einer Website zu laden und auf dem lokalen Rechner auszuführen.

Design-Probleme im Chrome

Die Informationsmechanismen der Browser weisen einige Design-Probleme auf:

  • Die Informationsleiste ist mit der Navigation verknüpft - wer die Navigation verstecken kann, kann auch die Informationsleiste verstecken, so dass zum Beispiel ein Download durchgeführt wird, ohne dass der Benutzer informiert wird
  • Es gibt einige Tastenkürzel, über die der Benutzer mit den Benutzerkontrollen in der Informationsleiste interagieren kann, wie zum Beispiel R zum Starten einer Datei oder S zum Speichern einer Datei.
  • Mit der Tabulator-Taste kann zwischen den Benutzerkontrollen der Informationsleiste gewechselt werden.

Wir basteln einen Angriff

Navigation verbergen

Um die Informationsleiste zu verbergen, muss die Navigation verborgen werden. Um das zu erreichen, nutzt Rosario Valotta ein Popunder-Fenster: Er öffnet ein neues Fenster, passt seine Größe an und legt es an bestimmte Koordinaten, wo er es in den Hintergrund bringt. Entsprechender JavaScript-Code lässt sich mit dem Suchbegriff "Jspopunder" zum Beispiel auf Github finden.

Download starten und verbergen

Da die meisten Benutzer Tabs nutzen, fällt das sich kurz öffnende neue Fenster im Allgemeinen nicht weiter auf. Somit ist Rosario Valotta in der Lage, einen Download zu starten und die Informationsleiste in einem Hintergrund-Fenster zu verstecken. Vorausgesetzt natürlich, das Opfer besucht eine entsprechend präparierte Webseite, aber das ist ja weiter kein Problem. Irgendwie lässt sich jeder Benutzer auf so eine Seite locken.

Heruntergeladene Datei starten

Jetzt muss die heruntergeladene Datei nur noch gestartet werden. Dazu nutzt Rosario Valotta einen Fehler im IE 9 und 10 unter Windows 7 aus: Dort ist es möglich, das Popunder-Fenster in den Fokus zu bringen, obwohl es nicht sichtbar ist. Jede Tastatureingabe landet also im Popunder-Fenster und nicht wie es eigentlich sein sollte im Fenster im Vordergrund. Nachdem die Datei heruntergeladen wurde, muss nur noch eine Taste gedrückt werden, um sie zu starten, auf englischsprachigen Systemen das "R" für "Run". Für andere Sprachen werden andere Tastenkürzel verwendet, aber eine Anpassung des Angriffs ist ja weiter kein Problem.

Es gibt viele Möglichkeiten, das Opfer zum Eingeben eines "R" zu bewegen. Rosario Valotta hat die Eingabe eines Captchas gewählt. Das muss nur mit dem passenden Buchstaben, hier also "R", beginnen (ein englischsprachiges System vorausgesetzt, für andere Sprachversionen müssen dann passende andere "CAPTCHAs" verwendet werden). Wie das Ganze funktioniert, zeigt ein von Rosario Valotta veröffentlichter Proof of Concept.

Unter Windows 8 ist minimal mehr Aufwand nötig, da der Benutzer dort die "Tab"-Taste und erst danach "R" drücken muss. Aber schon ein kleiner Schreibmaschinen-Lehrgang reicht aus, um den Benutzer zum Drücken dieser Tasten zu bewegen, wie Rosario Valottas zweiter Proof-of-Concept zeigt.

Der Angriff braucht einen Namen

Da in beiden Fällen Tastendrücke entführt werden, liegt Paul Ducklins Namenswahl "Keyjacking" nah. Der Angriff ist auch mit Googles Chrome möglich, aber dort muss der Benutzer einen Button anklicken, um die heruntergeladene Datei zu starten. Dort reicht also zum Beispiel ein normaler Clickjacking-Angriff aus, um die Datei zu starten.

Das gabs doch schon?

Solche Angriffe wurden bereits zuvor diskutiert, zum Beispiel von Michal Zalewski oder Collin Jackson (PDF). Aber bis Windows 7 war es gar nicht möglich, auf diesem Weg ein Programm zu starten. Unter Windows 7 wird beim Herunterladen einer Datei mittels dem Chrome ein "Zone Information file" mit Informationen über die Sicherheitszone, von der die Datei angelegt wurde, erzeugt. Wurde eine unsignierte Datei aus der Internet-Zone geladen, gibt es beim Start eine nicht zu umgehende Sicherheitswarnung. Ein Ein-Klick-Angriff funktioniert damit also nicht. Es sei denn, die Datei hat eine gültige Signatur. Was ja auch bei Schadsoftware schon des öfteren vorgekommen ist.

In Windows 8 wurde die Sicherheitswarnung durch eine Smartscreen-Prüfung ersetzt, die auf verschiedene Arten umgangen werden kann - der Ein-Klick-Angriff funktioniert damit also, wie Rosario Valotta mit einem weiteren Proof-of-Concept demonstriert. Alle Proof-of-Concepts sind sie oben schon erwähnt auf einer Übersichtsseite zusammengefasst und erklärt.

Eine weitere Hürde bei der Übernahme eines Rechners ist die User Access Control UAC: Fordert ein Programm Administrator-Rechte an, wird eine nicht zu umgehende Warnung ausgegeben. Aber auch ohne Administrator-Rechte kann ein Schadprogramm genug Schaden anrichten.

Fazit

Beim Surfen im Web sollte man eins immer im Hinterkopf behalten: Es ist nicht immer alles wirklich so, wie es auf dem ersten und auch zweiten Blick aussieht. Auch wenn das Keyjacking "nur" den IE 9 und 10 unter Windows 7 und den IE 10 unter Windows 8 betrifft, zeigt es, was alles mit ein paar "Taschenspielertricks" möglich ist. Auch und gerade im Web. Also: Hüten Sie sich vor digitalen Taschenspielern!

Carsten Eilers

Trackbacks

Keine Trackbacks