Privacy@Home

From
Jump to navigation Jump to search

Motivation

Mit der zunehmenden Zahl an IoT-Geräten stehen immer mehr Features für den Anwender zur Verfügung, die ihm ein hohes Maß an Komfort ermöglichen. Gleichzeitig sammeln diese IoT-Geräte Anwendungsdaten über den Nutzer, deren Weitergabe oder sogar Erfassung aus Sicht der Privatsphäre bedenklich sein kann. Um einen Kompromiss aus Nutzbarkeit und Datenschutz zu erreichen, wird in dem hier bearbeiteten Thema ein Telefunken XF32B301 Smart-TV mit Firmware-Version 2.32.4.0 im Hinblick auf Inter- und Intranetkommunikation untersucht, sodass im Anschluss passende Maßnahmen zur Kontrolle der Aufrufe im und aus dem Heimnetz getroffen werden können.

Setup

Das Testobjekt ist wie auch der Laptop über ein Ethernet-Kabel mit dem Router (Fritzbox 7580) verbunden, der über einen angebundenen UMTS-Stick Internetzugriff hat. Zum Starten der Aufzeichnung der Datenpakete durch die Fritzbox navigiere ich zu fritz.box/support.lua, klicke auf den Link "Paketmitschnitte" und starte für das vorgesehene Interface die Aufzeichnung durch den Klick auf "Start", in meinem Fall eth3, da dort das LAN-Kabel des Telefunken Smart-TVs angeschlossen ist. Durch "Stopp" kann der Mitschnitt beendet werden, sodass er in Wireshark ausgewertet werden kann.

Versuchsaufbau

Erkenntnisse

In diesem Kapitel wird beschrieben, welche Zugriffe seitens des Smart-TVs auf das Internet und Geräte im Heimnetzwerk erfolgen. Zusammenfassend lässt sich sagen, dass

Header Etag?

Internet

In der folgenden Tabelle werden die wenigen fernseherspezifischen Domains jeweils mit vermutlicher Bedeutung aufgelistet. Senderspezifische URLs wurden in das Java-Tool im Bereich "Filterliste verwenden" aufgenommen, wo sich Aktivität und Rolle von selbst klären:

Domain Aufgerufen bei Aktivität: Vermutliche Rolle
www.portaltv.tv Fernseher anschalten Auf Basis der Erreichbarkeit dieser Domain schlussfolgert der Smart-TV, dass er online ist oder nicht. Wird sie also blockiert, kann kein Online-Feature aufgerufen werden, auch wenn andere Domains verfügbar wären, da man in den jeweiligen Menüpunkt gar nicht erst gelangt. Im Request wird eine Textdatei angefordert, die 2048-mal das Zeichen "x" beinhaltet, nämlich www.portaltv.tv/assets/2kb.txt.
mb100.portaltv.tv Erstmalige Zustimmung zur Datenschutzrichtlinie, Menüpunkt "Menu -> Internet -> Smart TV" Bei der Zustimmung zur Datenschutzrichtlinie erfolgen verschlüsselte Requests an diese Domain, in denen vermutlich Anmeldedaten eingegeben werden, um die Zustimmung an einem Ort zu hinterlegen. Der angesprochene Menüpunkt ist ein Ort, von dem aus auf dem Gerät verfügbare Apps sowie der App Store selbst gestartet werden können.
vstlsrv.com Suche nach und Download von Firmware-Update, Fernseher anschalten Beim Anschalten erfolgt ein Request an http://vstlsrv.com/swtest/dial_appname_to_prefixurl_list.xml, was sich von denen beim Firmware-Update unterscheidet. Diese erfolgen nämlich unverschlüsselt über FTP, sodass auch die Logindaten im Klartext sichtbar sind. Der Smart-TV durchstöberte nacheinander Dateien namens "ping.me" sowie Informationsdateien über die Firmware, die zur Verfügung steht in verschiedenen Verzeichnissen, z.B. ftp://vstlsrv.com/6841_001/ping.me und ftp://vstlsrv.com/6841_001/0009df/6841.dcf, wobei das Verzeichnis 6841_001 zu 6841_002 gewechselt wird, das dann zu 6841_003 usw., bis das neu anvisierte Verzeichnis nicht existiert.
europe.pool.ntp.org, go.microsoft.com, secureclock.playready.microsoft.com Fernseher anschalten Beim Start des Geräts werden diese Domains zur Zeitsynchronisation aufgerufen. Bei Ersterem wird dafür NTP verwendet, die zweite Domain gehört zu http://go.microsoft.com/fwlink/?LinkId=149408, die auf die dritte Domain weiterleitet (wegen 302 Moved Temporarily), wo ein HTTP-POST-Request zur Abfrage der Uhrzeit verwendet wird.

