So testen wir bei einem Volltest

Bei einem Volltest untersuchen wir eine App im tatsächlichen Betrieb, also während sie benutzt wird. Im Schnelltest analysieren wir dagegen nur die App-Datei, ohne dass die App installiert und benutzt wird.

Testgeräte: Handys und Emulatoren

Zuerst installieren wir die ausgewählte App auf unserem Testgerät. Das Testgerät kann entweder ein echtes Smartphone sein oder eine Emulation, also die Nachbildung eines Smartphones, die auf einem Linux-Rechner läuft.

Als Testgerät nutzen wir das Pixel 2 von Google, da die Software auf diesem Modell dem "ursprünglichen" Android am nächsten kommt. Auch der Emulator simuliert ein Pixel 2, um vergleichbare Ergebnisse zu erhalten.

Was mit dem ursprünglichen Android gemeint ist, erklärt mobilsicher.de hier: Wie viel Google steckt in Android?

Testgeräte: Welche Konfiguration?

Eine App kann sich je nach Smartphone-Modell und Konfiguration unterschiedlich verhalten und auch unterschiedliche Daten übertragen. Unsere Tests können daher immer nur für genau die Konfiguration gelten, mit der sie gemacht wurden.

Erfahrungsgemäß sind die typischen Datenübertragungen bei verschiedenen Geräten und Konfigurationen jedoch sehr ähnlich. Für unsere Testgeräte haben wir die Konfiguration so gewählt, wie sie für die meisten Nutzer*innen typisch ist.

So sind unsere Testgeräte konfiguriert

  • Betriebssystem: Android 8.0
  • Google: Unsere Testgeräte und Emulatoren haben einen funktionsfähigen Play-Store installiert und sind mit einem Google-Konto verknüpft. Die Werbe-Einstellungen im Google-Konto wurden nicht verändert. Das bedeutet, dass personalisierte Werbung erlaubt ist.
  • Abgesehen von den vorinstallierten Google-Apps befinden sich neben der getesteten App keine anderen Apps auf dem Testgerät.
  • Die Standortdienste sind aktiviert.

Interaktion generieren

Als nächstes wird die App von einem automatischen Prozess gestartet. Die Herausforderung ist nun, die App zu "benutzen", damit sie genau die Daten versendet, die sie bei den Endnutzer*innen auch versendet. Einen solchen Alltagsgebrauch zu simulieren, ist bei mehreren tausend Apps nicht von Hand möglich.

Unsere Lösung: Bei Android ist es zum Glück relativ einfach, Interaktionen über ein Computerprogramm zu steuern. Beispielsweise kann man ein Programm laufen lassen, das auf den Bildschirm klickt.

Wichtig: Dabei verändern wir nichts am Programm-Code des Android-Betriebssystems oder an der getesteten App selbst, denn das wäre eventuell rechtswidrig.

Unser Baby: Mad Bot

Mad Bot ist ein Programm, das nicht einfach irgendwohin klickt, sondern das, was auf dem Bildschirm zu sehen ist, vorher analysiert. Dafür, dass er keine richtige Künstliche Intelligenz (KI) ist, kann er ziemlich viel.

Zum Beispiel:

  • Anmeldeseiten erkennen und sich mit einer E-Mail-Adresse und einem Passwort registrieren. (Die Anmeldemöglichkeit mit einem bereits bestehenden Google- oder Facebook-Konto nutzen wir nicht.)
  • System-Anfragen nach bestimmten App-Berechtigungen beantworten.
  • Er "erinnert sich" in der Regel, ob er an einer bestimmten Stelle in einer App schon mal war.

Dabei kann es passieren, dass Mad Bot etwas übermütig wird. Manchmal meldet er zum Beispiel andere Nutzer*innen oder beschwert sich in Service-Apps über Dinge wie nicht geleerte Mülltonnen. Falls wir verwirrte Antworten eines App-Supports erhalten, klärt unser (menschlicher) Aufpasser diese Fälle natürlich.

Manchmal kommt Mad Bot in einer App auch einfach nicht weiter. In diesen Fällen erzeugen wir die Interaktion von Hand.

Gleichzeitig bringen wir dem Bot ständig neue Handgriffe bei (das ist hauptsächlich eine Frage unseres Budgets für Entwickler*innen). Je mehr Tricks er beherrscht, desto mehr Apps kann er alleine benutzen.

Der App-Check ist somit kein fertiges System, sondern wird ständig weiter ausgebaut und verbessert, sodass wir nach und nach immer mehr Apps testen können.

Daten abfangen: Der Mann in der Mitte

Nehmen wir an, eine App läuft auf unserem Testgerät und Mad Bot klickt und scrollt munter darin herum. Dann versendet und empfängt diese App fleißig Daten über das Internet. (Fast alle Apps tun das.)

Wir wollen es genau wissen: Zu welchen Internetadressen nimmt die App Verbindung auf? Und welche Daten verschickt sie? Dazu leiten wir die Internetverbindung unseres Testgerätes über einen Computer um.

Dieser Computer sitzt wie ein "Mann in der Mitte" zwischen dem Testgerät und dem Empfänger der Daten, zum Beispiel dem Server des App-Anbieters. Wir können nun alle Datenpakete sehen, die über unseren Computer in der Mitte geleitet werden und auch, an welche Internetadresse sie geschickt werden.

