Kontrola síťového provozu v systému Android

Jako vývojář systému Android chci kontrolovat síťový provoz ve svém zařízení se systémem Android. U vlastních aplikací totiž existuje spousta nástrojů, které vám pomohou ladit provoz HTTP(s). Jak však můžete sledovat další různé aplikace, jako např: Youtube, Twitter atd.

Tento článek vám s tím pomůže pomocí nástroje mitmproxy.

Krátce řečeno, mitmproxy je interaktivní man-in-the-middle proxy pro HTTP a HTTPS s konzolovým rozhraním a hlavně je zdarma!

Můžete si přečíst tento dokument, abyste pochopili, jak funguje.

Předpoklady

  • Nástroj Mitmproxy
  • Emulátor Androidu s oprávněním root

Důležitá poznámka: Při vytváření emulátoru musíte v položce Target (verze Androidu) zvolit „(Google APIs)“, nezvolte „(Google Play)“, jinak nebudete moci získat přístup adb root.

Idea

Pravděpodobně nainstalujeme certifikát mitmproxy CA ručně jako CA přidanou uživatelem a hotovo!“

Naneštěstí od Androidu 7 aplikace ignorují CA přidané uživatelem , pokud nejsou nakonfigurovány tak, aby je používaly. A většina aplikací se k používání uživatelských certifikátů výslovně nepřihlašuje. Takže musíme umístit náš certifikát mitmproxy CA do systémového úložiště certifikátů jako důvěryhodnou certifikační autoritu.

Teď začneme!

Vytvoření certifikátu mitmproxy

  • Instalace mitmproxy
brew install mitmproxy
  • Vygenerování certifikátu
mitmproxy

Pojmenování certifikátu

  • Vstup do složky s certifikáty
cd ~/.mitmproxy/
  • CA certifikáty se v systému Android ukládají podle názvu jejich hashe, s příponou „0“. Nyní vygenerujte hash svého certifikátu
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1
  • Například, výstup je hash_value.Můžeme nyní zkopírovat mitmproxy-ca-cert.cer do hash_value.0 a náš systémový certifikát je připraven k použití
cp mitmproxy-ca-cert.cer hash_value.0

Vložení certifikátu do systémového úložiště certifikátů

  • Enter složku emulátoru v rámci Android SDK
cd .../Android/SDK/emulator/
  • Získejte seznam svých AVD pomocí emulator -list-avds
./emulator -list-avds
  • Spusťte emulátor Android pomocí možnosti -writable-system v položce abyste do něj mohli zapisovat/system
./emulator -avd <avd_name_here> -writable-system
  • Spustit adb jako root
adb root
  • Připojit systémový oddíl jako zapisovatelný
adb shell "mount -o rw,remount /"
  • Přesunout svůj certifikát do systémového úložiště certifikátů a nastavte práva k souboru
adb push ~/.mitmproxy/hash_value.0 /system/etc/security/cacerts
adb shell "chmod 664 /system/etc/security/cacerts/hash_value.0"
  • Znovu spusťte emulátor
adb reboot

Nyní jsme nainstalovali certifikát certifikační autority do emulátoru.

Nastavení proxy na emulátoru

  • Otevřete nastavení emulátoru, přidejte ruční proxy s názvem hostitele: 127.0.0.1 a port 8080

Spustíme nástroj a uvidíme to kouzlo!

Z terminálu můžete spustit kterýkoli ze tří nástrojů:

  • mitmproxy -> vám poskytne interaktivní TUI
  • mitmdump -> vám poskytne prostý a jednoduchý terminálový výstup
  • mitmweb -> vám poskytne grafické rozhraní prohlížeče

Například otevřu aplikaci Youtube a budu sledovat provoz, jak je uvedeno níže.

  • Spustím mitmproxy

  • Spustím mitmweb a zobrazím podrobnosti API

.

Voila!

Napsat komentář