プロキシ非対応のXamarin iOSアプリケーションからHTTP(S)トラフィックをキャプチャしようとしています。現在入手可能なツールは、Linux Mint VMを搭載したMac、XcodeおよびiOS開発者ツール、Burp Suite Community Edition、Charles ProxyおよびWiresharkです。
以下の戦略をさまざまな程度の成功でテストしました(ただし、完全に成功することはありません)。
セットアップ:Macで実行されているBurp Suite/Charles Proxy。プロキシのCA証明書がiOSデバイスにインストールされています。 iOSデバイスは、HTTPプロキシを使用するように構成されています。
問題:Google Analyticsなど、XamarinのネイティブHttpClient
APIによって作成されていない特定のリクエストのみをインターセプトします。これは、対象のAPIの分析には役立ちません。
セットアップ:MacにUSBケーブル経由で接続されたiOSデバイス、Macでネットワークインターフェイスを作成 このガイド により、Wiresharkがそのネットワークインターフェイスから読み取れるようにして、iOSデバイスから直接パケットをキャプチャします。
問題:すべてのリクエストがHTTPSであり、復号化できません。
セットアップ:iOSデバイスが接続するVPNを作成すると、すべてのトラフィックがそのVPNを経由してBurp Suiteにルーティングされます。 VPNはLinux Mint VM=にセットアップされており、ネットワークアダプターは私のMacのWi-Fiカードにブリッジされています。
問題:私は部分的に チュートリアル を説明しましたPPTP Burp Suiteを使用したVPNですが、iOS 10以降ではPPTPのサポートが終了しました。OpenVPNで複製しようとすると、満足のいく結果が得られませんでした。結果(ServerFaultに関する別の投稿 here )。
システムプロキシ設定を考慮しないiOSモバイルアプリからのHTTP(S)トラフィックを効果的かつ(できれば比較的簡単に)傍受するにはどうすればよいですか?
これはかなり興味深い出来事でした。VPN/ Burp Suiteメソッドの問題は、Burp Suiteの非表示のプロキシ(数回のトラブルシューティング後に無視したもの)の設定に関係しているようです 以前に投稿したServerFaultの質問 。コミュニティに貢献するために、プロキシ非対応のiOS> 10アプリをMITMする方法に関するチュートリアルを示します。
Linux VM=を設定します(私はLinux Mintを使用しましたが、UbuntuおよびDebianベースのディストリビューションは、チュートリアルの残りの部分でも同様に機能します)、そして Burp Suiteをダウンロード 、より移植性の高いJARバージョン。
DigitalOceanのガイド に従ってOpenVPNをインストールします。 iOSデバイスがVPNに接続できることを再確認してくださいandインターネットにアクセスできること。
iptables
構成上記のガイドに従って、クライアント接続をマスカレードするためにiptables
をすでに設定している必要があります。 OpenVPNのtun0
インターフェイスからポート8080(またはBurp Suiteのコピーが使用しているポート)にすべてのHTTPおよびHTTPSリクエストを転送するようにiptables
を構成する必要があります
# iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 80 -j REDIRECT --to-port 8080
# iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 443 -j REDIRECT --to-port 8080
Burp Suiteを起動し、次のことを確認します。
楽しんで ;)