Android: Bei jeder Standortermittlung erfährt Google eure Position inkl. IMSI-Nummer

Viele Android-Apps nutzen die Standortermittlung, um den genauen oder ungefähren Standort des Benutzers zu bestimmen. Was jedoch den meisten nicht bewusst ist: Jedes Mal, wenn eine solche Standortermittlung durchgeführt wird, erhält Google nicht nur den ungefähren Standort, sondern auch die IMSI-Nummer des Benutzers:

Die International Mobile Subscriber Identity (IMSI; deutsch Internationale Mobilfunk-Teilnehmerkennung) dient in GSM-, UMTS– und LTEMobilfunknetzen der eindeutigen Identifizierung der Netzteilnehmer (interne Teilnehmerkennung).

Die Anfrage zur Standortermittlung muss nicht unbedingt von einer Google-App stammen. Egal welche App diese Anfrage stellt, Google erhält die Daten. Im Folgenden erkläre ich, wie das funktioniert.

Grundlagen: A-GPS | SUPL

Der Standort eines Smartphones kann auf verschiedene Arten ermittelt werden. Die wohl wichtigsten Hilfsmittel dafür sind GPS/GLONASS, WiFi und das Mobilfunk-Netzwerk. Im Falle von GPS ermittelt das Gerät selbst seine Position durch Kommunikation mit Satelliten. Da die Bestimmung des Standorts via GPS vergleichsweise lang dauert, wird zusätzlich Assisted GPS (abgekürzt als A-GPS) eingesetzt. A-GPS ist ein System, das die Zeit bis zum ersten Fixieren eines satellitengestützten Positionierungssystems (GPS) meist deutlich verbessert – die GPS-Positionsbestimmung wird also beschleunigt. Wie funktioniert das? Bei Mobiltelefonen ist anhand der Funkzelle, in der euer Gerät eingebucht ist, der ungefähre Aufenthaltsort bereits bekannt. Via Secure-User-Plane-Location-Protokoll (SUPL) wird nun dieser ungefähre Standort an einen SUPL-Server gesendet, der anhand dieser Informationen den Suchbereich für die Satellitensignale einschränkt und somit eine schnelle GPS-Positionsbestimmung ermöglicht. Die Kommunikation mit dem SUPL-Server erfolgt via TCP/IP über das UserPlane Location Protocol.

Android: supl.google.com

Solch einen SUPL-Server nutzen Android-Systeme, um die Ortungszeit für GNSS (GPS, GLONASS usw.) erheblich zu beschleunigen. Bei Android wird hierbei die Gegenstelle supl.google.com über Port 7275 kontaktiert. An der Stelle wift sich die Frage auf, weshalb supl.google.com als SUPL-Server verwendet wird. Ganz einfach: Euer Mobilfunkbetreiber kann einen SUPL-Server als Teil seiner Betreiberkonfiguration auswählen. Die meisten Anbieter belassen es bei der Standardeinstellung, und diese lautet bei Android – Trommelwirbel: supl.google.com.

Anbei nun ein gekürzter Datenmitschnitt von solch einer SUPL-Anfrage, die bei der Standortermittlung versendet wird:

Internet Protocol Version 4, Src: 10.215.173.1, Dst: 142.251.31.192
Transmission Control Protocol, Src Port: 51516, Dst Port: 7275, Seq: 1, Ack: 1, Len: 71

[...]

OMA UserPlane Location Protocol
    ULP-PDU
        length: 71
        version
            maj: 2
            min: 0
            servind: 0
        sessionID
            setSessionID
                sessionId: 4
                setId: imsi (3)
                    imsi: 62022207547xxxxx
                        IMSI: 26202xxxxxxxxxx
                        [Association IMSI: 26202xxxxxxxxxx]
                            Mobile Country Code (MCC): Germany (262)
                            Mobile Network Code (MNC): Vodafone GmbH (02)
        message: msSUPLSTART (1)
            msSUPLSTART
                sETCapabilities
                    posTechnology
                        .... ..0. agpsSETassisted: False
                        .... ...1 agpsSETBased: True
                        1... .... autonomousGPS: True
                        .0.. .... aflt: False
                        ..1. .... ecid: True
                        ...0 .... eotd: False
                        .... 0... otdoa: False
                        ver2-PosTechnology-extension
                            gANSSPositionMethods: 5 items
                                Item 0
                                    GANSSPositionMethod
                                        ganssId: Galileo (0)
                                        gANSSPositioningMethodTypes
                                            ..0. .... setAssisted: False
                                            ...1 .... setBased: True
                                            .... 1... autonomous: True
                                        gANSSSignals: 80 [bit length 1, 7 LSB pad bits, 1... .... decimal value 1]
                                            1... .... = signal1: True
                                            .0.. .... = signal2: False
                                            ..0. .... = signal3: False
                                            ...0 .... = signal4: False
                                            .... 0... = signal5: False
                                            .... .0.. = signal6: False
                                            .... ..0. = signal7: False
                                            .... ...0 = signal8: False

