web-dev-qa-db-ja.com

SSLstripはどのように機能しますか?

私はSSLstripについて読んでいますが、それがどのように機能するかについて私の理解が100%確実ではありません。

多くのドキュメントでは、アクセスできるトラフィックの "https"の発生を "http"に単純に置き換えていることが示されているようです。したがって、 " https://Twitter.com "のようなURLは、犠牲者に " http://Twitter.com "として渡されます。

この時点で、SSLstripは引き続きHTTPSを介してTwitterと通信しますか?このようなもの:

Victim  <== HTTP ==>  Attacker  <== HTTPS ==>  Twitter

それとも、クライアントがHTTPを介してTwitterと通信しているというだけで、トラフィックにアクセスできるのでしょうか。

Victim  <== HTTP ==>  Attacker  <== HTTP ==>  Twitter

私の推測では、Twitterによって強制されているため、攻撃者がHTTPSを介してTwitterと通信し続ける最初のオプションになると思いますが、説明をお願いします。

92
Scott Helme

Moxie Marlinspikeの講演 SSLStripを使用したSSLの無効化 をご覧ください。つまり、SSLStripはMITM攻撃の一種であり、攻撃者のブラウザにHTTPを介してプレーンテキストで攻撃者と通信させ、攻撃者はHTTPSサーバーからの変更されたコンテンツをプロキシします。これを行うために、SSLStripは「ストリップ」しますhttps:// URLとそれらをhttp:// URL。

[〜#〜] hsts [〜#〜] は、この問題の解決策として提案されています。

76
rook

可能なソリューションについて話す:SSLストリッピングを防止/検出する本当に信頼できる方法は、TLSの常に暗号化された通信とサイドチャネル認証を使用することです(基本的にTLSキー交換を使用しますが、PKI /証明書ベースの認証をユーザーまたはデバイスベースに置き換えます認証)。これは、実際には、鍵の交換後、サーバーとユーザーが特定の共有秘密または鍵を取得することを意味します。次に、クライアントとサーバーは個別の認証チャネルを使用し(たとえば、SSHまたは他の強力な非対称認証方法を使用して)、IDとTLSキーの両方を認証します。キーが同じであれば、100%エンドツーエンドの暗号化されたチャネルの確実性があります。

中間者がいる場合、彼は2つの攻撃ベクトルを実行できます。

  1. MITMは、サーバーとのTLS通信を彼の時点で終了し、ユーザーがHTTP経由で通信できるようにします。これにより、従来のTLS/HSTSではアラートは発生しません。ただし、サーバーとクライアントは異なるTLSキー(キー1とキーなし)を持っているため、これはサイドチャネル認証によって検出されます。

  2. MITMは偽造または盗まれた証明書を使用する可能性があります。これは、使用された証明書に応じて、アラートをトリガーする場合とトリガーしない場合があります(Let's Encryptイニシアチブのおかげで、これはますます簡単になる可能性があります)。サーバーはクライアントとは異なるキーを持っているため(サーバーにはkey1、MITMにはサーバーへのkey1、MITMにはクライアントへのkey2、クライアントにはkey2があるため)、この攻撃はサイドチャネル認証TLSによって再び発見されます。

これにより、SSL証明書が強制終了され、CDNでも機能します。このソリューションは、暗号化のバックドアの影響を受けないことに注意してください。

3
Ivo

ストリッピングはclient to serverペイロードで行われ、クライアントが最初にHTTPコンテンツを要求する必要があることに注意することが重要だと思います。

Twitterの例を使用すると、クライアントは最初に http://www.Twitter.com を要求する必要があります-サイトがクライアントをHTTPSにリダイレクトすると、SSL Stripは次のような応答で "s"を取り除きますクライアントはHTTPSではなくHTTPコンテンツをリクエストし続けます。

クライアントが https://www.Twitter.com を要求した場合(またはHSTSが使用されている場合)、SSL MiTM攻撃が応答をインターセプトする必要があり、この攻撃の目的を無効にします。

1
Matt

HSTSはMITMによって改ざんおよび変更できる単純な「httpヘッダー」です

HTTPnowhereやHTTPS Everywhereなどのアドオンを使用し、90%の成功を収める...別のタイプのアドオンは https://addons.mozilla.org/en-US/firefox/addon/enable-disable-weak-ssl -cip / SSLハンドシェイクネゴシエーション後にデータを暗号化します。

クライアントとして明らかなように、あなたは劣悪な立場にあり、あなたとインターネット間のルーターは簡単に制御されます。したがって、クライアントがトラフィックを制御するためのリソースが少ないことを理解してください。そのための最善の解決策はVPN/Stunnelだけです。しかし、NSA/ISP /特権を持つ人々がその通信を傍受して復号化する魔法の秘密を持っているかどうかは決してわかりません。

1
Mário Guedes