Die meisten Datenpakete sind während des Transports inzwischen verschlüsselt (TLS-verschlüsselt). Allerdings haben wir unsere Testgeräte so präpariert, dass wir im Besitz des Schlüssels für diese TLS-Verschlüsselung sind und den Inhalt der Daten lesbar machen können.

Nur wenn die Daten noch darüber hinaus verschlüsselt sind, oder wenn zusätzlich so genanntes "Key-Pinning" eingesetzt wird, können wir den Inhalt nicht lesen.

Wichtig: Wir "knacken" dabei keine Verschlüsselung - das wäre verboten. Wir verändern auch nichts an dem Programm-Code des Android-Betriebssystems oder der App, die wir testen. Auch das wäre unzulässig. Wir installieren lediglich ein selbstsigniertes Zertifikat auf unserem Testgerät.

Daten analysieren

Anschließend sortiert, filtert und durchsucht unser System die abgefangenen Informationen nach bestimmten Daten. Das klingt einfach, ist aber ziemlich aufwändig.

Zum Beispiel suchen wir im Datensatz nach der E-Mail-Adresse, mit der sich unser Mad Bot jedes Mal registriert, oder nach der Seriennummer unseres Testgeräts. Die Detektoren, die dabei zum Einsatz kommen, spüren dabei nicht einfach nur diese Zeichenabfolge auf, sondern können auch nach bestimmten Mustern und unterschiedlichen Darstellungsformen suchen.

Eine Liste mit Erklärungen aller Daten, die unsere Detektoren aufspüren, finden Sie hier: Nach diesen Daten suchen wir im Test.

Gleichzeitig kontrollieren wir, ob für die Datenübertragung eine TLS-Verschlüsselung verwendet wurde oder nicht. Das gibt Aufschluss darüber, ob die App sich zumindest an die einfachsten Sicherheitsstandards hält.

Empfänger identifizieren

Um die Testergebnisse später bewerten zu können, wollen wir mehr über die Empfänger der Daten erfahren. Durch die Analyse der Datenpakete bekommen wir zunächst nur eine Internetadresse heraus. Prinzipiell gehen wir davon aus, dass diejenigen, denen die Internetadressen gehören, auch die Empfänger*innen der Datenpakete sind.

Oft erkennt man schon an der Adresse selbst, wem sie gehört. Zum Beispiel muss man nach dem Besitzer von www.google.com nicht lange suchen. Aber wer könnte der Besitzer von dieser Adresse sein?  r2---sn-uxaxjva0hc0n-nm4s.gvt1.com  (Spoiler: auch Google).

Die Internetadressen den richtigen Besitzer*innen zuzuordnen, ist eine der aufwändigsten Arbeiten in unserem Projekt. Vor allem müssen wir herausfinden, ob hinter der Empfänger-Adresse die Betreiber*innen der App selbst stecken, oder ob es sich um eine andere Partei handelt, einen so genannten Drittanbieter.

Was wir unter "Drittanbieter" verstehen und warum es sinnvoll ist, zwischen Anbieter und Drittanbieter zu unterscheiden, erklären wir hier.

Wenn wir zum Beispiel eine App der Firma Nike testen und diese nimmt Kontakt zu der Adresse www.nike.com auf, dann ist ziemlich klar, dass es sich um einen Verbindungsaufbau zum Anbieter der App selbst handelt. Wir haben ein Programm entwickelt, das diese ganz offensichtlichen Fälle automatisch zuordnet.

Außerdem haben wir verschiedene Listen mit bekannten Drittanbietern, zum Beispiel Werbefirmen oder Analysedienstleister, die wir und andere Projekte zusammengetragen haben.

Wenn unser System eine Empfänger-Adresse weder in einer unserer Listen findet, noch dem Anbieter selbst zuordnen kann, dann müssen wir selbst ran: Wir recherchieren dann von Hand, wem die Adresse gehört. Meistens finden wir einen Besitzer und können unsere Listen vervollständigen.

In einigen wenigen Fällen lässt sich der Empfänger nicht ermitteln. In diesem Fall sehen Sie als Empfänger eine (meist ziemlich kryptische) Internetadresse und die Bezeichnung "nicht ermittelbar".

In der Regel können wir aber einen Empfänger ermitteln - fast immer ist das eine Firma. Zu den Empfängern, die bei vielen Apps auftauchen, ermitteln wir dazu auch die Funktion: Ist es ein Werbenetzwerk, ein Kartendienst, ein Cloud-Anbieter? So können Sie sich selber ein Bild davon machen, ob Sie diesen Empfänger problematisch finden oder nicht.

Ergebnisse bewerten

Nicht jede*r Nutzer*in hat Lust und Zeit, sich mit den Einzelheiten von Drittanbietern und dem Datensendeverhalten von Apps auseinanderzusetzen. Für diese Gruppe haben wir ein Bewertungssystem entwickelt.

Damit können Sie anhand unseres Privacy-Scores auf einen Blick sehen, wie die gewählte App in etwa abschneidet.

Welche Faktoren in unser Bewertungssytem einfließen, erklären wir hier: Privacy Score: So bewerten wir.