Bei jedem Aufruf einer Webseite oder dem Laden von Bilder o.ä. sendet der Browser in den HTTP Request Headern Informationen wie die bevorzugten Dateitypen, die bevorzugte Sprache oder die User-Agent Kennung mit Informationen über den verwendeten Browser, die Version des Browsers und das Betriebssystem. Firefox 72 für Linux sendet zum Beispiel:
Mozilla/5.0 (X11; Linux x86_64; rv:72.0) Gecko/20100101 Firefox/72.0
Aus unterschiedlichen Gründen wird immer wieder empfohlen, die User-Agent Kennung zu modifizieren (faken). Linuxer und MacOS Nutzer sollen eine Fake für einen Google Chrome (Windows) verwenden, weil dieser Browser häufiger verwendet wird und man damit angeblich besser in der Masse untertaucht. Windows Nutzer sollen als ein Linux OS spoofen, um sich gegen Drive-by-Downloads von Malware zu schützen... u.a.m.
Es ist nahezu unmöglich, die User Agent Kennung eines Browsers plausibel zu faken. Eine unsachgemäße Änderung kann zu einem einzigartigen Gesamtbild führen, welches das Tracking enorm erleichtert und man erreicht das Gegenteil des Beabsichtigten.
Der
Anonymitätstest von JonDonym entlarvt viele Fehler:
HTTP Header: Die einzelnen Browser sind durch individuelle Headerzeilen und -reihenfolge im HTTP-Request beim Aufruf einer Webseite unterscheidbar. Eine Tarnung mit dem User-Agent eines anderen Browsers ist oft leicht als Fake zu identifizieren. Viele Add-ons zum Spoofen der User Agent Kennung machen diesen Fehler.
Das Add-on User-Agent Overrider (Version 0.2.5.1) sollte im Test einen Internet Explorer 9.0 für Win64 faken (MSIE 9.0). Die Header Signatur entlarvt den Browser jedoch als einen Firefox, der sich als IE tarnen will.
Das Add-on Random Agent Spoofer (Version 0.9.5.2) sollte im Test einen Google Chrome Browser 41.0 für Win64 faken. Die Header Signatur entlarvt den Browser ebenfalls als Firefox, der sich tarnen will.
Firefox Release Versionen und Firefox ESR Versionen unterscheiden sich nicht nur in der Version in der User-Agent Kennung sondern auch in anderen Eigenschaften:
- Firefox 68.x ESR und Firefox 72+ unterscheiden sich im HTTP-Accept-Header:
Firefox 68: ...application/xml;q=0.9,*/*;q=0.8
Firefox 72: ...application/xml;q=0.9, image/webp,*/*;q=0.8
- Firefox 45.x ESR und Firefox 47+ unterscheiden sich im TLS Handshake, weil ab Version 47 der Cipher "ChaCha20-Poly1350" für die SSL/TLS-Verschlüsslung unterstützt wird und beim Handshake angeboten wird.
Es ist deshalb nicht sinnvoll, ein User-Agent Fake für Firefox ESR zu aktivieren, wenn man eine Firefox Release Version verwendet. Die resultierende Kombination von Eigenschaften ist selten und erleichtert das Tracking via Fingerprinting. (Aus diesem Grund ist die Option privacy.resistFingerprinting nur für Firefox ESR sinnvoll nutzbar, da damit ein User-Agent Fake als Firefox ESR für Windows aktiviert wird.)
Javascript:
Das Add-on User Agent Platform Spoofer macht aus einem Firefox für Windows einen Firefox für Linux und umgekehrt, um die automatische Installation von Malware im Drive by Download zu erschwerden.
Auch hier ist der Fake nicht vollständig, wie ein kurzer Test unter Linux zeigt. Mit Javascript kann der genutzte Browsertyp und Betriebssystem ermittelt werden:
User-Agent via HTTP Header: | Mozilla/5.0 (Windows NT 10.0; Win64; x64.... |
Browsertyp via Javascript: | Mozilla/5.0 (X11) 20100101/... |
Das gleiche gilt auch für TorBrowser unter Linux, wenn man bei einem Firefox für Linux die Option privacy.resistFingerprinting aktiviert oder "general.useragent.override" verwendet, um ein anderes Betriebssystem vorzutäuschen. Via Javascript kann man diese Fakes recht einfach entlarven.
- CSS Attribute: Durch unterschiedliche Font Rendering Bibliotheken ergeben sich Abweichungen bei CSS Attributen, die mit Javascript ausgelesen werden können. Anhand des CSS-Attributes "line-height" kann man zum Beispiel bei Verwendung hoch- und tiefgestellter Zeichen Schlussfolgerungen über das Betriebssystem ziehen. Es ergeben sich unterschiedliche Werte bei gleichem HTML Code, beispielsweise 19px für Linux, 19.5167px für MacOS und 19.2px oder 20px für Windows.
- Der TorBrowser fakt auch die bevorzugte Sprache des Browsers und verwendet "en-US" für alle Lokalisierungen, um die Anonmymitätsgruppe zu vergrößern. Für einen normalen Firefox ohne Patches von TorProject.org ist das nicht empfehlenswert.
- Es ist einfach plausibler, wenn man mit einer deutschen IP-Adresse beim Besuch einer deutschsprachigen Webseite auch einen deutschen Browser verwendet.
- Mit Hilfe der "JavaScript Localisation API" können diese Fakes bei aktivem Javascript entlarvt werden, wenn man keine zusätzlichen Schutzmaßnahmen implementiert.
Mit der Javascript Funktion "Date.toLocaleFormat()" kann man Datums- und Zeitangaben in die bevorzuge Desktop(!) Lokalisierung des Nutzers umrechnen lassen und das Ergebnis auswerten:
Deutsche Ausgabe eines Datums mit Zeitangabe: 01.02.2013 13:00
US-Englische Ausgabe des Datums (civilian): 2/1/2013 1:00 PM
US-Englische Ausgabe (military, science): 2013-02-01, 1300 hours
Man kann ein US-englisches Verhalten für Javascript Konvertierungen erzwingen, indem man eine neue Variable unter "about:config" anlegt:
javascript.use_us_english_locale = true
- Durch Auswertung der Keyboard Events könnte ein Angreifer die Lokalisierung der Tastatur ermitteln. Die Verwendung eines deutschen Browsers ist in Kombination mit einer deutschen Tastatur ebenfalls plausibler.
Wenn man einen englischen Browser (en-US) haben möchte, dann sollte man einen englischen Browser installieren und den Desktop auf Englisch umschalten.
- Der Browser hängt in viele Dingen von Bibliotheken des Betriebssystems ab. Durch Auswertung einige Seltsamkeiten lässt sich das real verwendete Betriebssystem teilweise identifizieren oder zumindest ein User-Agent Fake entlarven.
Ein Beispiel OS-spezifische Seltsamkeiten ist das Ergebnis der folgenden Javascript Berechnung:
Math.tan(-1e300) = -4.987183803371025 (Windows)
Math.tan(-1e300) = -1.4214488238747245 (Linux, iOS)
- Plug-ins wie das Java Plug-in verraten in der Regel das verwendete Betriebssystem und Browser und können keinen Fake konfigurieren.
Schlussfolgerung
Es ist nahezu unmöglich, die User-Agent Kennung von Firefox plausibel in allen Punkten zu faken. Selbst die Entwickler des TorBrowserBundles, die jahrelange Erfahrungen dabei haben und für alle für Nutzer des Anonymisierungsdienstes den einheitlichen Fingerprint eines englischen Firefox ESR für Windows anstreben, können nicht vollständig verhindern, dass Linux oder MacOS Nutzer erkannt werden können.
Ein unvollständiger Fake-Versuch ist aber ein gutes Identifizierungsmerkmal für Trackingdienste, da man sich von der großen Masse der Surfer stärker unterscheidet.
Eine kleine Ausnahme für Linuxer
Viele Linux Distributionen bauen einen Firefox, der in der User-Agent Kennung des Browser den Namen der Linux Distribution mit einfügt. Hier könnte man einen generischen Firefox für Linux vortäuschen, um die überflüssige Information der genutzten Linux Distribution aus der Kennung zu entfernen indem amn folgenden Wert für
"general.useragent.override" einträgt:
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
Bei jedem Update des Browsers ist die Kennung an die aktuelle Version anzupassen.