Som Android-utvecklare vill jag inspektera nätverkstrafik på min Android-enhet. Med dina egna appar finns det faktiskt många verktyg som hjälper dig att felsöka HTTP(s)-trafik. Men hur kan du övervaka andra olika appar som t.ex: Youtube, Twitter, etc.?
Denna artikel hjälper dig att göra det genom att använda verktyget mitmproxy.
Samt sett är mitmproxy en interaktiv man-in-the-middle-proxy för HTTP och HTTPS med ett konsolgränssnitt, och viktigast av allt är att den är gratis!
Du kan läsa det här dokumentet för att förstå hur den fungerar.
Förutsättningar
- Mitmproxy-verktyg
- Android-emulator med root-behörighet
Viktig anmärkning: När du skapar emulatorn måste du välja ”(Google APIs)” i Target (android-versionen), välj inte ”(Google Play)”, annars kommer du inte att kunna få adb-rotbehörighet.
Idea
Idealt installerar vi mitmproxy CA-certifikatet manuellt som en användartillagd CA och klart!
Tyvärr ignorerar appar sedan Android 7 användartillagda CA:er , om de inte är konfigurerade för att använda dem. Och de flesta program väljer inte uttryckligen att använda användarcertifikat. Så vi måste placera vårt mitmproxy CA-certifikat i systemets certifikatarkiv som en betrodd CA.
Nu kan vi börja!
Skapa mitmproxy-certifikat
- Installera mitmproxy
brew install mitmproxy
- Generera certifikat
mitmproxy
Namnge certifikatet
- Gå in i din certifikatmapp
cd ~/.mitmproxy/
- CA-certifikat i Android lagras efter namnet på deras hash, med en ”0” som förlängning. Generera nu hashen för ditt certifikat
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1
- Till exempel, är resultatet
hash_value.
Vi kan nu kopieramitmproxy-ca-cert.cer
tillhash_value.0
och vårt systemcertifikat är redo att användas
cp mitmproxy-ca-cert.cer hash_value.0
Insätt certifikat i systemets certifikatarkiv
- Skriv in emulatormappen i Android SDK
cd .../Android/SDK/emulator/
- Hämta en lista över dina AVD:er med
emulator -list-avds
./emulator -list-avds
- Starta din Android-emulator med alternativet
-writable-system
i för att kunna skriva till/system
./emulator -avd <avd_name_here> -writable-system
- Starta om adb som root
adb root
- Remount systempartitionen som skrivbar
adb shell "mount -o rw,remount /"
- Push din certifikatet till systemets certifikatarkiv och ställ in filbehörigheter
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 installerat CA-certifikatet på emulatorn.
Sätt upp proxy på emulatorn
- Öppna emulatorns inställningar, lägg till manuell proxy med värdnamn: 127.0.0.1 och port 8080
Lansera verktyget och se magin!
Du kan starta något av tre verktyg från terminalen:
- mitmproxy -> ger dig ett interaktivt TUI
- mitmdump -> ger dig en vanlig och enkel terminalutgång
- mitmweb -> ger dig ett webbläsarbaserat GUI
Till exempel öppnar jag Youtube-appen och övervakar trafiken enligt nedan.
- Kör
mitmproxy
- Kör
mitmweb
för att se API-detaljer
.
Voila!