Beim vorinstallierten Webbrowser handelt es sich, wenn die Meldung beim Schließen des Webbrowsers wahrheitsgemäß ist, um einen Opera-Browser. Im Gegensatz zu anderen Smart-TVs wie dem LG 42LM670S-ZA <ref>Daniel Rychlewski - Informationsfluss eines Smart-TVs aus dem Heimnetzwerk S. 31, Bachelorarbeit, Humboldt-Universität zu Berlin, Institut für Informatik, Lehrstuhl Systemarchitektur, 2017.</ref> werden selbstsignierte Zertifikate nicht akzeptiert und der Nutzer erhält eine angemessene Warnung. Eine solche Warnung bekommt er auch, wenn das Zertifikat für eine andere Website ausgestellt worden ist. Das hat sich beim Aufruf von Testseiten gezeigt, die ursprünglich für einen Samsung Smart-TV aufgesetzt worden sind, nämlich:

https://ssl2.wsp.lab.sit.cased.de/ - valides Zertifikat für einen anderen Host

https://ssl3.wsp.lab.sit.cased.de/ - selbstsigniertes Zertifikat <ref>Marco Ghiglieri - Incorrect HTTPS Certificate Validation in Samsung Smart TVs S. 6, Abgerufen am 07. Oktober 2017.</ref>

Heimnetz

Im Heimnetz sucht der Smart-TV über UPnP automatisch nach Netzwerkgeräten. Dazu sucht es zuvor mit SSDP nach UPnP-Geräten im lokalen Netzwerk. Über diese Funktion ist es z.B. möglich, Audio- und Videodateien der Fritzbox, die mit der FritzNAS über einen eingebauten Medienserver verfügt, auf dem Fernseher auszuwählen, damit sie auf dem Fernseher abgespielt / angezeigt werden. Ebenfalls ist es möglich, vom Laptop aus (siehe Versuchsaufbau) Mediendateien an den Smart-TV zu senden, damit sie dort wiedergegeben werden, sowie den Smart-TV über Miracast (ehemals Intel Wireless Display, was Windows 10 aber nativ über Miracast unterstützt) als Zweitbildschirm für den Laptop zu verwenden.

Automatische Suche nach Medienservern im Heimnetzwerk

Gegenmaßnahmen

Filterliste verwenden

Das folgende Java-Tool fasst benötigte und nicht benötigte Domains je nach Zweck zusammen, sodass sich der Anwender eine passende Liste an Domains erstellen lassen kann.

import java.util.Scanner;
import java.io.FileWriter;
import java.io.IOException;

// Das Tool generiert je nach Eingabe im selben Verzeichnis eine Black- oder Whitelist fuer einen Telefunken XF32B301 Smart-TV mit Firmware-Version 2.32.4.0. 
public class TelefunkenGenerator {
	
	/* Der Scanner liest die Eingaben des Nutzers in der Kommandozeile. Bei einem "j" erfolgt der Eintrag in die Datei und bei einem "n" nicht.
	 * Sonstige Eingaben zaehlen als unerwartet und sorgen dafuer, dass das Programm beendet wird. */
	private final Scanner scanner = new Scanner(System.in);
	// Der FileWriter schreibt die Domains in eine Datei, sofern auf die Datei schreibend zugegriffen werden kann.
	private FileWriter writer;
	
	/**
	 * In der Main-Methode wird je nach Wunsch des Nutzers eine Blacklist oder Whitelist generiert, die seinen Beduerfnissen entspricht. 
	 * @param args Zu diesem Zweck irrelevante Kommandozeilenparameter
	 */
	public static void main(String[] args) {
		TelefunkenGenerator generator = new TelefunkenGenerator();
		generator.starteTool();
		
		String ersteEingabe = generator.scanner.next();
		if (ersteEingabe.equals("j")) {
			// Blacklist soll generiert werden
			generator.erstelleBlacklist(generator.scanner);
		} else if (ersteEingabe.equals("n")) {
			// Whitelist soll generiert werden
			generator.erstelleWhitelist(generator.scanner);
		} else {
			generator.beenden("Unerwartete Eingabe. Das Programm wird jetzt beendet", generator.scanner);
		}
	}

