Sslstrip攻撃はHTTPとHTTPSの両方を使用するWebサイトでのみ機能しますか? Quora のコメント投稿者は次のように述べています:
SSLストリップは、HTTPとHTTPSの両方を使用するWebサイトでのみ機能することに注意してください。たとえば、メインページがHTTP経由であるが、ログイン、購入などのためにHTTPSに転送するEbayです。これらの攻撃を防ぐには、サイト全体でSSLを使用すること、つまりHTTPSではなくHTTPのみを使用することをお勧めします。別の方法はHSTS(Strict Transport Security)を使用することで、これはブラウザにHTTPSのみを介して接続し、HTTPを介して接続しないように命令します。
しかし、私はGoogleがHTTPとHTTPSの両方を使用していないことを知っています。彼らはHTTPSを使用し、sslstrip攻撃に対してHSTSヘッダーも使用しています。それは上のコメントが間違っているということですか?つまり、HTTPSのみを使用しているWebサイトに対してSSLStrip攻撃はまだ可能ですか?
答え:
被害者のマシン(A)、攻撃者のマシン(B)、サーバー(C)があるシナリオを考えてみましょう。 SSLストリップは、プロキシサーバーである攻撃者のマシンで実行されています。したがって、被害者とサーバーの間には直接接続はありません。
被害者Aは、オンラインバンキングサービスを使用して自分の口座から送金したいと考えており、ブラウザーのアドレスバーに次のURLを入力します。
www.foobank.com/online_banking
バックグラウンドで、攻撃者のマシンに接続されている被害者のブラウザは、サーバーからの応答を待ちます。攻撃者Bは被害者Aの要求を転送し、銀行サーバーからの応答を待ちます。 BとCの間の接続は安全です。つまり、それらの間で転送されるすべてのトラフィック(BとC)はSSLトンネルを経由します。
Bankサーバーは、次のURLを持つログインページで応答します。
https://www.foobank.com/online_banking
この段階で、攻撃者はログインページにアクセスできます。次に、攻撃者(B)はサーバーからの応答をhttpsからhttpに変更し、それを被害者(A)に送信します。これにより、ブラウザは次のアドレスに送信されます http://www.foobank.com/online_banking 。
この時点で、被害者は攻撃者との安全でない接続でインターネットバンキングのログインページにアクセスできます。この時点から、被害者の要求はすべてプレーンテキスト形式で送信され、攻撃者はデータを傍受して資格情報を収集できます。
サーバーは、接続が正常に確立されたと見なします。このシナリオでは、攻撃者とサーバーの間(つまり、BとCの間)ですが、被害者(A)は、正当なサーバー(C)であると見なします。
そう
SSLStripはサーバーの動作に依存せず、クライアントに依存します。クライアントがHTTPSではなくHTTPを介して要求を行うことができる場合は、サーバーがHTTPSのみをサポートしている場合でも、攻撃を実行できます。 HSTSは、ブラウザーがそもそも(後続の要求に対して)プレーンHTTP要求を実行するのを防ぎます。
結論:
GoogleはHTTPSのみを使用し、SSLStrip攻撃に対してHSTSヘッダーを使用しています。 WebサーバーがHTTPSのみを使用している場合でも、SSLStrip攻撃が発生する可能性があるためです。
SSLストリップは、HTTPとHTTPSの両方を使用するWebサイトでのみ機能します。
これは、HTTPサポートをオフにして攻撃から保護することを意味するため、正確ではありません。
重要なのは、ユーザーが最初にプレーンHTTP経由でサイトを要求すると、sslstripがステップインすることです。これは、ブラウザがサーバーに接続しようとする方法に関するものであり、サーバーがサポートするものではありません。ブラウザがプレーンなHTTP接続をまったく試みない場合にのみ安全です(以前に見られたHSTSディレクティブのため、またはWebサイトがブラウザの HSTSプリロードリスト にあるため)。
つまり、HTTPSのみを使用しているWebサイトに対してSSLStrip攻撃はまだ可能ですか?
はい。 https://yourbank.example/
がプレーンHTTPでは何も提供しないとしましょう。とにかく、私はあなたにhttp://yourbank.example/
へのリンクを送ります。ブラウザーがプレーンリクエストを試行すると、sslstripを使用してそれをインターセプトし、フィッシングサイトで応答します。ご覧のように、要求を転送しないので、元のサイトがプレーンHTTP経由でコンテンツを提供したかどうかは関係ありません。
Sslstripでは、クライアントとsslstripインスタンス間の接続がプレーンHTTPを介して行われる必要があります。 sslstripからサーバーへの接続は、HTTPまたはHTTPSのいずれかです。
これは、クライアントが最初にプレーンHTTPでサイトを要求した場合、sslstripが機能することを意味します。代わりに、サイトがHTTPSでのみアクセス可能であることを知っているため、またはHSTSポリシー(プリロードされているか以前のアクセスから)のためにブラウザーがHTTPSを実施しているため、クライアントがHTTPSで既に開始している場合、sslstripは機能しません。