[...]                    

Problematisch dabei ist, dass bei der Anfrage auch die personenbeziehbare IMSI-Nummer an den SUPL-Server übermittelt wird – was technisch gesehen eigentlich nicht notwendig wäre. Die Kombination der IMSI-Nummer mit den Funkzellen-IDs ermöglicht dem Betreiber eines SUPL-Servers, die relativ genaue Lokalisierung eines Nutzers, sobald das Smartphone eine SUPL-Anfrage initiiert. Das SUPL-Protokoll ist also eigentlich relativ sinnvoll, nur ist fraglich, weshalb hierbei die IMSI-Nummer übermittelt wird – und dann ausgerechnet noch an Google.

Im obigen Datenmitschnitt habe ich die IMSI-Nummer übrigens weitestgehend unkenntlich gemacht. Die 15 Ziffern einer IMSI-Nummer setzen sich wie folgt zusammen:

  • Mobile Country Code (MCC): 262 für Deutschland
  • Mobile Network Code (MNC): 02 für Vodafone
  • gefolgt von der 10-stelligen Mobile Subscriber Identification Number (MSIN): xxxxxxxxxx

Zusammenfassend kann man sagen, dass Google mithilfe der IMSI und der Funkzellen-IDs eine permanente persönliche Kennung erhält und somit bei jeder Standortermittlung in der Lage ist, den Standort zu lokalisieren und aufzuzeichnen.

Wege aus dem Dilemma

Nun stellt sich die Frage, ob man den SUPL-Server nicht einfach ändern kann. Vielleicht einfach auf supl.vodafone.com? Kann man machen, allerdings ist die Adresse lediglich ein CNAME und verweist wiederum auf supl.google.com:

CNAME	
name:supl.vodafone.com
address:
ttl:3560

A	
name:supl.google.com
address:142.250.13.192
ttl:3598

A	
name:supl.google.com
address:142.250.13.192
ttl:3598

Damit ist also nichts gewonnen. Schlimmer: Ohne Root könnt ihr den SUPL-Server nicht anpassen, den euch euer Provider zuweist. Sofern ihr Root-Rechte habt, könnt ihr euch zumindest via dem Magisk-Module SUPL replacer behelfen.

Für alle Android-Nutzer (ohne Root) möchte ich nachfolgend eine Lösung bzw. »Problemumgehung« vorstellen:

Über »Einstellungen -> Netzwerk & Internet -> SIM-Karten -> Zugangspunkte (APNs) -> [aktuell verwendeter APN] -> APN-Typ« lässt sich das Verhalten beeinflussen. Entfernt man unter APN-Typ den Wert supl, wird kein SUPL-Server zur schnelleren Standortbestimmung kontaktiert. Anschließend tippt ihr auf die drei Pünktchen [oben rechts] und speichert die Einstellungen. Die Standortbestimmung erfolgt dann ausschließlich über die GNSS-Schnittstelle, was die Ortungszeit allerdings erheblich verlängert. Dies ist natürlich alles andere als ideal.

Hinweis

Im Forum werden bereits weitere Lösungsmöglichkeiten diskutiert. Eine davon soll bspw. über den Tracking- und Werbeblocker AdAway realisierbar sein.

Entwarnung für GrapheneOS-Nutzer

Lediglich Nutzer des Custom-ROMs GrapheneOS können sich entspannt zurücklehnen. Dort werden alle Anfragen an den SUPL-Server von Google über den Proxy supl.grapheneos.org geleitet und zusätzlich die IMSI-Nummer aus der Anfrage entfernt. Das Resultat: Google kann die Anfrage zur Standortermittlung keinem Nutzer/Gerät zuordnen. Eigentlich genau so, wie es sein sollte.

Du kannst den Blog aktiv unterstützen! Mitmachen ➡