Anonym surfen mit Proxomitron
Einleitend
...möchte ich eines betonen: Anonymität im Internet ist nicht, wie von vielen Hilfsprogramm-Herstellern immer wieder behauptet, ein rein technisches Thema, das sich durch den Einsatz der richtigen Filterkombination erledigen ließe.
Mit Hilfe von Filterprogrammen lassen sich Techniken zur automatischen Überwachung und Verfolgung von Benutzern mehr oder weniger gut blockieren und stören. Aber kein Programm kann verhindern, dass Benutzer sich selbst zu Opfern machen, indem sie Daten preisgeben, ihr System durch Viren und Trojaner infizieren lassen, "kostenlose" (werbefinanzierte) Software installieren, die im Hintergrund Daten verschickt, oder einfach nur bekanntermaßen unsichere Programme benutzen, nur weil deren Hersteller so bekannt ist.
Die Realität
Derzeit hat sich noch keine Technik durchgesetzt, die es ermöglichen würde, jeden Benutzer sicher zu identifizieren und damit bequem über einen größeren Zeitraum zu verfolgen. Intels Idee mit der Prozessor-ID war ein Reinfall, Microsofts Passport ist derzeit kaum mehr als eine Wunschvorstellung.
Was bleibt also?
Die Datensammler müssen nehmen, was sie kriegen können.
Aus diesem Grund werden riesige Datenbestände aus unzähligen kleinen Informationsbruchstücken miteinander abgeglichen, um den Wünschen und der Persönlichkeit des Benutzers auf die Spur zu kommen.
Was in der Presse als Rasterfahndung noch heiß diskutiert wird, ist in der Internet-Werbebranche längst Realität.
Warum ein falscher Name nicht anonym macht:
Wenn ein Benutzer sich im WWW bewegt, wird oft ein Profil von ihm erstellt. Sein Name ist zu diesem Zeitpunkt völlig unwichtig, er bekommt einfach eine Nummer zugewiesen. Mit jeder Information, die über ihn bekannt wird, vervollständigt sich das namenlose Personenprofil.
Irgendwann passiert es dann: Der Benutzer, der vorher Monate lang nichts über sich preisgegeben hat, meldet sich bei einem Gewinnspiel an, gibt seinen Namen und seine Adresse ein und innerhalb weniger Sekunden werden tausende von Datenbankeinträgen, die vorher nur eine Kennnummer hatten, mit seinem Namen verknüpft.
Es muss natürlich kein Gewinnspiel sein. Es gibt unzählige Lockangebote und unseriöse Website-Betreiber, die nach Herzenslust Daten und Adressen sammeln, um diese dann an die gierig wartende Kundschaft zu verkaufen.
Die Verfolgungs-Techniken
Es gibt drei grundlegende Techniken, über die Surfer im WWW verfolgt werden können:
- Auswertung der Serverkommunikation
- Setzen und Auslesen von Cookies
- Einsatz von Skripten, die den Browser veranlassen, Daten zu versenden
Alle drei Techniken können mit Proxomitron kontrolliert werden
Um effektive Filter entwickeln zu können, ist es allerdings wichtig, genauer über die Techniken der Datensammler Bescheid zu wissen.
Serverkommunikation
beinhaltet die IP-Adresse und zahlreiche sog. HTTP-Header, die Aufschluss über den benutzten Browsertyp, das Betriebssystem und die zuvor besuchte Webseite geben.
Cookies
sind kleine Textblöcke, die der Server an den Browser senden und später wieder abrufen kann. Cookies werden vom Browser entweder dauerhaft oder für einen festgelegten Zeitraum gespeichert. Sie können keine ausführbaren Befehle enthalten und stellen deshalb kein direktes Sicherheitsrisiko dar. Cookies dienen jedoch häufig dazu, den Benutzer zu "markieren". Server legen beim Benutzer Cookies ab, anhand derer sie ihn später wiedererkennen können. Mittlerweile sind Cookies die Standardmethode zur Verfolgung von Sitebesuchern geworden. Beim ersten Besuch bekommt der Benutzer ein Cookie mit einer eindeutigen Kennnummer aufgedrückt und bei jedem weiteren Seitenaufruf fragt der Server das Cookie ab und erkennt den Besucher daran wieder.
Das eigentliche Problem ist, dass nicht nur der Server Cookies setzen kann, der die aufgerufene Webseite liefert. Jede von einem Webserver abgerufene Datei kann mit einem Befehl zum Setzen oder Auslesen eines Cookies kombiniert werden. Da die Werbebanner und Counter-Grafiken auf den meisten Webseiten nicht vom eigenen Server, sondern direkt von den Servern der Werbefirmen eingefügt werden, haben diese Firmen die Möglichkeit, mit Hilfe von Cookies, Benutzerbewegungen auf allen angeschlossenen Partner-Websites zu verfolgen.
Einer der größten Banneranbieter ist die Firma Doubleclick. Um diese Firma gab es vor einiger Zeit einen ziemlichen Presserummel, weil mal jemand das ausgesprochen hatte, was eigentlich schon lange bekannt war. Nämlich, dass Doubleclick systematisch Surfer durch das ganze WWW verfolgt, deren Personenprofil speichert und zu jedem nur erdenklichen Zweck nutzt.
Schnüffelskripten
werden dort eingesetzt, wo die Informationen, die durch die beiden o.g. Methoden ermittelt werden können, nicht ausreichend sind. Es handelt sich in der Regel um Java-Skripten, die versuchen, möglichst viele Informationen vom Browser abzufragen und an den Server zu schicken. Das Versenden der Informationen geschieht in der Regel über einen unsichtbaren Dateiabruf.
Beispiel:
Das Skript ermittelt, dass der Benutzer Windows 2000 und Opera 5.12 benutzt, eine Bildschirmauflösung von 1024x768 Pixel mit 24 Bit Farbtiefe hat, vorher auf 3 anderen Seiten war, von denen die letzte "www.buerschgens.de/Prox/Seiten/blablub.html" war, und das Flash-Plugin in Version 1.23 installiert hat.
Danach ruft das Skript vom Werbeserver eine 1x1 Pixel große Grafik mit folgendem Namen auf:
"trackerpixel-win2k-op5.12-1024-24-hst3-ref'www.buerschgens.de# Prox#Seiten#blablub.html'-msf1.23-.gif"
Wie man sieht, ist alles drin. Der Server braucht nur noch die im Aufruf enthaltenen Daten auszuwerten. Nach diesem Prinzip arbeiten übrigens alle mir bekannten Counter, die über Statistikfunktionen verfügen.
Wie Proxomitron helfen kann
Die Wahl der Waffen
Wie in den vorausgehenden Teilen erklärt, gibt es drei grundlegende Verfahren, mit denen Webmaster und vor allem Werbefirmen Informationen über Websurfer sammeln und deren Weg durch das WWW verfolgen können:
- Auswertung der Serverkommunikation
- Setzen und Auslesen von Cookies
- Einsatz von Skripten, die den Browser veranlassen, Daten zu versenden
Punkt 1 betrifft die Daten, die über HTTP-Header übertragen werden und die IP-Adresse des Benutzers.
Erstere lassen sich über Header-Filter beliebig manipulieren. Die IP-Adresse kann jedoch nicht durch Filter verschleiert werden, da zur Datenübertragung über das Internet, der Sender die IP-Adresse des Empfängers kennen muss. Es ist allerdings möglich, die Daten über anonymisierende Proxyserver umzuleiten, die dann stellvertretend für den Benutzer die Daten vom Server anfordern und ihn so für den Server unsichtbar machen.
Punkt 2 erfordert den kombinierten Einsatz von Headerfiltern und Seitenfiltern, da es drei Verfahren zum Setzen und Abfragen von Cookies gibt: Cookies über HTTP-Header, Cookies per Meta-Tag und Cookies per JavaScript.
Punkt 3 ist für den Filterautor die größte Herausforderung, da jedes Schnüffelskript anders aufgebaut ist. Das Schreiben von wirksamen JavaScript-Filtern kann viele spannende Stunden bescheren.
Den Server täuschen
Manipulation der HTTP-Header
Es gibt eine große Anzahl von möglichen Headern, die zwischen Server und Browser ausgetauscht werden können. Einige sind notwendig, andere sind optional.
Die folgenden Header sind optional und nicht für die Kommunikation wichtig. Ihre Manipulation kann aber trotzdem zu Problemen mit Seiten führen, die sich auf sie verlassen.
| Cache-Control: | (vom Server) kann dem Browser verbieten, die Seite im Cache zu speichern Gegenmaßnahme ist das Löschen des Wertes. Der Filter "Cache-Control: allways cache (in)" übernimmt diese Aufgabe. |
|---|---|
| Expires: | (vom Server) kann dem Browser verbieten, die Seite im Cache zu speichern. Gegenmaßnahme ist das Löschen des Wertes. Der Filter "Expires: allways cache (in)" übernimmt diese Aufgabe. |
| Pragma: no-cache | (vom Server) kann dem Browser verbieten, die Seite im Cache zu speichern. Gegenmaßnahme ist das Löschen des Wertes. Der Filter "Pragma: Don't force reloads" übernimmt diese Aufgabe. |
| Referer: | (vom Browser) Hiermit teilt der Browser dem Server beim Seitenaufruf mit, auf welcher Seite er vorher war. Der Headerwert kann gelöscht oder durch beliebigen Text ersetzt werden. Der Filter "Referer: Hide where we've been (Out)" ersetzt den Wert z.B. durch den URL der gerade aufgerufenen Seite. |
| Set-cookie: | (vom Server) sendet der Server um ein Cookie beim Benutzer abzulegen. Durch Änderung des Wertes kann das Cookie blockiert oder seine Gültigkeitsdauer verändert werden. Der Filter "Set-cookie: Make all cookies session only (in)" entfernt die Gültigkeitsangabe aller Cookies, die nicht in der Blockliste "CookieList" aufgeführt sind. Sie werden dadurch beim Beenden des Browsers gelöscht. |
| User-Agent: | (vom Browser) identifiziert den Browser und meist auch das verwendete Betriebssystem. Der Wert kann durch jeden beliebigen Text ersetzt werden. Aber Vorsicht: Es gibt Websites, die nur bestimmte Browser zulassen oder je nach Browsertyp unterschiedliche Seiten liefern. Es gibt auch hierfür fertige Filter, z.B. "User-Agent: Space Bison (Out)". Er setzt als Browser "Space Bison/0.02 [fu] (Win67; X; SK)" ein. |
Um einen Headerwert zu löschen, setzt man im Header-Filter Editor in das Feld "Header-Wert Suchen" ein Sternchen und lässt das Feld "Ersetzungsausdruck" leer.
"Tarnvorrichtung an!" - Anonymisierende Proxies
Anonymisierende Proxies arbeiten als Zwischenstation zwischen Client und Server und verhindern dadurch, dass der Server die IP-Adresse des Clients erfährt. Außerdem entfernen sie alle nicht notwendigen Header. Viele dieser Proxies haben noch einige Zusatzfunktionen und deaktivieren z.B. Skripten, die den Benutzer verraten könnten. Proxomitron bietet alle Funktionen, die zur Benutzung anonymisierender Proxies nötig sind.
Über die Schaltfläche "Proxy" im Hauptfenster gelangt man ins Fenster "Auswahl Externer Proxy" und kann dort über die Schaltfläche "Neu" beliebig viele Proxies eintragen.

