web-dev-qa-db-ja.com

プロキシサーバーはどのようにデータを傍受しますか?

私はインターネット上のほとんどのWebサイトが政府によってブロックされている国に住んでいるため、Webプロキシ、VPN、SOCKSなどのさまざまなプロキシを使用しており、それらのほとんどは無料です。

私の質問は次のとおりです。WebページでSSLを使用していても、これらのプロキシサーバーがデータを傍受する方法はありますか?もしあるなら、どうやって?

14
user13934

WebブラウザがHTTPプロキシを使用する場合、次のようになります。ターゲットURLがhttp://www.example.com/index.htmlであると仮定します。次に、ブラウザはプロキシに接続し、「http://www.example.com/index.htmlにあるページを取得したい」と言います。プロキシは準拠し、データを取得して、ブラウザに送り返します。構造上、プロキシはすべてのデータを参照します。接続プロキシとブラウザ間は暗号化できますが、プロキシは引き続きすべてを認識します。

ターゲットURLがSSLを使用している場合(https://www.example.com/index.htmlshttpsに注意してください)、ブラウザはプロキシに接続して次のように伝えます。「ポート443に接続したいof www.example.com;実行してから、すべてのバイトを両方向にリレーします。 RFC 2817のセクション5.2 はこのメカニズムを説明しています。プロキシは、ブラウザとWebサーバー間のすべてのバイトのリレーとして機能します。これらのバイトは、ブラウザとWebサーバーが希望するもの、つまり実際にはSSLハンドシェイクと後続のデータをエンコードします。その場合、プロキシはSSLトンネルのoutsideであり、交換データを見ることができません。 SSLトンネルはまだWebサーバーとブラウザの間にあり、プロキシは純粋にトランスポートメカニズムです。


すべての通信がプロキシを通過するため、プロキシは依然として理想的な位置にあります 中間者攻撃 。しかし、SSLはそれに対して保護されています。つまり、Webサーバーcertificateがクライアントによって検証されているためです。もちろん、これは人間のユーザーnotに依存しており、無効な証明書に関する警告をクリックスルーします。一部の組織では、ローカルのシステム管理者がプロキシに偽のサーバー証明書を作成し、MitM攻撃を実行して交換データへのアクセスを許可するために、デスクトップシステムに追加の「不正な」ルートCA証明書をインストールします(ウイルス対策フィルターを適用できるようにするため) HTTPSトラフィックでも、少なくともそう言っています)。

このような不正なCAのインストール(つまり、基本的にはクライアントマシンのセキュリティ違反)がなければ、プロキシはブラウザとHTTPSサーバーの間で交換されるデータをのぞくことはできません。プロキシは引き続き、どのサーバーに接続したかを認識し、データ交換のsizeを監視できます。暗号化では、サイズではなく内容が非表示になります。

SOCKSの状況は概念的に似ています。ブラウザーとプロキシーの間のダイアログは異なりますが、基本は同じです。プロキシーはすべてのHTTPトラフィックを表示でき、HTTPSトラフィックはどれも表示できません。


編集:明らかに、他の種類の「プロキシ」が存在し、ブラウザがそれ自体がブラウザを実行する専用サーバに接続し、ブラウザを実行しますあなた、そしてあなたにページを返します。残念ながら、一部の人々はこれを「Webプロキシ」と呼んでいます。これは、技術的にはHTTPプロキシを指定するために20年以上使用されてきた用語です。混乱が続く。

そのような「ブラウジングプロキシ」は概念的には似ていますが、サーバーでセッションを リモートデスクトッププロトコル で開き、そこからブラウザーを実行します。これにより、ブラウジングアクティビティに関するプロキシ管理者に考えられるすべての権限が付与されます。プロキシのsysadminsを完全に信頼していない場合は、そうしたくありません。

また、あいまいさのリスクがある場合は、「Webプロキシ」式を使用しないことをお勧めします。

17
Thomas Pornin

私が考えることができる唯一のもっともらしい方法は、問題のプロキシソフトウェアが信頼されたルートCAのリストに自身のCAを追加することを何らかの方法で許可することです。これにより、プロキシサーバーが接続に対してMITM攻撃を実行できるようになります。

この手順を実行しないと、プロキシサーバーがSSL経由で送信されたデータを読み取ることができなくなります。

詳細については、 中間者Blue CoatプロキシSSLまたは何ですか? を参照してください。

3
user10211

まず最初に、HTTPプロキシとして一般的に知られているものを区別したいと思います。そのため、他の回答が適用され、機密性は保持されません信頼できるCAにプロキシのCAを追加しない限り、壊れています。およびWebプロキシ(名前についてはまだ同意できません。HTMLプロキシまたはブラウジングプロキシと呼ぶこともできます)。

詳細には触れませんが、基本的に、Webプロキシは、アクセスして、Webページを「プロキシ」/「ルーティング」するように要求するWebサイトです。たとえば、 HideMyAssZendProxyAWebProxy 、または「Webプロキシ」をGoogleで検索した場合の基本的な結果です。

これらのWebプロキシは、HTTPSセッションの機密性を破ることができ、検出されることなくそうすることができます。そのため、信頼できるWebプロキシのみを使用するか、まったく使用しないでください。

Webプロキシは、あなたとあなたが訪問しているSSL対応のWebサイトの間に立っています。中間ブラウザとして機能します。サーバーが送信するものを復号化し、サーバーに送信するものを暗号化します。セッションを管理し、Cookieを処理します。アプリケーション層に座っていると、そのすべてを実行できます。

常にhttps://web-proxy.comにアクセスしているので、プロキシが機密性を破ったときにブラウザが警告する理由はありません。

一方、ブラウザまたはシステム設定で構成するプロキシは安全です。安全である必要のあるWebサイトにアクセスするときは、適切なドメイン(「example.com」など)を使用しており、https接続が切断されていないことを確認してください(通常、安全な場合は鍵のアイコンが表示されます)。これは、Webプロキシではドメイン名がプロキシのドメインであるため、Webプロキシとは異なります。

3
Adi

あんまり。ただし、URLバーにはhttpsではなくhttpと入力してください。ほとんどのWebサイト301はHTTPSにリダイレクトしますが、プロキシサーバーはこれを阻止できます。

また、フィッシングのような攻撃に注意してください。プロキシサーバーがmаil.google.comaはCryllicです)。ただし、ほとんどの実装では警告が表示されます。HTTPSサイトからリダイレクトするには、そのサイトの証明書が必要です。また、ランディングページ(ログイン付き)を持つ多くのプロキシサーバーは、通常、SSL例外を追加するように要求します(ログイン前にHTTPSページにアクセスしようとすると、安全でないリダイレクトが発生するため)。このSSL例外が悪用される可能性があります。

プロキシサーバーcanにアクセスしようとしているドメインが表示されていることに注意してください。


@Adnanが正しく言及しているように、Webプロキシ(ブラウザやネットワーク設定なしでWebサイトに入るだけのWebページ)は完全に安全ではありません。 Webプロキシはユーザーに代わってページをフェッチし、HTMLをユーザーに中継します(わずかに変更された生の応答をユーザーに中継する他のプロキシとは異なります)。彼らはあなたに代わってリクエストを投稿し、それらはHTTPS接続の「クライアント」です(彼らはあなたに復号化されたHTMLのコピーを渡してあなたのためにあなたの応答を暗号化するだけです)。そのため、すべてのデータを読み取るオプションがあります。スニッフィングから保護する場合は、HTTP/SOCKSプロキシでHTTPSを使用します。

2
Manishearth