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
hash_value.
Vi kan nu kopiere mitmproxy-ca-cert.cer
til hash_value.0
, og vores systemcertifikat er klar til brugemulator -list-avds
-writable-system
indstilling i for at skrive til/system
adb shell "chmod 664 /system/etc/security/cacerts/hash_value.0"
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!