Inspicere netværkstrafik på Android

Som Android-udvikler vil jeg gerne inspicere netværkstrafikken på min Android-enhed. Med dine egne apps er der faktisk en masse værktøjer, der hjælper dig med at fejlfinde HTTP(s)-trafik. Men hvordan kan du overvåge andre forskellige apps som f.eks: Denne artikel vil hjælpe dig med at gøre det ved hjælp af mitmproxy-værktøjet.

Kort sagt er mitmproxy en interaktiv man-in-the-middle-proxy for HTTP og HTTPS med en konsolgrænseflade, og vigtigst af alt er den gratis!

Du kan læse dette dokument for at forstå, hvordan den fungerer.

Forudsætninger

  • Mitmproxy-værktøjet
  • Android-emulator med root-tilladelse

Vigtig bemærkning: Når du opretter emulatoren, skal du vælge “(Google APIs)” i Target (android-version), du må ikke vælge “(Google Play)”, ellers kan du ikke få adb root-adgang.

Idea

Ideal, vi installerer mitmproxy CA-certifikatet manuelt som en brugertilføjet CA og færdig!

Der er desværre siden Android 7, apps ignorerer brugertilføjede CA’er , medmindre de er konfigureret til at bruge dem. Og de fleste programmer vælger ikke eksplicit at bruge brugercertifikater. Så vi skal placere vores mitmproxy CA-certifikat i systemets certifikatlager som en betroet CA.

Nu skal vi i gang!

Opret mitmproxy-certifikat

  • Installer mitmproxy
brew install mitmproxy
  • Generer certifikat
mitmproxy

Generer certifikatet

mitmproxy

Navn certifikatet

  • Indtast din certifikatmappe
cd ~/.mitmproxy/
  • CA-certifikater i Android gemmes ved navnet på deres hash, med et “0” som udvidelse. Generer nu hash-koden for dit certifikat
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1
  • For eksempel, er outputtet hash_value.Vi kan nu kopiere mitmproxy-ca-cert.cer til hash_value.0, og vores systemcertifikat er klar til brug
cp mitmproxy-ca-cert.cer hash_value.0

Indsæt certifikatet i systemets certifikatlager

  • Indtast emulatormappe i Android SDK
cd .../Android/SDK/emulator/
  • Hent en liste over dine AVD’er med emulator -list-avds
./emulator -list-avds
  • Start din android-emulator med -writable-system indstilling i for at skrive til/system
./emulator -avd <avd_name_here> -writable-system
  • Start adb igen som root
adb root
  • Remount systempartitionen som skrivbar
adb shell "mount -o rw,remount /"
  • Skub din certifikat til systemets certifikatlager og indstil filtilladelser
adb push ~/.mitmproxy/hash_value.0 /system/etc/security/cacerts
adb shell "chmod 664 /system/etc/security/cacerts/hash_value.0"
  • Reboot din emulator
adb reboot

Nu har vi installeret CA-certifikatet på emulatoren.

Sæt proxy op på emulator

  • Åbn emulatorindstillingerne, tilføj manuel proxy med værtsnavn: 127.0.0.0.1 og port 8080

Lancer værktøjet, og se magien!

Du kan starte et af tre værktøjer fra terminalen:

  • mitmproxy -> giver dig en interaktiv TUI
  • mitmdump -> giver dig et almindeligt og simpelt terminaloutput
  • mitmweb -> giver dig en browserbaseret GUI

Til eksempel åbner jeg Youtube-app’en og overvåger trafikken som nedenfor.

  • Kør mitmproxy

  • Kør mitmweb for at se API-detaljerne

Voila!

Skriv en kommentar