	/**
	 * Informiert den Nutzer ueber den Zweck des Tools und fragt danach, welche Filterliste erstellt werden soll.
	 */
	private void starteTool() {
		System.out.println("Dieses Tool erstellt fuer Ihren Telefunken Smart-TV eine Black- oder Whitelist, die in eine Fritzbox importiert werden kann.");
		System.out.println("Soll eine Blacklist (j) oder eine Whitelist (n) erstellt werden? [j/n]");
	}

	/**
	 * Diese Methode fuegt der Black-/Whitelist bei der Eingabe "j" die gewuenschten Domains hinzu, sodass diese blockiert/erlaubt werden.
	 * @param frage An den Nutzer gerichtete Frage, welches Feature verboten (Blacklist) / erlaubt (Whitelist) sein soll
	 * @param fqdn Domains, die fuer das betrachtete Feature relevant sind
	 */
	private void hinzufuegen(String frage, String... fqdn) {
		System.out.println(frage+" [j/n]");
		String eingabe = scanner.next(); 
		if (eingabe.equals("j")) {
			// Nutzer hat bestaetigt, dass die Eintraege aus fqdn hinzugefuegt werden sollen
			for (String domain : fqdn) {
				try {
					writer.write(domain+"\n");
				} catch (IOException e) {
					beenden("Es ist ein Problem beim Schreiben der Datei aufgetreten. Das Programm wird jetzt beendet", scanner);
					return;
				}
			}
		} else if (eingabe.equals("n")) {
			// Kein Eintrag wird hinzugefuegt
		} else {
			beenden("Unerwartete Eingabe. Das Programm wird jetzt beendet", writer, scanner);
		}
	}

