Android-netwerkverkeer controleren

Marco den Teuling
0

Android-netwerkverkeer controleren

Android-apps vragen graag om toegang tot je camera, contacten enzovoort en zijn natuurlijk verbonden met internet – een gevaarlijke combinatie. Wat een app daarmee doet, is normaliter niet zichtbaar. Haalt hij alleen updates binnen of wordt je complete adresboek of fotoverzameling doorgestuurd? Met de analyse-app Packet Capture kom je erachter. Daarmee analyseer je het Android-netwerkverkeer rechtstreeks op je smartphone.

Met Packet Capture kun je achterhalen welke data het Androidsysteem en de geïnstalleerde apps uitwisselen met internet. De tool draait op je smartphone of tablet en heeft geen root-toegang nodig. Je krijgt zelfs inzicht in versleutelde SSL-verbindingen. Bovendien kun je nagaan of een app wel versleutelde communicatie gebruikt of vertrouwelijke gegevens zoals wachtwoorden gewoon als leesbare tekst verstuurt. Dat is vooral riskant op openbare netwerken zoals gratis wifi-hotspots, omdat iedereen deze gegevens dan kan onderscheppen en misbruiken.

Zo werkt Packet Capture

Android-netwerkverkeer controleren, zaklamp appOm het Android-netwerkverkeer te analyseren, past Packet Capture twee trucs toe. Ten eerste fungeert de app als lokale VPN-server waar al het dataverkeer van het Android-toestel doorheen gesluisd wordt. Ten tweede nestelt de tool zich als Man-in-the-Middle (MitM) in SSL-verbindingen, zodat je ze onversleuteld kunt meelezen. Normaliter is er een versleutelde SSL-tunnel tussen app en doel-server en kun je de inhoud niet lezen. Maar in dit geval zijn er twee tunnels: een tussen de app en Packet Capture en een tweede tussen Packet Capture en de doelserver. Daartussen is de data niet versleuteld.

Packet Capture genereert dynamisch de bijbehorende certificaten voor alle SSLverbindingen, zoals een facebook.comcertificaat als de Facebook-app wordt gebruikt. Om de verbinding tussen de gecontroleerde app en de MitM tot stand te laten komen, moet die app het CA-certificaat van de MitM vertrouwen. Dat wordt bereikt door het certificaat van Packet Capture te installeren in de lijst van vertrouwde (gebruiker)certificaten op het toestel. Dat is niet zonder risico: de analyse-app kan hierna alle versleutelde verbindingen en de data die daarover worden uitgewisseld onderscheppen. Let op: als je geen risico wilt lopen, installeer je een tool zoals Packet Capture alleen op een speciaal daarvoor bestemd testapparaat. Zo kun je een app onderzoeken voordat je die op je eigen toestel of een smartphone van je kind toelaat. De app genereert een uniek CA-certificaat bij het instellen. Dat is in ieder geval veiliger dan aan alle gebruikers een identiek certificaat toewijzen.

De app instellen

Installeer om te beginnen de app Packet Capture van ontwikkelaar Grey Shirts vanuit Google Play op je Android-toestel. De eerste keer dat je hem opent, word je verwelkomd door een wizard die bij de stap ‘SSL Decryption’ aanbiedt het SSL-certificaat te installeren. Dat kan ook achteraf nog, maar het is goed om dit meteen te doen als je de inhoud van potentieel spannende SSL-pakketten niet wilt missen. Tik daarom op ‘Install Certificate’ en autoriseer de installatie met de pincode of het wachtwoord voor je Android-toestel. Als je nog geen pincode of wachtwoord hebt ingesteld, moet je dat alsnog doen om het certificaat te kunnen installeren. Het dialoogvenster waarin je een naam kunt opgeven voor het certificaat sluit je met ‘OK’. Als je de app later overigens verwijdert, blijft het certificaat aanwezig. Verwijder dit dan handmatig via de toestelinstellingen (onder beveiliging bij de vertrouwde id-gegevens/ certificaten).

Snuffelen maar

