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:
Tendremos los siguientes puertos en uso:
mitmproxyescuchará el puerto8645.- 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 8645Configuraremos 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.
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.