	/**
	 * Erstellt im selben Verzeichnis wie dieses Programm eine Blacklist als Textdatei.
	 * @param scanner Wird verwendet, um die Eingaben des Nutzers zu erfahren und passend darauf zu reagieren
	 */
	private void erstelleBlacklist(Scanner scanner) {
		try {
			writer = new FileWriter("Blacklist_" + System.currentTimeMillis() + ".txt");
		} catch (IOException e) {
			beenden("Es ist ein Problem beim Schreiben der Datei aufgetreten. Das Programm wird jetzt beendet", scanner);
			return;
		}

		hinzufuegen("Soll die Nutzung von Online-Features unterbunden werden?",
				"www.portaltv.tv"); // nur wenn beim Anschalten des TVs der Zugriff auf www.portaltv.tv erfolgreich ist, denkt der TV, er sei verbunden mit Internet, ansonsten nicht
		hinzufuegen("Soll der Aufruf der App-Liste, die unter Menu -> Internet -> Smart-TV gefunden werden kann, blockiert werden?",
				"mb100.portaltv.tv"); // fuer Menu -> Internet -> Smart TV muss www.portal.tv und mb100.portaltv.tv aktiviert sein - es wird nämlich mb100.portaltv.tv aufgerufen
		hinzufuegen("Soll die NTP-Zeitsynchronisation verboten werden?",
				"europe.pool.ntp.org",
				"go.microsoft.com",
				"secureclock.playready.microsoft.com");
		hinzufuegen("Sollen Tracking-Webseiten blockiert werden?",
				"de.ioam.de",
				"script.ioam.de",
				"logc406.xiti.com",
				"logc407.xiti.com",
				"www.google-analytics.com",
				"www.googletagmanager.com",
				"79423.analytics.edgekey.net",
				"ma1249-r.analytics.edgesuite.net",
				"ma140-r.analytics.edgesuite.net",
				"de.sitestat.com",
				"tracksrv.zdf.de");
		hinzufuegen("Sollen nicht zwingend notwendige Content Delivery Networks blockiert werden?",
				"maxcdn.bootstrapcdn.com", // für 1-2-3.tv verwendet, aber im Grunde überflüssig
				"cdn-gl.imrworldwide.com");
		
		hinzufuegen("Soll ARD-alpha nicht mehr über das Internet empfangen werden dürfen?",
				"brdashdvbt2-i.akamaihd.net");
		hinzufuegen("Soll 1-2-3.tv nicht mehr über das Internet empfangen werden dürfen?",
				"connect.media-broadcast.com", // die Navigation für freenet connect-Sender
				"freenettvcon07-i.akamaihd.net"); // das eigentliche Hosting der Videodateien
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender Das Erste blockiert werden?",
				"itv.ard.de",
				"itv2.ard.de",
				"hbbtv.daserste.de",
				"www.daserste.de",
				"ctv-videos.daserste.de");
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender ZDF blockiert werden?",
				"hbbtv.zdf.de",
				"www.zdf.de",
				"epg-image.zdf.de",
				"tvdl.zdf.de");
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender rbb Berlin blockiert werden?",
				"hbbtv.rbb-online.de",
				"hbbtv.ardmediathek.de",
				"rbbmediapmdp-a.akamaihd.net",
				"pd.irt.de");
		
		/*hinzufuegen("Sollen Firmware-Updates nicht mehr gesucht und heruntergeladen werden duerfen?",
				"vstlsrv.com"); // Firmware-Update erfolgt ueber FTP, also sinnlos, das zu blockieren in Fritzbox-Filterliste, denn das greift nicht*/
		
		/* Die obige Liste kann bei Bedarf aktualisiert oder hier erweitert werden */

		beenden("Die Blacklist wurde erfolgreich generiert. Das Programm wird jetzt beendet", writer, scanner);
	}

	/**
	 * Erstellt im selben Verzeichnis wie dieses Programm eine Whitelist als Textdatei.
	 * @param scanner Wird verwendet, um die Eingaben des Nutzers zu erfahren und passend darauf zu reagieren
	 */
	private void erstelleWhitelist(Scanner scanner) {
		try {
			writer = new FileWriter("Whitelist_" + System.currentTimeMillis() + ".txt");
		} catch (IOException e) {
			beenden("Es ist ein Problem beim Schreiben der Datei aufgetreten. Das Programm wird jetzt beendet", scanner);
			return;
		}

		hinzufuegen("Soll die Nutzung von Online-Features möglich sein?",
				"www.portaltv.tv");
		hinzufuegen("Soll der Aufruf der App-Liste, die unter Menu -> Internet -> Smart-TV gefunden werden kann, weiterhin funktionieren?",
				"mb100.portaltv.tv");
		hinzufuegen("Soll die NTP-Zeitsynchronisation erlaubt sein?",
				"europe.pool.ntp.org",
				"go.microsoft.com",
				"secureclock.playready.microsoft.com");
		hinzufuegen("Sollen Tracking-Webseiten aufgerufen werden können?",
				"de.ioam.de",
				"script.ioam.de",
				"logc406.xiti.com",
				"logc407.xiti.com",
				"www.google-analytics.com",
				"www.googletagmanager.com",
				"79423.analytics.edgekey.net",
				"ma1249-r.analytics.edgesuite.net",
				"ma140-r.analytics.edgesuite.net",
				"de.sitestat.com",
				"tracksrv.zdf.de");
		hinzufuegen("Sollen nicht zwingend notwendige Content Delivery Networks erlaubt werden?",
				"maxcdn.bootstrapcdn.com", // für 1-2-3.tv verwendet, aber im Grunde überflüssig
				"cdn-gl.imrworldwide.com");
		
		hinzufuegen("Soll ARD-alpha über das Internet empfangen werden dürfen?",
				"brdashdvbt2-i.akamaihd.net");
		hinzufuegen("Soll 1-2-3.tv  über das Internet empfangen werden dürfen?",
				"connect.media-broadcast.com", // die Navigation für freenet connect-Sender
				"freenettvcon07-i.akamaihd.net"); // das eigentliche Hosting der Videodateien
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender Das Erste erlaubt werden?",
				"itv.ard.de",
				"itv2.ard.de",
				"hbbtv.daserste.de",
				"www.daserste.de",
				"ctv-videos.daserste.de");
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender ZDF erlaubt werden?",
				"hbbtv.zdf.de",
				"www.zdf.de",
				"epg-image.zdf.de",
				"tvdl.zdf.de");
		hinzufuegen("Sollen die HbbTV-Features für den Fernsehsender rbb Berlin erlaubt werden?",
				"hbbtv.rbb-online.de",
				"hbbtv.ardmediathek.de",
				"rbbmediapmdp-a.akamaihd.net",
				"pd.irt.de");

		beenden("Die Whitelist wurde erfolgreich generiert. Das Programm wird jetzt beendet", writer, scanner);
	}

	/**
	 * Beendet die Ausfuehrung des Programms mit einer passenden Ausgabe.
	 * @param ausgabe Text, der dem Nutzer zum Abschluss der Programmausfuehrung mitgeteilt werden soll
	 * @param writer Objekt, das vorhin in eine Datei geschrieben hat und hier geschlossen wird
	 * @param scanner Objekt, das vorhin Nutzereingaben erkannt hat und in einer Hilfsmethode geschlossen wird
	 */
	private void beenden(String ausgabe, FileWriter writer, Scanner scanner) {
		try {
			writer.close();
		} catch (IOException e) {
			beenden("Es ist ein Problem beim Schreiben der Datei aufgetreten. Das Programm wird jetzt beendet", scanner);
			return;
		}
		beenden(ausgabe, scanner);
	}
	/**
	 * Hilfsmethode fuer das Beenden des Programms, die aufgerufen wird, wenn kein FileWriter vorhanden ist, den man schliessen koennte, oder ein Problem mit diesem aufgetreten ist.
	 * @param ausgabe Text, der dem Nutzer zum Abschluss der Programmausfuehrung mitgeteilt wird
	 * @param scanner Objekt, das vorhin Nutzereingaben erkannt hat und hier geschlossen wird
	 */
	private void beenden(String ausgabe, Scanner scanner) {
		System.out.println(ausgabe);
		scanner.close();
		System.exit(-1);
	}
}