Über das Kontextmenü des Proxy-Auswahlfeldes lässt sich das Fenster "Erweiterte Proxy-Einstellungen" öffnen.
Dort kann die Proxy-Rotation aktiviert werden, wodurch die Sicherheit noch einmal erhöht wird. Proximitron leitet dann nämlich die einzelnen Anfragen abwechselnd über alle eingetragenen Proxyserver.
Cookies kriegt das Monster
Das Thema Cookies per HTTP-Header müsste nach dem Kapitel "Manipulation der HTTP-Header" ja kein Problem mehr sein. Es bleiben noch Cookies per Meta-Tag und per JavaScript. Beide Verfahren arbeiten über Befehle im Quelltext und fallen somit in den Zuständigkeitsbereich der Seitenfilter.
Seitenfilter gegen Meta-Cookies
Die Idee, Cookies per Meta-Tag zu setzen kommt ursprünglich von Netscape und ich vermute, dass auch nur Netscape-Browser diese Funktion unterstützen.
Aber: Einige (oder viele?) Webserver interpretieren diesen Meta-Tag und senden das darin enthaltene Cookie als HTTP-Header. Das ist dann aber wieder ein Fall für die Headerfilter.
Ein typischer Meta-Tag zum Setzen eines Cookies sieht so aus:
<META HTTP-EQUIV="Set-Cookie" CONTENT="cookievalue=xxx; expires=Friday, 12-Oct-2001 12:43:21 GMT; path=/">
Die Angabe "expires=xxx" ist optional. Wenn sie nicht vorhanden ist, wird das Cookie nicht gespeichert und beim Schließen des Browsers gelöscht.
Per Seitenfilter kann man den Tag entweder ganz löschen oder die Haltbarkeitsangabe entfernen.
Der Filter für letzteres sieht beispielsweise so aus:
- Vergleichsausdruck:
- (< meta http-equiv="set-cookie" content=")\1\2expires=*; (*>)\3
- Ersetzungsausdruck:
- \1\2\3
Seitenfilter gegen JavaScript-Cookies
In JavaScript ist der Befehl zum Setzen oder Auslesen von Cookies eine Eigenschaft des Objektes "document". Objekteigenschaften verhalten sich in der Regel wie Variablen oder Konstanten.
Ein Cookie wird gesetzt durch eine Zeile wie:
document.cookie = "trallala";
und ausgelesen durch eine Zeile wie:
x = document.cookie;
Als Gegenmaßnahme genügt es, den Befehl zum Setzen des Cookies so zu verändern, dass der Browser ihn nicht mehr versteht.
Ich füge dazu immer ein "_wegdamit_" in den Befehl ein.
Folgender Filter erledigt diese Aufgabe:
- Eingrenzende Entsprechung:
- <script*</script>
- Byte Limit:
- 4096
- Vergleichsausdruck:
- \1(document\.)\2(cookie = )\3\4
- Ersetzungsausdruck:
- \1\2_wegdamit_\3\4
Es kann sein, dass das Byte Limit für ganz große Skripten nicht ausreicht. In diesem Fall können Sie es erhöhen.
Neugierige Skripte
Die Filterung von Java Skripten ist ein derart umfangreiches Thema, dass es meiner Meinung nach nicht sinnvoll ist, im Rahmen dieses Textes weiter ins Detail zu gehen.
Es bringt mehr, wenn ich dazu später ein paar Tutorials schreibe.
Proxomitron bringt einen Filter namens "Kill Nosey JavaScripts"mit, der einen Großteil der "neugierigen" Skripten entfernt.
Dieser Artikel wurde von Michael Bürschgens verfasst und von unserer Redaktion überarbeitet. Im Original finden Sie ihn und weitere Informationen hier.