Inspeccionar el tráfico de red en Android

Como desarrollador de Android, quiero inspeccionar el tráfico de red en mi dispositivo Android. Con tus propias aplicaciones, de hecho, hay un montón de herramientas que te ayudan a depurar el tráfico HTTP(s). Sin embargo, ¿cómo se puede monitorear otras aplicaciones diversas, tales como: Youtube, Twitter, etc…

Este artículo te ayudará a hacerlo utilizando la herramienta mitmproxy.

En resumen, mitmproxy es un proxy interactivo man-in-the-middle para HTTP y HTTPS con una interfaz de consola, y lo más importante es que es gratis!

Puedes leer este documento para entender cómo funciona.

Requisitos previos

  • Herramienta Mitmproxy
  • Emulador de Android con permiso de root

Nota importante: Cuando creas el emulador, debes elegir «(Google APIs)» en el Target (versión de android), no elijas «(Google Play)» o no podrás obtener acceso adb root.

Idea

En realidad, instalamos el certificado de la CA mitmproxy manualmente como una CA añadida por el usuario y ¡listo!

Desgraciadamente, desde Android 7, las aplicaciones ignoran las CAs añadidas por el usuario , a menos que estén configuradas para usarlas. Y la mayoría de las aplicaciones no optan explícitamente por utilizar certificados de usuario. Por lo tanto, tenemos que colocar nuestro certificado mitmproxy CA en el almacén de certificados del sistema como una CA de confianza.

¡Ahora vamos a empezar!

Crear certificado mitmproxy

  • Instalar mitmproxy
brew install mitmproxy
  • Generar certificado
mitmproxy

Renombrar certificado

  • Entrar en su carpeta de certificados
cd ~/.mitmproxy/
  • Los certificados CA en Android se almacenan por el nombre de su hash, con un ‘0’ como extensión. Ahora genera el hash de tu certificado
openssl x509 -inform PEM -subject_hash_old -in mitmproxy-ca-cert.cer | head -1
  • Por ejemplo, la salida es hash_value.Ahora podemos copiar mitmproxy-ca-cert.cer a hash_value.0 y nuestro certificado del sistema está listo para usar
cp mitmproxy-ca-cert.cer hash_value.0

Inserta el certificado en el almacén de certificados del sistema

  • Introduce carpeta del emulador dentro de Android SDK
cd .../Android/SDK/emulator/
  • Obtenga una lista de sus AVD con emulator -list-avds
./emulator -list-avds
  • Inicie su emulador androide con la opción -writable-system para para poder escribir en/system
./emulator -avd <avd_name_here> -writable-system
  • Reinicie adb como root
adb root
  • Monte la partición del sistema como escribible
adb shell "mount -o rw,remount /"
  • Ponga su certificado al almacén de certificados del sistema y establezca los permisos del archivo
adb push ~/.mitmproxy/hash_value.0 /system/etc/security/cacerts
adb shell "chmod 664 /system/etc/security/cacerts/hash_value.0"
  • Reinicie su emulador
adb reboot

Ahora instalamos el certificado CA en el emulador.

Configuración del proxy en el emulador

  • Abre la configuración del emulador, añade el proxy manual con el nombre de host: 127.0.0.1 y el puerto 8080

¡Lance la herramienta y vea la magia!

Puedes iniciar cualquiera de las tres herramientas desde el terminal:

  • mitmproxy -> te da una TUI interactiva
  • mitmdump -> te da una salida de terminal simple y llana
  • mitmweb -> te da una GUI basada en el navegador

Por ejemplo, abro la aplicación de Youtube y monitorizo el tráfico como abajo.

  • Ejecuta mitmproxy

  • Ejecuta mitmweb para ver los detalles de la API

Voila!

Deja un comentario