TLSの動作に少し誤解があります。 Burpsuiteプロキシを使用して、ブラウザからのHTTPSトラフィックを傍受できることを知っています。サーバーがプロキシをブラウザとして表示する場合、これはどのようにして可能になるのでしょうか。したがって、ハンドシェイクや暗号化の問題がそこで発生し、私のブラウザはこれを認識せずにトラフィックを送受信しているだけでしょうか。
私が尋ねているより決定的な質問は、自己署名証明書なしでBurpsuiteを使用すると、TLS接続がどのように切断され、自己証明書がこれをどのように修正するのですか?
HTTPSプロキシ経由でSomeServiceのホームページにアクセスするとします。あなたとあなたのプロキシの間の接続を作ることから始めます。次に、プロキシはそれ自体とSomeServiceの間の接続を確立します。あなたの代理人は真ん中の人です、しかしあなたはこれを知っていて、あなたがこれを望んでいるのでそれは大丈夫です。
プロキシはSomeServiceとの通信に問題はありませんが(MitMを使用しない通常のHTTPS接続です)、ブラウザはプロキシとの通信に問題があります。これは、ブラウザで「 https://www.SomeService.com 」と入力し、代わりにSomeServiceから回答を受け取ったため、プロキシから回答を得たためです。
ブラウザは、SomeServiceに渡された、信頼できる誰かによって署名された証明書を期待しているため、何かが間違っていることを認識していますが、代わりにBurpsuite(デフォルトでは信頼されていません)によって署名された証明書を取得しました。 。すると、ブラウザにエラーが表示され、誰がこの証明書に署名したかわからないため、おそらくスパイされている可能性があります。
解決策は、Burpsuiteからルート証明書をインストールすることです。インストールすると、Burpsuiteによって署名された証明書を信頼することになります。これにより、アラームを発生させることなくトラフィックを傍受できます。
MITMを使用してトラフィックを攻撃しない場合、TLSは次のように機能します。
Client <===========> Server
MITMを使用してトラフィックを攻撃すると、第三者が通信を傍受してプロキシする
Client <=====> Proxy <======> Server
セキュリティは、client <==> proxy
とproxy <==> server
の間で別々にネゴシエートされます。プロキシは2つの接続を開いたままにします。1つはクライアントとの接続、もう1つはサーバーとの接続です。これは通常、AVベンダー、マルウェア、およびエンタープライズフィルタリング製品で使用されます。クライアントがプロキシの証明書を信頼している場合、ブラウザは、実際のサーバーではなくプロキシと通信しているという事実を強調しません。通信が暗号化されていることを示す緑色のバーがブラウザーに表示されます。証明書をクリックすると、実際のproxy
証明書の代わりにserver
証明書が表示されます。 certificate pinning が含まれている場合、これは明らかに機能しません。
クライアントがproxy
証明書を信頼しない場合(信頼できる証明書ストレージにproxy
証明書を具体的にインストールしない限り、通常これが当てはまります)、証明書エラーが表示されます。
Burpについて話す投稿がオンラインでいくつかあります。たとえば this one :
Burp CA証明書-Burpはブラウザーとサーバー間のSSL接続を切断するため、Burpプロキシ経由でHTTPSサイトにアクセスすると、ブラウザーはデフォルトで警告メッセージを表示します。これは、ブラウザがBurpのSSL証明書を認識せず、トラフィックがサードパーティの攻撃者に傍受されている可能性があるためです。 BurpをSSL接続で効果的に使用するには、Burpによって生成された証明書を信頼できるように、ブラウザにBurpの認証局マスター証明書をインストールする必要があります。