Android-netwerkverkeer onder de loep
Analyseer datastromen van apps en systeem 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 wifihotspots, omdat iedereen deze gegevens dan kan onderscheppen en misbruiken.
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.
Om het dataverkeer 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. Als je geen risico wilt lopen, installeer je een tool zoals Packet Capture alleen op een speciaal daarvoor bestemd testapparaat. 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 tool 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 idgegevens/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
Om 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