Inspektera nätverkstrafik på Android

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 kopiera mitmproxy-ca-cert.cer till hash_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!

Lämna en kommentar