Zum Website-Fingerprinting

Es vergeht ja kaum ein Tag, an dem ich nicht irgendwelchen Hokuspokus zum Thema Privatsphäre im Internet lesen muss – und irgendwelche Maßnahmen, mit deren Hilfe die Surfer doch noch irgendwie in Profile gepackt werden sollen. So machen jetzt auch Leute ordentlich Datamining in den Datenpaketen aus dem Tor- und JAP-Netzwerk, und es gelingt ihnen wirklich – obwohl sie natürlich kein einziges Byte der Kommunikation entschlüsselt kriegen – Surfer allein über die aufgerufenen Websites individuell zu identifizieren.

In der Tat, das kann klappen – man hat ja Interessen, die man verfolgt. Neben den Gegenmaßnahmen, die Golem da anpreist…

Wer seine IP-Adresse häufig ändert und nach jeder Änderung andere Webseiten ansteuert, senkt die Trefferquote der Analysesoftware. Eine weitere Schutzmöglichkeit besteht darin, verschiedene Proxys für verschiedene Aktivitäten zu verwenden.

…fällt mir ganz spontan noch eine weitere ein: Gebt diesen Profilerstellern doch jede Menge Daten, damit sie auch etwas zum Analysieren haben!

Es reicht wohl erstmal hin, wenn ein nennenswerter Anteil des Traffics aus völlig zufällig ausgewählten Websites besteht. Und damit es auch wirklich schön zufällig ist, kann man ruhig dem Computer die Auswahl überlassen.

Auf meinem Debian habe ich zum Beispiel eine hübsche Wörterbuchdatei, die aus über 300.000 Wörtern besteht. Ideal, um eines davon zufällig auszuwählen, es als Suchbegriff für Google zu verwenden und zufällig fünf Links aus dem Suchergebnis auszuwählen und anzusurfen.

Zum Glück beim Umsetzen dieser einfachen Idee ist fast alles fertig, was ich dafür brauche – unixoide Systeme sind ja nicht gerade arm an nützlichen, kleinen Tools. Für die Google-Suche und das Ansurfen der gefundenen Websites nehme ich meinen für viele derartige Aufgaben unentbehrlichen lynx, und das Extrahieren des gewünschten Wortes lässt sich sehr bequem mit dem ollen sed erledigen.

Das Skript habe ich aus Bequemlichkeit schnell in Perl gehäckselt – es wäre auch als Shellskript möglich gewesen, aber etwas schwieriger:

#!/usr/bin/perl
# -*- coding: utf-8 -*-
########################################################################
#
# randsurf.pl
# Automatisiertes zufälliges Surfen
#
# Voraussetzungen:
# - lynx
# - Übliche Unix-Utilites wie wc und sed
#
# Das hat beides jeder, der ein richtiges Betriebssystem hat.
#
########################################################################
#
# Elias Schwerdtfeger, http://www.tamagothi.de/
# Lizenziert unter Piratenlizenz - licensed under the terms of the 
# pirates' license - SHARE AND ENJOY, BUT DON'T SUE ME!
#
########################################################################

use strict;
use warnings;


# Eine Datei mit einer Wortliste, jede Zeile ein Wort. Hier kann 
# natürlich auch eine eigene Datei verwendet werden.

my $wordfile = '/usr/share/dict/words';


# Ermitteln eines zufälligen Wortes aus der Datei. Alles, was man
# dafür braucht, hat ja schon das freundliche Betriebssystem, wenns
# denn kein Winhose ist.

my $wordcount = `wc -l $wordfile`;
$wordcount =~ s/[^0-9]//g;
my $randindex = int(rand($wordcount)) + 1;
my $randword = `sed -n ${randindex}p $wordfile`;


# So, jetzt machen wir damit eine Guhgell-Suche

my $p = `lynx -dump -listonly -nonumbers 'http://www.google.com/search?q=$randword'`;
my @lines = split /\n/, $p;


# Alles, was kein Link ist oder was ein Link auf Guhgell ist, wird
# entfernt.

@lines = grep(/^http\:/, @lines);
@lines = grep(!/google/, @lines);


# @lines ist jetzt ein Array mit den URLs, die Google als Suchergebnis
# ausgespuckt hat. Nehmen wir doch mal fünf willkürliche URLs raus und
# surfen die an

my $nlines = int(@lines);
for (my $i = 0; $i < $nlines; ++$i)
{
    my $j = int(rand($nlines));
    my $tmp = $lines[$i];
    $lines[$i] = $lines[$j];
    $lines[$j] = $tmp;
}
my $maxsurf = $nlines > 5 ? 5 : $nlines;
for (my $i = 0; $i < $maxsurf; ++$i)
{
    my $forget = `lynx -dump -nolist '${lines[$i]}'`;
    # Wer sehen will, was er da angesurft hat, könnte es ausgeben
    # print "$forget\n\n";
    # Damit es realistischer aussieht, könnten wir Pausen machen...
    # sleep(rand(30)+rand(30)+30);
}

# Wer jetzt noch Lust darauf hat, der kann dieses einfache Verfahren
# erheblich verbessern, etwa durch das Versenden obskurer Referer...
# Have fun!

Eine Anpassung an individuelle Wünsche ist schnell gemacht, wenn man ein wenig Perl kann. Wer regelmäßig mit Tor unterwegs ist und nicht getrackt werden möchte, wird sich dieses Skript vielleicht in die crontab schreiben wollen, um es in regelmäßigen Abständen aufzurufen. Dabei empfiehlt sich dann noch ein bisschen »Verwürfelung«, damit dies nicht zu allzu auffälligen und leicht filterbaren Mustern führt. Wenn man es jede Minute aufruft, sollte vielleicht ein…

exit if(rand(10) > 8);

…an den Anfang gesetzt werden, damit es im Schnitt nur jedes fünfte Mal ausgeführt wird. Und dass der Aufruf immer zur vollen Minute erfolgt, kann auch verräterisch sein, lässt sich aber durch ein schlichtes…

sleep(rand(60));

…am Anfang des Skriptes wirksam verhindern. Jeder, der kurz darüber nachdenkt, wird selbst auf weitere Verbesserungen kommen.

Sollen die doch mal ihr Profiling mit lauter zufällig angesurften Websites machen, in denen die »Nutzinformation« erst einmal gesucht und ausgefiltert werden muss! Wer dann richtig kreativ wird, denkt sich bestimmt auch etwas aus, um die Nutzinformation dünner zu machen – zum Beispiel ist die einseitige Benutzung von Google zum Ermittlen von zufälligen Websites eine echte Schwachstelle in diesem Skript, die es Untersuchern leicht macht. Und der Lynx sollte ruhig seinen User-Agent ändern.

Wer keine Lust hat, das kleine Skript übers Clipboard zu transportieren: Hier ist der Download.

Eher für »normale« Menschen gedacht und problemlos unter Windows laufend ist übrigens das Firefox-Plugin »Track Me Not«, dass ebenfalls eine Reihe sinnloser Suchen erzeugt.

Abschließende Anmerkung: Mir geht dieses ganze User-Tracking und überhaupt jede Bestrebung zur Totalüberwachung an allen möglichen und unmöglichen Stellen sowas von auf den Keks! Dass hier die Interessen von repressiven Staaten und von Marketingärschen in die gleiche Richtung gehen, ist ein gutes Spiegelbild, dass diese beiden Gruppen den gleichen Allheitsanspruch und Kontrollwahn haben – und sich gefälligst zur Hölle scheren sollen.

Dieser Beitrag wurde unter Technisches abgelegt und mit , , , , , verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.