Guía

Captura el tráfico de una app Android sin proxy Wi-Fi

La app Busymate DevTools para Android ejecuta un motor de captura basado en VPN en el propio teléfono. Sin proxy de escritorio, sin Wi-Fi compartida, sin ajuste de proxy — y una explicación honesta de qué apps se descifran realmente en un teléfono sin root.

En Android, el camino clásico para leer el HTTPS de una app es un proxy en un portátil más una entrada manual de proxy en los ajustes Wi-Fi del teléfono. Funciona hasta que sales de esa red. Busymate DevTools quita el proxy de en medio: la app se registra como la VPN del teléfono, ve cada conexión que hace el teléfono, descifra los hosts que elijas con un certificado que genera en el dispositivo y envía el resultado al mismo dashboard que usan la app de iOS y el proxy de escritorio.

Hay un hecho de la plataforma que esta guía no va a ocultar. Desde Android 7.0, una app ignora los certificados que instala el usuario salvo que lo permita explícitamente. Eso significa que el teléfono puede capturar el tráfico de todas las apps, pero solo puede descifrar las que confían en el almacén de certificados del usuario: en la práctica, tus propias compilaciones de depuración, además de los navegadores del sistema y clientes similares. El paso cinco muestra el cambio de un solo archivo que convierte tu app en una de ellas, y la guía sobre pinning cubre el resto.

Antes de empezar

Lo que necesitas

Un teléfono, una cuenta y —si quieres cuerpos descifrados de tu propia app— una compilación de depuración que puedas recompilar.

  • Un teléfono con Android 7.0 o posterior. Para capturar no hace falta root ni ordenador.

  • Una cuenta de Busymate. Inicia sesión con Google o con correo y contraseña; iniciar sesión empareja el teléfono con tu dashboard.

  • Los nombres de host de la API que quieres leer, para la lista de SSL proxy. Solo se descifran los hosts de la lista.

  • Para tu propia app: poder recompilar su versión de depuración con una configuración de seguridad de red de un solo archivo, para que confíe en el certificado que generó el teléfono.

Paso a paso

Hazlo en orden

Seis pasos. La configuración guiada de la app gestiona los avisos de la plataforma pantalla a pantalla; el único trabajo fuera de la app es el cambio en la compilación de depuración del paso cinco.

  1. 01

    Instala la app y acepta el consentimiento de captura

    Instala Busymate DevTools desde Google Play, o instala manualmente el APK firmado de la página de Android si la ficha todavía no es visible en tu región. En el primer inicio, la app te pide consentimiento explícito para capturar el tráfico de red. La captura es opcional y permanece apagada hasta que la actives: nada se ejecuta en segundo plano antes de que lo digas.

    La pantalla de consentimiento de captura de red en Busymate DevTools para Android
  2. 02

    Inicia sesión: el teléfono se empareja solo

    Inicia sesión con Google o con tu correo y contraseña. Como en iOS, iniciar sesión es emparejar: la app intercambia la sesión por una credencial de dispositivo de larga duración guardada en el almacenamiento cifrado de la app, y el teléfono aparece como Online en la pestaña Devices del dashboard un momento después. La pantalla de inicio muestra el nombre del dispositivo, una píldora de cuenta, la tarjeta del interruptor de captura y una tarjeta de estado con un engranaje para los Ajustes.

    La pantalla de inicio de Busymate DevTools en Android con el interruptor de captura y la tarjeta de estado
  3. 03

    Añade los dominios que quieres descifrar

    Abre Ajustes desde el engranaje y ve a SSL Proxying. Enumera los hosts cuyos cuerpos HTTPS quieres leer; todo lo demás permanece cifrado de extremo a extremo y aparece como un nombre de host con un contador de peticiones. Un asterisco y un punto al principio cubren un dominio y todos sus subdominios. La misma sección contiene los controles de descifrado y una lista Ignore Hosts para el ruido de fondo que nunca quieres en el feed.

    No hace falta hacerlo en el teléfono. El dashboard edita la misma lista por dispositivo, y un cambio allí se envía al teléfono en vivo, así que un compañero puede añadir un host mientras tú sigues probando.

  4. 04

    Ejecuta la configuración guiada

    Toca la tarjeta de estado. La configuración guiada recorre tres avisos de la plataforma pantalla a pantalla: permitir la notificación de captura, instalar el certificado que la app generó solo para ti en el almacén de certificados de usuario del teléfono, y aprobar la solicitud de conexión VPN del propio Android. Cada paso se marca como hecho al completarlo, y la tarjeta pasa a lista cuando los tres se superan.

    Ese certificado es personal de tu dispositivo —se crea en el teléfono, nunca se descarga de un servidor compartido— y es lo que permite a la app presentar un certificado de confianza para cada host que elegiste descifrar.

    La configuración guiada de captura en Busymate DevTools para Android
  5. 05

    Haz que tu propia app confíe en el almacén de certificados del usuario

    Este es el paso que ninguna herramienta de captura para Android puede saltarse. Desde Android 7.0, una app que apunta a ese nivel o superior confía por defecto solo en el almacén de certificados del sistema, así que tu app cerrará la conexión en cuanto el teléfono presente su certificado generado. La solución es una pequeña configuración de seguridad de red, limitada a las compilaciones de depuración, que añade el almacén de usuario junto al del sistema. Android elimina por completo el bloque de anulaciones de depuración en las compilaciones de lanzamiento, así que no puede filtrarse a producción.

    Crea el archivo de abajo en tu app, mantén el ancla del sistema junto a la de usuario para que el HTTPS normal siga funcionando, referéncialo desde la etiqueta de aplicación de tu manifiesto, y luego recompila e instala la versión de depuración. Reinstalar el binario antiguo no sirve de nada: la confianza vive en la app recién compilada.

    La configuración de seguridad de red solo para depuración, y luego la referencia en el manifiesto
    xml
    <!-- app/src/main/res/xml/network_security_config.xml -->
    <network-security-config>
      <debug-overrides>
        <trust-anchors>
          <certificates src="user" />
          <certificates src="system" />
        </trust-anchors>
      </debug-overrides>
    </network-security-config>
    
    <!-- AndroidManifest.xml -->
    <application
        android:networkSecurityConfig="@xml/network_security_config"
        ... >
  6. 06

    Activa la captura e inspecciona

    Activa el interruptor de captura. Android muestra el icono de llave VPN en la barra de estado, y cada petición que hace el teléfono empieza a aterrizar en el feed del dashboard y en la propia pantalla Network de la app: una fila de estado, píldoras de estadísticas, chips de categoría y una lista agrupada por host con búsqueda abajo. Toca un host y luego una petición para ver el detalle completo: pestañas General, Header, Summary, Timing y Body tanto para la petición como para la respuesta.

    Abre tu app y provoca una llamada. Sus entradas HTTPS ahora muestran cabeceras legibles y un cuerpo descifrado en lugar de un túnel opaco. Cuando termines, desactiva la captura: la VPN se desconecta, y el certificado y la app pueden eliminarse como cualquier otro.

    El feed Network en tiempo real en Busymate DevTools para Android

