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írovatmitmproxy-ca-cert.cer
dohash_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!