Packet Capture is nu gebruiksklaar. Klik op de groene pijl rechtsboven om de analyse te starten. Android vraagt doorgaans of je toestemming wilt verlenen om een VPN-verbinding te maken. Nadat je dit hebt bevestigd met ‘OK’ begint Packet Capture met de trace. In de lijst verschijnt een nieuw item met het tijdstip waarop de trace is gestart. Op de tweede regel bij dit item staat het aantal connecties dat tot dusver is geanalyseerd. Klik op het item om de trace te bekijken.

Je krijgt dan een lijst met connecties die in één oogopslag alle belangrijke gegevens toont bij elke verbinding. Links staat het pictogram van de app die de connectie heeft opgezet, in het midden de naam, daaronder het IP-adres van de verbindingspartner en het type verkeer (TCP of UDP). Op de onderste regel staat de hostnaam. Rechts zie je het tijdstip, de hoeveelheid data die is uitgewisseld en bij een versleutelde connectie de toevoeging ‘SSL’.

Klik je op een verbinding in de lijst, dan gaat er een infoscherm open dat doet denken aan de Wireshark-functie ‘Follow TCP-/UDP-Stream’. Hier zie je niet alleen afzonderlijke datapakketten, maar de hele conversatie met de verbindingspartner: zowel de requests als de antwoorden daarop. Als bij een verbinding meerdere requests worden gedaan, verschijnen die allemaal in de conversatie.

Data decoderen

Android-netwerkverkeer controleren, onveilige updateOm het gegevensverkeer te beperken, maken veel systeemcomponenten en apps gebruik van de compressiemethode gzip. Dat herken je aan de HTTP-header ‘Content-Encoding: gzip’. Packet Capture zet de gecomprimeerde content automatisch om in leesbare tekst. Je ziet dit aan het label ‘TEXT’ boven de header.

Als je wilt, kun je de content ook als hex-dump bekijken, zowel voor de gehele conversatie als voor afzonderlijke requests en antwoorden. In de conversatieweergave laat je alles weergeven in hexadecimale notatie door boven in het scherm te tikken op het label ‘DECODE AS’ en voor ‘RAW’ te kiezen. Afzonderlijke pakketten in de conversatie laat je als hex weergeven door te klikken op het label ‘TEXT’ boven het pakket en vervolgens ‘HEX’ te kiezen.

Exporteren

Je stopt de trace via de rode Stop-knop in het startscherm van Packet Capture. Je gaat terug naar dit scherm door (herhaaldelijk) de vorige-knop van je toestel te gebruiken. Hervat je de trace, dan creëert de app hiervoor een nieuw item in de lijst. De oude traces blijven bewaard, ook als je de app sluit.

Wil je de gegevens delen voor diepgaande analyse van het Android-netwerkverkeer of de resultaten doorsturen, dan kun je ze exporteren in tekstformaat. Complete conversaties exporteer je in de conversatieweergave door bovenin te tikken op de pijl naar beneden en ‘Save Upstream’, ‘Save Downstream’ of ‘Save Both’ te kiezen. Je kunt er zelfs voor kiezen de gehele conversatie te bewaren in PCAP-formaat, wat veel pc-tools kunnen lezen. Bij afzonderlijke pakketten tik je boven de header op de menuknop (drie puntjes) en kies je ‘Save’ om ze als tekst te bewaren.

SSL-specifiek

Als je tot de gelukkige groep Android-gebruikers behoort die ondertussen Android Nougat (7.0 of 7.1) heeft, moet je meer moeite doen om de inhoud van versleutelde verbindingen te analyseren. Google heeft bij Nougat de beveiliging op veel punten opgeschroefd en een van die punten heeft betrekking op het afhandelen van SSL-verkeer door analyse-proxy’s. Apps die voor Android 7 zijn ontwikkeld (SDK-versie 24 of hoger) en daarop worden uitgevoerd, negeren alle certificaten die de gebruiker zelf aan de lijst van vertrouwde certificaten heeft toegevoegd. Daaronder valt ook het certificaat van deze analyse-tool. Het doorsluizen van SSL-verbindingen werkt niet en Packet Capture zal alleen ‘No Data’ laten zien.

