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 copiaremitmproxy-ca-cert.cer
inhash_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!