53

しばらく前に、httpリクエストの呼び出しを非表示にして、アプリケーションでより安全にする方法について質問しました。私は、人々がフィドラー2を使用して通話を確認し、オートレスポンダーを設定することを望んでいませんでした。誰もが私にSSLに行くように言いました、そして、呼び出しは隠されて、情報は安全に保たれます。

SSL証明書を購入してインストールし、すべてをセットアップしました。fiddler 2を起動し、httpsWebサービスとhttpsphpスクリプトに接続するテストアプリケーションを実行しました。

Fiddler 2は、両方のリクエストを検出できるだけでなく、それらを復号化することもできました。私はすべての情報が4番目に戻っていくのを見ることができました。それは私の質問に私をもたらします。

SSLがセキュリティにまったく影響を与えなかった場合、SSLを使用する意味は何ですか。SSLの有無にかかわらず、すべての情報が4番目に戻っているのを確認できますが、それでもオートレスポンダーを設定しています。

.NETに、SSLを介した通話をより適切に隠すために欠けているものはありますか?

編集

私が受け取った回答のいくつかのために、この質問に新しい部分を追加しています。アプリがWebサービスに接続してログインした場合はどうなりますか。アプリはWebサービスにユーザー名とパスワードを送信します。次に、Webサービスは、ログインデータの良し悪しを示すデータをアプリに送り返します。SSLを使用している場合でも、フィドラー2を使用している人はオートレスポンダーを設定するだけで、アプリケーションが「クラック」されます。デバッグでデータを確認することがどのように役立つかは理解していますが、私の質問は、SSLが要求していたものに接続していることを確認するために正確に何をすべきかということです。基本的に仲買人はいないと言っています。

4

3 に答える 3

53

これについては、http ://www.fiddlerbook.com/fiddler/help/httpsdecryption.aspで説明しています。

Fiddler2は、HTTPSインターセプトへの「man-in-the-middle」アプローチに依存しています。Webブラウザーにとって、Fiddler2は安全なWebサーバーであると主張し、Webサーバーにとって、Fiddler2はWebブラウザーを模倣します。Webサーバーのふりをするために、Fiddler2は動的にHTTPS証明書を生成します。

基本的に、Fiddlerが提供する証明書を手動で信頼します。ドメイン名と一致しないランダムな人物からの証明書を手動で受け入れる場合も、同じことが当てはまります。

編集:Fiddler / man-in-the-middle攻撃を防ぐ方法があります。つまり、カスタムアプリケーションでは、SSLを使用して、通信に特定の証明書を使用するように要求できます。ブラウザの場合、証明書の不一致をユーザーに通知するUIがありますが、最終的にはそのような通信を許可します。

明示的な証明書の公開されているサンプルとして、Azureサービス(つまり、Azure用のPowerShellツールを使用)を使用して、Fiddlerでトラフィックをスニッフィングすることができます。明示的な証明書要件のために失敗します。

于 2012-05-30T01:36:09.960 に答える
9

サーバー側だけでなく、SSL認証のためにクライアント側の認証を要求するようにWebサービスを設定できます。このようにすると、Fiddlerはサービスに接続できなくなります。必要な証明書を持っているアプリケーションだけが接続できます。

もちろん、アプリ内で証明書を保護する方法の問題がありますが、とにかく、ユーザー名とパスワードでその問題が発生します。あなたのアプリを本当にクラックしたい人は、Reflectorを試してみるか、クライアント側の証明書に関連付けられた秘密鍵のメモリ検索を行うことさえできます。

この100%防弾を作成する実際の方法はありません。これは、映画業界がDVDコンテンツの保護に関して抱えている問題と同じです。DVDを復号化してコンテンツを再生できるソフトウェアがある場合は、そのソフトウェアの動作中に誰かがメモリダンプを実行して、復号化キーを見つけることができます。

于 2012-05-30T02:08:39.440 に答える
6

一般的なSSL/TLSのポイントは、Wiresharkを使用する盗聴者がペイロードを認識できないようにすることです。Fiddler / Burpは、システムと対話したことを意味します。はい、それは非常に単純な相互作用ですが、システムの(1つ)が危険にさらされる必要があります。

これらのMITMプログラムをこのような基本レベルで役に立たなくすることでセキュリティを強化する場合は、クライアント証明書認証(双方向SSL)を必要とし、サーバー証明書とクライアント証明書の両方を固定します(たとえば、特定の証明書のみが有効である必要があります)。通信)。また、ネットワーク上で転送されるペイロードを各パーティの公開鍵で暗号化し、秘密鍵がそれらが属するシステムにのみ存在するようにします。このように、一方のパーティ(Bob)が危険にさらされた場合でも、攻撃者はBobに送信されたものだけを見ることができ、BobがAliceに送信したものは見ることができません。次に、暗号化されたペイロードを取得し、検証可能な証明書を使用してデータに署名し、データが改ざんされていないことを確認します(最初に暗号化するか、最初に署名するかについては多くの議論があります)。その上に、

これにより、通信システムの1つを制御しない場合に、合理的に達成可能な限りのセキュリティ方法が得られます。

他の人が述べたように、攻撃者がシステムを制御すると、攻撃者はRAMを制御し、メモリ内のすべてのメソッド呼び出しを変更できます。

于 2015-01-02T09:04:01.047 に答える