web-dev-qa-db-ja.com

SSLハンドシェイクがWiresharkに表示されないのはなぜですか?

ログイン機能を備えた一部のAndroidアプリケーションが中間者攻撃に対して脆弱であるかどうかを把握しようとしています。
lubuntuマシンにMITMプロキシを(攻撃者として)設定し、各アプリのサーバーに接続する前に携帯電話をプロキシに接続するように設定しました。さらに、Wiresharkを使用してトラフィックを確認します。
アプリが脆弱である場合、ログインが成功した後、アプリは簡単にサーバーに接続し、そのアカウントのデータを表示する必要があります。携帯電話、プロキシ、アプリのサーバーが相互に接続され、SSLハンドシェイクプロセスが正常に完了したこともWiresharkで確認できるはずです。
ここで私の質問ですが、なぜか(いくつかの脆弱なアプリのみ)簡単にアプリのサーバーに接続できますが、プロキシへの接続時にアプリ自体は警告を表示しませんが、「終了した」パケットやWiresharkの「暗号キーが変更されました」パケット?言い換えれば、このアプリはプロキシを介してサーバーに接続されているように見えるため、脆弱ですが、Wiresharkはサーバーとの接続を表示せず、暗号キーが変更されたか、フレームが終了しました;その結果、Wiresharkでの観察に基づいて、アプリ、プロキシ、サーバーがSSLハンドシェイクプロセスを完全に完了していないようで、アプリが本当に脆弱であるかどうかまだ疑問です(プロキシの証明書が設定されていないことに注意してください)電話、それ以外の場合、プロキシは信頼できるパーティと見なされていました)。どんな答えやアイデアも参考になり、高く評価されます!

2
user3304205

何が起こっているのかを本当に理解するには、Linuxマシンをproxyではなくrouter。 「プロキシ」は実際には[〜#〜] http [〜#〜]プロキシです。 HTTPS(HTTP-within-SSL)を実行するアプリケーションmayはシステム設定を使用し、 CONNECT メソッドを使用して、プロキシに双方向のトラフィックを転送させます。しかし、プロキシ設定を完全に無視して、サーバーに直接接続することもできます。 SSLを使用したいがHTTPSは使用しない(SSLトンネル内でHTTP以外の「何か」を実行する)アプリケーションは、プロキシをまったく使用しない可能性があります。

これはあなたが観察していることだと思います。HTTPプロキシでは、通信の一部のみが表示され、関心のある部分は表示されません。

典型的なローテク Man-in-the-middle は、偽のWiFiアクセスポイントをセットアップします。これは、携帯電話によって交換されるすべてのIPパケットのルーターになります。これは、カスタムHTTPプロキシを使用するように説得するよりも彼にとっては簡単であり、実際の攻撃力を彼に与えます。

1
Tom Leek