Eine Website auf die unerlaubte Verwendung von externen Diensten zu untersuchen ist nicht sehr schwer, denn jeder Web-Browser hat eingebaute Entwicklertools, mit denen man Schnüffel-Dienste erkennen kann (Vollständige Beschreibung in unserem E-Book ).
Mobile apps are a bit different - they also use external services, but this goes under the radar of most privacy advocates, because it's less obvious how to investigate apps (and that it's even possible). So in this article, you'll learn the following with detailed step-by-step instructions:
- Welche kostengünstige Software Sie verwenden können, um eine App zu untersuchen
- Wie Sie Ihr iPhone so konfigurieren, dass alle Netzwerkaufrufe durch diese Software überwacht werden
- Wie Sie schließlich damit die externen Dienste, die die App verwendet, identifizieren
- Und welche Datenschutzverletzungen wir am Beispiel der App von Miles & More gefunden haben
Dabei fokussieren wir uns zunächst auf iPhone-Apps und betrachten Android in einem separaten Artikel, denn die Android-Plattform hat gewisse technische Eigenheiten.
Schritt 1: Datenverkehr umleiten
Eine App greift im Normalbetrieb entweder über ein WLAN oder das mobile Netz auf das Internet zu. Für unsere Überprüfung unterbrechen wir diese direkte Verbindung und schalten einen sogenannten “Intercepting Proxy” dazwischen. Dieser Proxy (der auf Ihrem Desktop oder Notebook läuft) erlaubt es dann, einzelne Netzwerkaufrufe zu erkennen, und durch diese den Datentransfer zu externen Diensten nachzuweisen.
Zum Start benötigen Sie ein WLAN-Netzwerk mit dem sich Ihr Smartphone verbinden kann, außerdem muss der Computer das gleiche Netzwerk verwenden (also bspw. im gleichen WLAN-Hotspot angemeldet sein – aber auch eine Kabelverbindung funktioniert).
Sie müssen im ersten Schritt die IP-Adresse Ihres Computers ermitteln. Wenn es sich um einen Mac handelt, dann finden Sie diese Information in der Systemsteuerung unter “Netzwerk”. Bei Windows öffnen Sie im Startmenü den Punkt “Netzwerkeigenschaften”:
Diese IP-Adresse können Sie nun verwenden, um Ihr Smartphone zu zwingen, allen Datenverkehr über Ihren Computer abzuwickeln. Öffnen Sie dazu die Einstellungen des iPhones und wählen Sie den Punkt “WLAN”.
Klicken Sie das Info-Icon neben dem gerade verbundenen WLAN-Hotspot an.
Gehen Sie ans Ende des Dialogs und wählen Sie “Proxy konfigurieren”.
Geben Sie dort folgende Angaben ein:
- Wechseln Sie von “Aus” in “Manuell”
- Für “Server” geben Sie die IP-Adresse Ihres Computers ein
- Für “Port” geben Sie 8888 ein
- Vergessen Sie nicht, am Schluss mit “Sichern” zu bestätigen.
Ihr iPhone hat nun zunächst keine Verbindung mehr zum Internet – wir müssen im zweiten Schritt den Proxy installieren.
Wenn Sie Ihr iPhone wieder “normal” verwenden möchten, dürfen Sie nicht vergessen, diesen Dialog noch einmal aufzurufen und von “Manuell” auf “Aus” zu wechseln, und zu sichern. Denn sobald Sie Ihren Computer ausschalten, hätte Ihr iPhone sonst keine Verbindung mehr zum Internet.
Schritt 2: Charles Proxy installieren
Es gibt verschiedene Tools, die als Intercepting Proxy eingesetzt werden können. Ich selber verwende das kommerzielle Produkt “Charles”, denn es hat den Vorteil, dass es leicht bedienbar ist und sowohl für Windows als auch Mac erhältlich ist. Es gibt eine kostenfreie Testversion, die Vollversion kostet erschwingliche 50$. Laden Sie den Installer hier herunter und folgen Sie den Hinweisen für die Installation: https://www.charlesproxy.com/download/
Unmittelbar nach dem Installieren werden Sie bereits sehen, wie Netzwerk-Requests einlaufen und angezeigt werden. Das liegt daran, dass Charles automatisch auch den gesamten Netzwerkverkehr des Mac- bzw. Windows-Computers umleitet, was für unseren Zweck eher störend ist. Klicken Sie deshalb im Menü auf “Proxy” und entfernen Sie das Häkchen bei “Windows Proxy” bzw. “macOS Proxy”.
Wenn Sie nun eine App im iPhone verwenden (etwa Safari), dann zeigt Charles zunächst einen warnenden Dialog. Klicken Sie auf “Allow”, um dem Smartphone den Zugriff auf Charles zu erlauben.
Nun sollten Sie sehen können, wie zusätzliche Requests in die Liste einlaufen – aber die App wird auf dem Smartphone vermutlich Fehler anzeigen und nicht korrekt funktionieren. Der Grund dafür ist, dass ein zwischengeschalteter Proxy von Ihrem Smartphone als “Man-in-the-Middle”-Angriff eingestuft wird, wie er auch von Hackern eingesetzt wird. Um exakt solche Angriffe abzuwehren, wurden SSL-Zertifikate entwickelt. Sie müssen deshalb Ihr Smartphone dazu bringen, den Charles-Proxy als vertrauenswürdig einzustufen, oder technischer: Sie müssen das Root-Zertifikat von Charles zu den vertrauenswürdigen Zertifikaten im iPhone hinzufügen.
Schritt 3: Dem Charles-Root-Zertifikat vertrauen
Eine Beschreibung finden Sie auch auf der Charles-Website ( https://www.charlesproxy.com/documentation/using-charles/ssl-certificates/ ) , wir spielen den Prozess hier Schritt für Schritt durch:
Öffnen Sie im Safari auf dem iPhone die URL https://chls.pro/ssl . Es öffnet sich ein Download-Dialog für ein Konfigurationsprofil, den Sie mit Klick auf “Zulassen” bestätigen müssen.
Wechseln Sie dann zu “Einstellungen”, und dort zu “Allgemein / VPN & Geräteverwaltung”. Klicken Sie dort auf das geladene Profil von Charles Proxy.
Klicken Sie auf “Installieren”. Sie müssen dann den Geräte-Code eingeben und in dem dann erscheinenden Dialog noch einmal auf “Installieren” klicken.
Wechseln Sie dann zu “Einstellungen / Info / Zertifikatsvertrauenseinstellungen”. Klicken Sie auf den Schiebeschalter bei “Charles Proxy CA” so dass dieser grün wird und im dann erscheinenden Warndialog auf “Weiter” – damit ist die Konfiguration auf Seite des iPhones abgeschlossen.
Schritt 4: Charles Proxy konfigurieren
Es müssen nun noch einige Einstellungen im Charles Proxy durchgeführt werden, damit Sie Charles optimal nutzen können.
Um zu verhindern, dass Netzwerkzugriffe des Computers von Charles angezeigt werden, öffnen Sie in Charles zunächst den Menüpunkt “Proxy / Proxy Settings”. Klicken Sie dort auf den Button “macOS” bzw. “Windows”.
Entfernen Sie dort alle Haken.
Damit Sie die Details der SSL-verschlüsselten Netzwerkzugriffe sehen können öffnen Sie nun den Menüpunkt “Proxy / SSL Proxy Settings”. Klicken Sie dort den Button “Add” und geben Sie in dem kleinen Dialog, der sich öffnet, die Eingabe wie im Bild unten ein. Bestätigen Sie mit “OK”.
Damit störende Zugriffe des Smartphones zu Apple-Servern unterdrückt werdem öffnen Sie dann den Menüpunkt “Proxy / Recording Settings / Exclude”. Fügen Sie dort zwei Einträge hinzu für *.apple.com und *.icloud.com indem Sie auf “Add” klicken und den Dialog wie unten im Bild ausfüllen.
Schritt 5: Die Charles Proxy Oberfläche
Jetzt kann es endlich losgehen. Die Oberfläche von Charles Proxy sieht auf den ersten Blick sehr technisch und dementsprechend abschreckend aus, Sie können sich aber auf einige wenige Punkte beschränken.
- Ein Klick auf das Besen-Symbol leert die Liste der Requests. Das ist nützlich um den Überblick in einer Testsitzung zu behalten.
- Ein Klick auf den roten Kreis stoppt die Aufnahme, ein weiterer Klick startet sie wieder.
- Dieser Umschalter schaltet zwischen zwei Darstellungsweisen der einlaufenden Requests hin und her. Wir lassen in unserem Beispielen den Schalter auf “Sequence” weil dann der zeitliche Zusammenhang besser erkennbar ist.
- Im oberen Bereich des Inhaltsfenster ist die Liste der Netzwerkrequests zu sehen, wobei oben die älteren und unten die neueren stehen. Für die Auswertung ist die Spalte “Host” am relevantesten.
- Diese Menüleiste erlaubt unterschiedliche Darstellungsweisen der Ergebnisse. Sie erscheint, sobald ein Request durch Anklicken ausgewählt wurde (im Screenshot blau hinterlegt). Wählen Sie am besten “Contents” aus
- – 9.: Wenn Sie “Contents” ausgwählt haben, dann werden hier die Inhalte der Netzwerkanfrage und der Antwort des Servers angezeigt. In den Menüs 6. und 8. kann man das Anzeigeformat auswählen.
Einige praktische Tipps
- Beobachten Sie zum Start, ob Netzwerkrequests einlaufen, ohne dass das iPhone mit dem Computer verbunden ist, indem Sie im iPhone-Menü “Einstellungen / WLAN” die Proxyeinstellungen aus Schritt 1 rückgängig machen und auf “Aus” stellen. Löschen Sie die Liste und warten Sie einen Moment. In der Liste sollten keine weiteren Requests auftauchen – damit können Sie sicherstellen, dass keine Aufrufe aus dem Computer zwischen die aus dem Smartphone geraten.
- Vermutlich können Sie nur Apps aus dem Appstore installieren, wenn die Proxyeinstellungen im iPhone auf “Aus” stehen (zumindest ist das bei mir so). Laden Sie also zunächst die Apps, die Sie benötigen, und konfigurieren Sie dann den Proxy im iPhone wie am Ende von Schritt 1. beschrieben.
- Es ist leider nicht möglich, nur den Netzwerkverkehr einer bestimmten App zu überwachen, vielmehr sehen Sie in Charles alles, was insgesamt vom Smartphone aufgerufen wird. Sie sollten deshalb zunächst sämtliche Apps beenden und beobachten, welche Aufrufe das Smartphone trotzdem noch macht – etwa weil automatisch Mails abgerufen werden.
- Sie müssen die Ergebnisse mit einer gewissen Skepsis betrachten, weil jederzeit Requests an Mailserver o.Ä. dazwischengeraten können. Wiederholen Sie eine Untersuchung am besten um Ergebnisse zu verifizieren.
Schritt 6: Eine App untersuchen
Nach der zugegebenermaßen etwas umständlichen Vorbereitungsphase (die Sie zum Glück nur einmalig durchlaufen müssen) können Sie nun endlich eine mobile App testen. Als Beispiel schauen wir uns in diese Artikel die Miles & More app aus dem Lufthansa-Konzern an.
Laden Sie dazu die App aus dem Appstore (wenn Sie sie nicht ohnehin schon haben), öffnen Sie sie aber noch nicht. Konfigurieren Sie dann den Proxy im iPhone wie in Schritt 1. beschrieben, so dass das iPhone mit dem Computer verbunden wird. Öffnen Sie als kurzen Test den Safari und laden Sie eine Seite – Sie sollten dann Requests einlaufen sehen. Beenden Sie Safari (und alle anderen Apps) wieder.
Löschen Sie nun die Liste in Charles durch Klick auf den Button 1. und öffnen Sie die Miles & More App. Es erscheint ein Startfenster, in dem Sie sich als Gast einloggen können. Wählen Sie diese Option, und die App öffnet eine Übersichtsseite.
Stoppen Sie die Aufnahme in Charles durch Klick auf den roten Button (2.). Die Liste sieht in meinem Fall nun wie folgt aus:
Es sind insgesamt 4 verschiedene Hostnamen zu sehen. Würden wir weitere Funktionen der App aufrufen, bspw. Registrierung, Login oder Kauf, so würden vermutlich weitere Hosts dazukommen. Für einen ersten Check sollen diese vier aber genügen.
Ob hier eine Verbindung zu externen Diensten aufgebaut wird (und zu welchen) kann nun durch Betrachten der Hosts bzw. der Domains ermittelt werden. Was man schon ohne weitere Prüfung feststellen kann: Der Verbindungsaufbau zu den Diensten (und damit das Übertragen personenbezogener Daten in Form mindestens der IP-Adresse) geschah ohne Einwilligung, denn es wurde kein Consent-Banner oder eine Information zu externen Diensten angezeigt.
Schauen wir uns die einzelnen Hosts von oben nach unten an:
assets.adobedtm.com
Öffnen Sie im Browser auf dem Computer eine Suchmaschine Ihrer Wahl (im Beispiel verwende ich Google) und geben Sie im Suchschlitz “assets.adobedtm.com” ein, und zwar mit Anführungszeichen, wie im Screenshot zu sehen:
In Google erscheinen eine Reihe von Suchergebnissen, unter anderem eine Diskussion aus einem Forum von Adobe:
Mit ein wenig weiterer Recherche ist leicht zu ermitteln, dass DTM für “Adobe Dynamic Tag Management” steht, den Tag Manager von Adobe, vergleichbar mit dem Google Tag Manager. Man könnte diesen Dienst als “Funktional” einstufen, allerdings ist Adobe ein Unternehmen aus den USA, es werden hier also Daten in einen unsicheren Drittstaat übertragen.
Die Datenschutzerklärung ist in der App nicht ganz leicht zu finden (3 Klicks vom Homescreen entfernt) und auf mehrere Seiten verteilt, ein Hinweis auf den Dienst ist in der Datenschutzerklärung nicht zu finden.
dpm.demdex.net
Eine analoge Suche nach dieser Domain zeigt, dass demdex.net für den “Adobe Audience Manager” steht. Folgende Beschreibung lässt sich dafür finden:
Audience Manager helps you bring your audience data assets together, making it easy to collect commercially relevant information about site visitors, create marketable segments, and serve targeted advertising and content to the right audience.
Dieser Dienst dient also zum personalisierten Ausspielen von Werbung – also keinesfalls funktional, und wieder verbunden mit einer Datenverarbeitung in unsicherem Drittstaat. Ein Hinweis auf den Dienst ist in der Datenschutzerklärung nicht zu finden.
Wenn man den Aufruf in der Liste anklickt, dann zeigt sich auch, dass kryptisch aussehende Daten im Request zum Dienst übertragen werden, und dieser mit Daten antwortet (was die Werte bedeuten könnte man durch eine Google-Recherche sicher ebenfalls ermitteln):
firebaselogging-pa.googleapis.com
Dieser Aufruf gehört, wie unschwer zu erkennen ist, zu Google. Eine Recherche zeigt auch schnell, dass Firebase ein Paket von Diensten für die Entwicklung von mobilen Apps ist. Einen exakten Treffer, der diesen Aufruf erklärt, konnte ich nicht finden, deshalb habe ich ihn etwas vereinfacht und versuchsweise nach firebaselogging.googleapis.com . Dafür gab es folgenden Treffer in einem Google-Diskussionsforum:
Hier geht es also um “Crashdetection”, d.h. der Dienst protokolliert zum Zweck der Qualitätssicherung abgestürzte Apps. Das kann als funktional eingestuft werden, aber leider findet auch hierbei eine Datenübertragung aus der EU heraus statt. Ein Hinweis auf den Dienst ist in der Datenschutzerklärung nicht zu finden.
milesandmore.sc.omtrdc.net
Für diesen Hostnamen gibt es keinen exakten Treffer, deshalb suchen wir versuchsweise nach sc.omtrdc.net was sich sehr schnell als “Adobe Analytics” herausstellt, den Webanalyse-Dienst von Adobe. Nicht wirklich notwendig, und auch hier findet eine Datenübertragung in die USA statt. Die Datenschtzerklärung informiert über Adobe Analytics, ein Hinweis, auf welcher Rechtsgrundlage die Verarbeitung erfolgt, fehlt aber.
Und was ist mit Cookies?
Das Speichern und Lesen von Daten auf dem Endgerät läuft bei nativen mobilen Apps anders ab als im Web-Browser. In den Netzwerkrequests werden Daten als “Nutzlast” übergeben, die typischerweise in einer Datenbank auf dem Smartphone gespeichert werden. Das Speichern kann aber nicht ohne Weiteres mit Charles beobachtet und nachgewiesen werden.
Es gibt eine Ausnahme: eine App kann ein Browserfenster einbinden, einen sogenannten “Webview”. Dieser verhält sich genau so wie ein Browser, auch was Cookies angeht. Man kann das Setzen und Lesen von Cookies in den Netzwerkrequests sehen, es ist aber etwas umständlich – und man kann davon ausgehen, dass im nativen Teil, wie oben beschrieben, deutlich mehr Daten gespeichert werden als durch Cookies im Webview. Da wir also ohnehin nie das gesamte Bild überblicken können, verzichten wir hier auf eine Untersuchung der Cookies.
Fazit
Die App von Miles & More lädt allein beim Öffnen der Startseite ohne Einwilligung vier Dienste aus den USA, davon zwei aus dem Bereich Werbung bzw. Analytics. Ob sich diese Zahl erhöht wenn weitere Funktionen der App untersucht werden ist offen (aber nicht unwahrscheinlich). Hier würde man auf jeden Fall ein vorgeschaltetes Consent-Banner erwarten. Auch was die Erfüllung von Informationspflichten angeht gibt es jede Menge Luft nach oben. Insgesamt also ein eher mäßiges Eregbnis für die Miles & More App (Stand 28. Juli 2022).
Autor: Eckhard Schneider