Configurar la solución de dos proxies con mitmproxy para investigaciones de Facebook Móvil

A medida que Meta implementaba el cifrado TLS 1.3 en sus aplicaciones para móviles con el objetivo de aumentar la seguridad de extremo a extremo, algunos investigadores de seguridad se han dado cuenta de que ya no era posible interceptar tráfico de las aplicaciones para móviles de Meta (por ejemplo, la de Facebook mediante Burp Suite), incluso aunque se utilice la configuración de Whitehat. Si bien seguimos estudiando este problema (creemos que está relacionado con un error del JDK en el análisis de registros TLS), queríamos publicar una solución que permitiera a los investigadores usar Burp Suite para testear aplicaciones móviles.

Usar mitmproxy como proxy alternativo

mitmproxy es un servidor proxy muy conocido que puede realizar muchas funciones útiles, como registrar el tráfico que ha pasado por un proxy, interceptar tráfico, buscar coincidencias, manipularlo, etc.

En nuestros tests, hemos visto que mitmproxy era capaz de dirigir el tráfico desde la aplicación de Facebook para móviles con su configuración predeterminada sin necesidad de cambios especiales. Por tanto, mitmproxy es una buena opción para los investigadores que solo quieran supervisar el tráfico fuera de Burp Suite.

Sin embargo, sabemos que muchos investigadores están familiarizados con Burp Suite y utilizan el amplio ecosistema de plugins para crear funciones de investigación avanzadas. Por suerte, mitmproxy puede ofrecer una solución a los investigadores con su configuración de proxy de subida.

Usar mitmproxy con Burp como proxy de subida

En esta configuración, usamos mitmproxy como una capa proxy que degradará el tráfico TLS 1.3 entrante a TLS 1.2 y, a continuación, lo reenviará a Burp. La cadena tendrá este aspecto:

Imagen de cómo mitmproxy actúa como una capa proxy entre un dispositivo móvil y Facebook

Tendremos los siguientes puertos en uso:

  • mitmproxy escuchará el puerto 8645.
  • Burp Proxy escuchará el puerto 8646.
  • El dispositivo móvil se conectará al proxy en el puerto 8645.

Iniciaremos mitmproxy con los siguientes argumentos de línea de comandos. Esto configurará un oyente en el puerto 8645 y garantizará que el tráfico del proxy que salga de mitmproxy solo utilice TLS 1.2 (el tráfico que se envía a Burp Proxy).

mitmproxy --mode upstream:http://127.0.0.1:8646 --set tls_version_server_min=TLS1_2 --set tls_version_server_max=TLS1_2 --ssl-insecure -p 8645

Configuraremos Burp Proxy en el puerto 8646 como de costumbre.

Configuraremos la aplicación de Facebook para móviles mediante la configuración de Whitehat como “Proxy para solicitudes de la API de la plataforma” en <lab machine IP>:8645 (p. ej., 10.10.11.159:8645) y nos aseguraremos de que la fijación de certificados esté desactivada con la opción “Permitir certificados instalados por el usuario” activada. Ten en cuenta que, con esta configuración, la configuración de TLS 1.3 no es pertinente y puede dejarse la predeterminada.

Imagen de cómo establecer la configuración de Whitehat en la aplicación de Facebook para móviles

Asegúrate de instalar el certificado de CA de mitmproxy en el dispositivo siguiendo estas instrucciones.

Reinicia la aplicación de Facebook. Deberías ver tráfico entrando tanto en mitmproxy como en Burp Suite.

Imagen en la que se muestra el tráfico dirigiéndose a mitmproxy y Burp Suite