Ob die Domain vstlsrv.com im Whitelist-Ansatz notwendig ist oder allein die Freigabe von FTP ausreicht, um ein Firmware-Update zu ermöglichen, konnte nicht geprüft werden, da der Smart-TV bereits die aktuellste Firmware hatte und der Installationsprozess daher nicht angestoßen werden konnte. Auf alle Fälle ermöglicht das Tool das Zusammenstellen einer bedarfsgerechten Filterliste, wie in den folgenden beiden Abbildungen sichtbar ist. Der Nutzer gibt seine Wünsche mit "j" oder "n" zur Kenntnis und erhält zum Schluss eine Textdatei, die in eine Fritzbox unter "Internet -> Filter -> Listen" importiert werden kann.

Generieren einer Blacklist
Fertig generierte Blacklist

Gastzugang aktivieren

separierung, dann funzt aber medienstreaming nicht mehr Intranet-Kommunikation verbieten

Netzwerkanwendungen sperren

Die im Versuch verwendete Fritzbox 7580 bietet die Möglichkeit, Netzwerkanwendungen für bestimmte Verbindungsprofile zu blockieren. Dazu kann im Menüpunkt "Filter -> Listen -> Netzwerkanwendungen" eine passende Netzwerkanwendung zum Konfigurieren ausgewählt oder eine neue erstellt werden. Notwendige Angaben für eine Netzwerkanwendung sind Protokoll, Quellport und Zielport. Im Fall des Telefunken Smart-TVs musste die Netzwerkanwendung "FTP-Server" dahingehend geändert werden, dass statt des Quellports, wie es standardmäßig in der Fritzbox konfiguriert ist, der Zielport auf 20-21 gesetzt wird (Quellport auf "beliebig" setzen). Für das passende Zugangsprofil für den Smart-TV kann jetzt unter "Filter -> Zugangsprofile -> (passenden Eintrag bearbeiten) -> Gesperrte Netzwerkanwendungen" der Zugang zur gewünschten Netzwerkanwendung verwehrt werden. In unserem Fall heißt das, dass die Suche nach Firmware-Updates über FTP für den Smart-TV nicht mehr gestattet ist.

Menüpunkt zum Aktivieren des Gastzugangs in der Fritzbox

Fazit

Einzelnachweise

<references />