Solución de problemas

Qué puede salir mal

La mayoría de los problemas en Android son la plataforma siendo estricta con los certificados, y el feed te dice con cuál te has topado.

  • El tráfico de tu propia app sigue apareciendo cifrado

    La configuración de seguridad de red no surtió efecto. Confirma que recompilaste e instalaste la versión de depuración después de añadirla, que el manifiesto apunta al archivo y que el certificado está en el almacén de usuario. Si la configuración vive en un conjunto de fuentes solo de depuración, el atributo del manifiesto también debe estar en el manifiesto de depuración.

  • Una app de la tienda que no compilaste tú sigue opaca

    Es lo esperado en un teléfono sin root: esa app nunca aceptó certificados de usuario, así que el teléfono registra la conexión solo como metadatos. Descifrarla requiere un dispositivo con root donde el certificado pueda ir al almacén del sistema —el nivel que usa la granja de teléfonos— e incluso eso no puede abrir una app que fija su propio certificado.

  • El aviso de VPN de Android vuelve a aparecer una y otra vez

    Otra app de VPN está activa, o la aprobación anterior se revocó en los ajustes de VPN del sistema. Solo puede ejecutarse una VPN a la vez; desconecta la otra y vuelve a aprobar el aviso desde la configuración guiada.

  • La notificación de captura nunca apareció

    Se denegó el permiso de notificaciones en el primer aviso. Vuelve a activarlo para Busymate DevTools en los ajustes de apps del sistema; la configuración guiada lo vuelve a comprobar y marca el paso como hecho.

  • Un host está en la lista pero la regla por ruta no se dispara

    Las reglas que coinciden por ruta necesitan que el host esté descifrado; en un host que pasa cifrado solo es visible el nombre de host. Añade primero el host a la lista de SSL proxy y vuelve a comprobar la regla.

Preguntas frecuentes

Preguntas habituales

¿Necesito root?

No para capturar, y no para descifrar tus propias compilaciones de depuración o clientes que confían en el almacén de usuario. Root solo hace falta para mover el certificado al almacén del sistema y que las apps que no compilaste confíen en él.

¿Esto es un proxy por debajo?

No. La app se registra como la VPN del teléfono, así que ve el tráfico de todas las apps por Wi-Fi y datos móviles sin tocar ningún ajuste de proxy. Existe un proxy de escritorio aparte para navegadores y backends, pero esta guía nunca lo usa.

¿Qué pasa con las apps que no están en mi lista?

Siguen funcionando exactamente igual que antes. Sus conexiones se registran solo como host y tiempos y nunca se descifran, e Ignore Hosts puede eliminar por completo del feed las más ruidosas.

El tráfico de tu app, leído en el teléfono

Instala la app, ejecuta la configuración guiada, añade la configuración de depuración de un archivo y mira cómo las peticiones de tu app aterrizan descifradas.

Ask your mate