Inspekcja ruchu sieciowego na Androidzie

Jako programista Androida, chcę sprawdzić ruch sieciowy w moim urządzeniu z Androidem. Z własnych aplikacji, w rzeczywistości, istnieje wiele narzędzi pomóc debugowania HTTP (s) ruchu. Jednak, jak można monitorować inne różne aplikacje, takie jak: Youtube, Twitter, itp.?

Ten artykuł pomoże Ci to zrobić za pomocą narzędzia mitmproxy.

W skrócie, mitmproxy jest interaktywnym proxy man-in-the-middle dla HTTP i HTTPS z interfejsem konsoli, a co najważniejsze jest darmowy!

Możesz przeczytać ten dokument, aby zrozumieć, jak to działa.

Wymagania wstępne

  • Narzędzie Mitmproxy
  • Emulator Androida z uprawnieniami roota

Ważna uwaga: Kiedy tworzysz emulator, musisz wybrać „(Google APIs)” w Target (wersja androida), nie wybieraj „(Google Play)” lub nie będziesz w stanie uzyskać dostępu adb root.

Idea

Idealnie, instalujemy certyfikat mitmproxy CA ręcznie jako dodany przez użytkownika CA i gotowe!

Niestety, od Androida 7, aplikacje ignorują dodane przez użytkownika CA, chyba że są skonfigurowane do ich używania. A większość aplikacji nie decyduje się jawnie na używanie certyfikatów użytkownika. Musimy więc umieścić nasz certyfikat mitmproxy CA w systemowym magazynie certyfikatów jako zaufany CA.

Teraz zaczynajmy!

Create mitmproxy certificate

  • Install mitmproxy
brew install mitmproxy
  • Generate certificate
mitmproxy

Rename certificate

  • Enter your certificate folder
cd ~/.mitmproxy/
  • Certyfikaty CA w Androidzie są przechowywane przez nazwę ich hasha, z '0′ jako rozszerzeniem. Teraz wygeneruj hash swojego certyfikatu
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1
  • Na przykład, wyjście to hash_value. Możemy teraz skopiować mitmproxy-ca-cert.cer do hash_value.0 i nasz certyfikat systemowy jest gotowy do użycia
cp mitmproxy-ca-cert.cer hash_value.0

Insert certificate into system certificate store

  • Enter folder emulatora w Android SDK
cd .../Android/SDK/emulator/
  • Get a list of your AVDs with emulator -list-avds
./emulator -list-avds
  • Start your android emulator with -writable-system option in w celu zapisu do/system
./emulator -avd <avd_name_here> -writable-system
  • Restartuj adb jako root
adb root
  • Umontuj partycję systemową jako zapisywalną
adb shell "mount -o rw,remount /"
  • Przesuń swój certyfikat do systemowego magazynu certyfikatów i ustaw uprawnienia do plików
adb push ~/.mitmproxy/hash_value.0 /system/etc/security/cacerts
adb shell "chmod 664 /system/etc/security/cacerts/hash_value.0"
  • Reboot emulatora
adb reboot

Teraz zainstalowaliśmy certyfikat CA na emulatorze.

Setup Proxy on Emulator

  • Otwórz Ustawienia Emulatora, dodaj ręczne proxy z nazwą hosta: 127.0.0.0.1 i port 8080

Uruchom narzędzie i zobacz magię!

Możesz uruchomić dowolne z trzech narzędzi z terminala:

  • mitmproxy -> daje ci interaktywne TUI
  • mitmdump -> daje ci zwykłe i proste wyjście terminala
  • mitmweb -> daje ci GUI oparte na przeglądarce

Na przykład, otwieram aplikację Youtube i monitoruję ruch jak poniżej.

  • Run mitmproxy

  • Run mitmwebaby zobaczyć szczegóły API

.

Voila!

Dodaj komentarz