Hoe ik het smartphone-onderzoek heb uitgevoerd
Vandaag schrijf ik hoe ik de apps op mijn smartphone gaten vertonen en data laten weglekken naar advertentiebedrijven. Daarbij heb ik 85 apps geanalyseerd en gevolgd. In deze update aandacht voor de methoden en programma’s waarmee ik (met hulp van anderen) gedaan heb.
Het onderzoek naar de datastromen van en naar mijn Android-smartphone was behoorlijk uitdagend. Hieronder beschrijf ik welke methoden ik heb gebruikt. Commentaar, suggesties en vragen zijn natuurlijk van harte welkom.
De Android-apps zijn op mijn eigen smartphone getest: een Samsung Note III, met KitKat, de meest recente Android-versie (API level 19). Alle apps zijn getest bij het eerste gebruik.
Ik heb lang moeten zoeken naar een goede manier om het dataverkeer te onderscheppen. Webontwikkelaar Lysander Vogelzang heeft via een eigen proxy-server het dataverkeer onderschept. Momkai-ontwikkelaar Tieme van Veen kwam met een goed alternatief: Charles. Met dat softwareprogramma is het eenvoudig om van een laptop een proxy-server te maken.
Veel apps versturen hun data via een beveiligde verbinding, waarvoor een SSL-certificaat wordt gebruikt. Ik heb een certificaat van Charles op mijn smartphone gezet, waardoor ik van de meeste apps de SSL-verbinding kon breken. Van een aantal apps is dat niet gelukt, zoals Twitter, enkele bankenapps, Gmail en Facebook.
Ik heb mij gericht op de top-zestig gratis apps in de Google Play markt van februari 2014. Alle betaalde apps testen was te duur en tijdrovend. Daarnaast heb ik een oproep gedaan aan de lezers en daar kwamen nog eens zo’n zestig suggesties uit voort, waarvan ik er ongeveer veertig heb gebruikt.
Ik heb ervoor gekozen om alleen Android-apps te testen en niet die van andere hardware-aanbieders (zoals Apple, Blackberry en Microsoft). Ik wil liever uitvoerig zijn, dan alle bestuurssystemen een beetje doorgronden (alles uitvoerig doen is simpelweg te veel werk). Android heeft verreweg het grootste marktaandeel (70 procent), dus is een logischer keuze dan Apple.
Alle apps zijn handmatig getest. Ik heb Charles bij eerste gebruik van de app aangezet. Alle apps zijn een aantal minuten gebruikt. Waar mogelijk is een account aangemaakt en zijn mijn social media (vooral Facebook, soms Twitter) aan de app gekoppeld. De apps kregen toegang tot alle gevraagde telefoonfuncties, zoals gps, contacten, et cetera. Andere apps en processen heb ik zoveel mogelijk uitgeschakeld.
Waar geeft je toestemming voor?
Vervolgens heb ik de Charles-data overgezet in Excel en uit het verkeer de advertentiebedrijven en trackers gefilterd (ruim zestig). Van deze bedrijven heb ik de belangrijkste bepalingen uit de privacy policies opgezocht via Privacychoice.org en Ghostery.com. Ik heb daarbij de adverteerders en trackers gecategoriseerd (volgens de categorisatie van Privacychoice.org). Daarnaast keek ik naar welke data verzameld werden, met wie data zijn gedeeld en hoe lang data worden bewaard.
Privacychoice.org en Ghostery.com geven soms conflicterende informatie over bedrijven. Waar verwarring is, heb ik handmatig de privacy policies, indien aanwezig, doorzocht. Mijn ervaring was dat de data van Privacychoice.org beter was bijgewerkt. Sommige bedrijven die in mijn onderzoek naar voren kwamen, hebben ook een moederbedrijf die in onze data zat. In die gevallen hebben we die data geschaard onder het moederbedrijf.
Welke data zijn onttrokken?
Een belangrijke bron is ook XPrivacy, een app die pogingen tot data-extractie van je smartphone logt. Ik heb XPrivacy vooraf geïnstalleerd en de logfiles na het testen geëxporteerd.
Daarnaast beschikt XPrivacy over een gecrowdsourcede database met gebruikerslogfiles. Eigenaar Marcel Bokhorst, een van de ontwikkelaars van XPrivacy, heeft mij een dump gegeven van deze database. Van enkele ontbrekende apps in die dump heb ik zelf logfiles op mijn smartphone aangemaakt en die geëxporteerd.
De logfiles geven aan op welke manier data zijn onttrokken (235 verschillende methoden). Ik heb de Android Developers gidsen gebruikt om deze methodes te kunnen beschrijven. Tevens heb ik gebruik gemaakt van het onderzoek van James Sellwood naar de permissiestructuur van Android.
Apps scrapen
Ik heb ook de onderliggende informatie van apps gescraped uit de Google Play Store, zodat duidelijk is wie de ontwikkelaar van een app is, in wat voor genre de app valt en hoe vaak ze gedownload zijn. Ik heb ruim 4.000 populaire apps weten te scrapen (ongeveer 4 procent van het totaal). Die heb ik uiteraard niet allemaal gebruikt voor deze analyse.
Waar staan de servers?
De Charles-analyses leverden een enorme lijst servers op van de 85 onderzochte apps (bijna 10.000 servers). Om erachter te komen van wie die servers zijn en waar die staan, heb ik gebruikgemaakt van de geo-ip-database van MaxMind, waarin dit soort informatie te vinden is. Lezer Mark Steenbakkers heeft de informatie over de door ons gevonden servers bij MaxMind geautomatiseerd bevraagd. Een ip-adres aan een locatie verbinden is niet altijd betrouwbaar, dus hier kunnen foutjes in zitten. Ik heb bij het doorkijken van de data niets vreemds gezien.
Guido Rus heeft mij nog geholpen bij het analyseren van de data.
Verder onderzoek doen?
De data heb ik niet vrijgegeven omdat ze door mijn eigen smartphone zijn gegenereerd waardoor er privacygevoelige informatie in de data zijn terechtgekomen, zoals wachtwoorden. Mocht iemand deze toch willen gebruiken, stuur dan even een e-mail en dan kijken we of we iets kunnen verzinnen.