Ispetta il traffico di rete su Android

Come sviluppatore Android, voglio ispezionare il traffico di rete nel mio dispositivo Android. Con le tue applicazioni, infatti, ci sono molti strumenti che ti aiutano a eseguire il debug del traffico HTTP (s). Tuttavia, come si può monitorare altre varie app come:

Questo articolo vi aiuterà a farlo utilizzando lo strumento mitmproxy.

In breve, mitmproxy è un proxy interattivo man-in-the-middle per HTTP e HTTPS con un’interfaccia console, e soprattutto è gratuito!

Si può leggere questo documento per capire come funziona.

Prequisiti

  • Strumento Mitmproxy
  • Emulatore Android con permesso di root

Nota importante: Quando crei l’emulatore, devi scegliere “(Google APIs)” nel Target (versione android), non scegliere “(Google Play)” o non sarai in grado di ottenere l’accesso adb root.

Idea

Idealmente, installiamo il certificato mitmproxy CA manualmente come una CA aggiunta dall’utente e fatto!

Purtroppo, da Android 7, le applicazioni ignorano le CA aggiunte dall’utente, a meno che non siano configurate per usarle. E la maggior parte delle applicazioni non sceglie esplicitamente di utilizzare i certificati utente. Quindi, abbiamo bisogno di mettere il nostro certificato mitmproxy CA nell’archivio dei certificati di sistema come una CA fidata.

Ora cominciamo!

Crea certificato mitmproxy

  • Installa mitmproxy
brew install mitmproxy
  • Genera certificato
mitmproxy

Renomina certificato

  • Entra nella cartella dei certificati
cd ~/.mitmproxy/
  • I certificati CA in Android sono memorizzati dal nome del loro hash, con uno ‘0’ come estensione. Ora genera l’hash del tuo certificato
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1
  • Per esempio, l’output è hash_value.Possiamo ora copiare mitmproxy-ca-cert.cer in hash_value.0 e il nostro certificato di sistema è pronto all’uso
cp mitmproxy-ca-cert.cer hash_value.0

Inserire il certificato nel negozio dei certificati di sistema

  • Entrare emulatore all’interno di Android SDK
cd .../Android/SDK/emulator/
  • Ottieni un elenco dei tuoi AVD con emulator -list-avds
./emulator -list-avds
  • Avvia il tuo emulatore android con l’opzione -writable-system per per scrivere su/system
./emulator -avd <avd_name_here> -writable-system
  • Riavvia adb come root
adb root
  • Monta la partizione di sistema come scrivibile
adb shell "mount -o rw,remount /"
  • Spingi il tuo al negozio dei certificati di sistema e imposta i permessi del file
adb push ~/.mitmproxy/hash_value.0 /system/etc/security/cacerts
adb shell "chmod 664 /system/etc/security/cacerts/hash_value.0"
  • Riavvia il tuo emulatore
adb reboot

Ora abbiamo installato il certificato CA su Emulator.

Imposta Proxy su Emulatore

  • Apri Impostazioni Emulatore, aggiungi proxy manuale con hostname: 127.0.0.1 e porta 8080

Lancia lo strumento e vedi la magia!

Puoi avviare uno qualsiasi dei tre strumenti dal terminale:

  • mitmproxy -> ti dà un TUI interattivo
  • mitmdump -> ti dà un semplice output da terminale
  • mitmweb -> ti dà una GUI basata su browser

Per esempio, apro l’applicazione Youtube e monitoro il traffico come segue.

  • Esegui mitmproxy

  • Esegui mitmweb per vedere i dettagli API

Voila!

Lascia un commento