Content-Spoofing – Teil 1 – JavaScript

Content-Spoofing - JavaScript

Im Internet kursieren unzählige infizierte Webseiten, die darauf warten besucht zu werden. Früher hatte man dazu einfach massenweise Spam-Mails verschickt und gehofft, dass jemand auf die Links klickt.

Die Zeiten sind längst vorbei. Auch wenn immer noch häufig Spam-Mails verschickt werden, gibt es bereits viel cleverere Methoden, die Angreifer ausnutzen: Das Vortäuschen von scheinbar seriösen und vertrauten Informationen.

In diesem ersten Teil der Artikel-Serie geht es um JavaScript.

Manipulation von Links mittels JavaScript Event-Handler

Eine wirklich sehr einfache aber auch effiziente Methode, um Besucher auf infizierte Webseiten zu leiten, sind manipulierte Links, die bei einer bestimmten Aktion JavaScript Code ausführen. Hierzu werden Event-Handler als Attribute in HTML-Tags verwendet.

Ein normaler Link in HTML könnte so aussehen:

<a href="http://www.google.de">Google</a>

Klickt man auf diesen Link, landet man wie gewollt bei google.de

Eine kleine Änderung an diesem HTML-Tag kann dazu führen, dass auf eine andere Webseite weitergeleitet wird, obwohl in der Statusleiste des Browsers die eigentliche URL (hier google.de) beim Überfahren der Maus angezeigt wird:

<a href="http://www.google.de" onclick="location.href='http://www.yahoo.de';return false;">Google</a>

Yahoo dient hier nur als harmloses Beispiel.

Der Link sieht wie gewöhnlich aus. Auch beim Überfahren mit der Maus wird in der Statusleiste unten im Browser die Google-URL angezeigt. Mit einem Klick auf diesen Link landet man jedoch nicht bei Google, sondern bei Yahoo.

Damit es nicht ganz so auffällt, wenn jemand in den Quelltext schaut, wird der JavaScript Code meistens "versteckt" und verschlüsselt. Dazu ein vereinfachtes Beispiel:

<html>
<head>
<title>Beispiel</title>
<script type="text/javascript" src="hint.js"></script>
</head>
<body>
<a href="http://www.google.de" onclick="hint();return false;">Google</a>
</body>
</html>

Hier wird eine externe JavaScript-Datei namens hint.js eingebunden.

Diese könnte so aussehen:

function hint() {
  url = String.fromCharCode(104,116,116,112,58,47,47,119,119,119,46,121,97,104,111,111,46,100,101);
  foo = String.fromCharCode(108,111,99,97,116,105,111,110,46,104,114,101,102,61,117,114,108,59);
  eval(foo);
}

Nun ist die Ziel-URL sowie die "location.href" Anweisung, welche die Weiterleitung bewirkt, nicht mehr direkt im Quelltext sichtbar. Natürlich soll dies nur ein Beispiel darstellen. Jeder, der sich auch nur ansatzweise mit JavaScript auskennt, kann diese Daten mit Leichtigkeit einsehen. In echt werden hier meistens kryptische Verschlüsselungen verwendet, die ein normaler Internet-Nutzer nicht so leicht entschlüsseln kann.

Das ganze Funktioniert natürlich auch mit anderen Event-Handlern wie zum Beispiel onmouseover. Dann muss man noch nicht mal auf den Link klicken, sondern nur mit der Maus drüberfahren, um auf eine andere Webseite weitergeleitet zu werden.

Mit JavaScript ist allerdings noch weitaus mehr möglich. Alle Methoden hier aufzulisten würde den Rahmen des Artikels sprengen.

Gegenmaßnahmen

Als Gegenmaßnahme könnte man natürlich JavaScript im Browser deaktivieren, allerdings würden dann viele Webseiten nicht mehr richtig funktionieren. Besser sind Browser-Addons wie NoScript, mit denen man kontrollieren kann auf welchen Webseiten die Ausführung von JavaScript Code zugelassen ist und auf welchen nicht.

Der beste Schutz ist aber die eigene Achtsamkeit. Man sollte nicht auf jeden Link klicken, den man zu Gesicht bekommt, wenn er nicht von vertrauenswürdigen Quellen kommt. Aber selbst da ist man nicht immer sicher. Mit einer Stored-XSS Sicherheitslücke könnte ein Angreifer beispielsweise jeden einzelnen Link auf einer (seriösen) Webseite manipulieren.

Dir hat der Artikel gefallen? Dann abonniere doch einfach den RSS-Feed, damit du immer auf dem Laufenden bleibst und über neue Einträge kostenlos informiert wirst.

Diesen Artikel weiterempfehlen:
TwitterFacebookDeliciousTechnoratiMister WongWikio

2 Reaktionen zu “Content-Spoofing – Teil 1 – JavaScript”

Kommentare (0)

Für diesen Artikel sind bisher nur Trackbacks vorhanden.

Kommentar hinterlassen