Estoy intentando capturar el tráfico HTTP (S) desde una aplicación de Xamarin para iOS que no conoce el proxy. Las herramientas actuales que tengo disponibles son una Mac con Linux Mint VM, Xcode e iOS, Burp Suite Community Edition, Charles Proxy y Wireshark.
Estrategias
He probado las siguientes estrategias con varios grados de éxito (pero nunca éxito total):
Burp Suite y Charles Proxy
Configuración: Burp Suite / Charles Proxy ejecutándose en una Mac, con el certificado CA del proxy instalado en el dispositivo iOS. El dispositivo iOS está configurado para usar un proxy HTTP.
Problema: solo intercepta ciertas solicitudes no realizadas por la API nativa HttpClient
de Xamarin, como Google Analytics, que no es útil para analizar la API de interés.
Wireshark
Configuración: el dispositivo iOS conectado mediante un cable USB a la Mac, creó una interfaz de red en la Mac por esta guía para capturar paquetes directamente desde el dispositivo iOS permitiendo que Wireshark lea desde esa interfaz de red.
Problema: todas las solicitudes son HTTPS y no se pueden descifrar.
VPN y Burp Suite
Configuración: Al hacer una VPN a la que se conecta el dispositivo iOS, todo el tráfico se enrutará a través de esa VPN y en Burp Suite. La VPN está configurada en una Linux Mint VM con su adaptador de red conectado a la tarjeta Wi-Fi de mi Mac.
Problema: seguí parcialmente un tutorial que describe una VPN PPTP con Burp Suite, pero iOS 10 y superior ha dejado de ser compatible con PPTP. Los intentos de replicar con OpenVPN dieron resultados insatisfactorios (otra publicación en ServerFault here ).
Pregunta del día
¿Cómo se puede interceptar el tráfico HTTP (S) de una aplicación móvil de iOS que no respeta la configuración del proxy del sistema de manera efectiva y (con suerte relativamente fácil)?