\fnlfs01RedirectedFolders$mdtDesktopct-webandroid-netwerkAndroid-netwerkverkeer controleren, network-security-config.pngGoogle heeft een achterdeurtje opengelaten, maar dat is vooral voor ontwikkelaars bedoeld. Apps vertrouwen zelf geïnstalleerde certificaten namelijk wel als ze expliciet zijn vermeld in het APK-installatiebestand (meer precies in een bestand met de naam network_security_ config.xml). Voor de ontwikkelaar van een app is die vermelding makkelijk toe te voegen. Een gebruiker moet het APK-bestand eerst naar een pc overzetten, uitpakken, aanpassen, weer inpakken en opnieuw ondertekenen. Daarna kan het bestand naar een Android-toestel gekopieerd en geïnstalleerd worden. Als je dat wilt proberen, vind je online instructies en een Bash-script dat de aanpassingen automatisch uitvoert. Maar de snelste methode om dataverkeer van apps te analyseren is om te werken met een Android-toestel waarop Android 6 of lager draait. Eventueel kun je ook een Android-emulator op de pc gebruiken.

Onafhankelijk van de gebruikte Android-versie kan ook het zogeheten Public Key Pinning de analyse verhinderen. Daarbij brengt de app alleen een versleutelde verbinding tot stand als het SSL-certificaat van de verbindingspartner is uitgegeven door een specifieke instantie (CA of sub-CA). Vaak worden zelfs alleen specifieke SSL-certificaten geaccepteerd. Welke certificaten zijn toegestaan is vastgelegd in de code van de app of wordt bij een geslaagde verbinding afgesproken voor een bepaalde periode. Gelukkig zijn er niet veel apps die hiervan gebruikmaken. Het gaat daarbij meestal om financiële apps: veel bank-apps gebruiken het om de versleutelde communicatie te beveiligen.

Diepere analyse

Analyse-apps zoals Packet Capture zijn vooral geschikt om met weinig moeite het dataverkeer van (nieuwe) apps te onderzoeken en weglekkende gegevens op het spoor te komen – overal en altijd. Voor uitgebreidere analyses van het Android-netwerkverkeer kan het de moeite waard zijn een analyse-proxy op een pc te installeren en hier het verkeer van het Android-toestel doorheen te sluizen. Het is praktischer om een lange gegevensuitwisseling op een groot scherm te volgen en met tools als Burp of mitmproxy te analyseren. Je kunt dan zelfs gegevenspakketten onderscheppen voordat ze naar de doel-server worden gestuurd en rustig bekijken of ze vertrouwelijke gegevens bevatten. Bekijk ook deze lijst met alternatieve apps en verwijzingen naar meer informatie over certificate pinning.

(Ronald Eikenberg / Marco den Teuling, c’t magazine 9/2017)

Meer over

Wifi

Deel dit artikel

Marco den Teuling
Marco den TeulingHad als eerste eigen computer ooit een 16-bit systeem, waar van de 48 kilobyte toch echt niet ‘genoeg voor iedereen’ was. Sleutelt graag aan pc’s, van de hardware tot het uitpluizen van de BIOS-instellingen. Vindt ‘Software as a Service’ een onbedoeld ironische naamgeving.

Lees ook

Raspberry Pi als NAS-systeem gebruiken? Dit moet je weten!

Wist je dat je een Raspberry Pi als Network Attached Storage (NAS) kunt gebruiken? Zo voldoet de Raspberry Pi 4 aan de belangrijkste eisen om dit te k...

Readly aanbieding: twee maanden gratis tijdschriften en kranten lezen

Sta jij voor het tijdschriftenschap eindeloos te twijfelen tussen wel tien verschillende magazines? Dan is Readly iets voor jou, want dan hoef je niet...

0 Praat mee
avatar
  Abonneer  
Laat het mij weten wanneer er