Sto cercando di catturare il traffico HTTP (S) da un'applicazione Xamarin iOS proxy-inconsapevole. Gli strumenti attualmente disponibili sono un Mac con Linux Mint VM, strumenti per sviluppatori Xcode e iOS, Burp Suite Community Edition, Charles Proxy e Wireshark.
Strategie
Ho testato le seguenti strategie con vari gradi di successo (ma mai pieno successo):
Burp Suite e Charles Proxy
Impostazione: Burp Suite / Charles Proxy in esecuzione su un Mac, con il certificato CA del proxy installato sul dispositivo iOS. Il dispositivo iOS è configurato per utilizzare un proxy HTTP.
Problema: intercetta solo alcune richieste non eseguite dall'API HttpClient
nativa di Xamarin, come Google Analytics, che non è utile per analizzare l'API di interesse.
Wireshark
Impostazione: dispositivo iOS collegato tramite cavo USB al Mac, realizzato un'interfaccia di rete sul Mac per questa guida in modo da catturare i pacchetti direttamente dal dispositivo iOS lasciando che Wireshark legga da quella interfaccia di rete.
Problema: tutte le richieste sono HTTPS e non possono essere decodificate.
Suite VPN e Burp
Impostazione: creando una VPN a cui si connette il dispositivo iOS, tutto il traffico verrà instradato attraverso tale VPN e in Burp Suite. La VPN è configurata su una VM Linux Mint con la sua scheda di rete collegata alla scheda Wi-Fi del mio Mac.
Problema: ho parzialmente seguito un tutorial che descrive una VPN PPTP con Burp Suite, ma iOS 10 e versioni successive hanno abbandonato il supporto per PPTP. I tentativi di replica con OpenVPN hanno prodotto risultati insoddisfacenti (un altro post su ServerFault qui ).
Domanda del giorno
Come si fa a intercettare in modo efficace e (si spera relativamente facilmente) il traffico HTTP (S) da un'app per dispositivi mobili iOS che non rispetta le impostazioni del proxy di sistema?