web-dev-qa-db-ja.com

会社に対して合法的なSSL MitM攻撃を実行するにはどうすればよいですか?

私たちの会社のセキュリティのいくつかをテストするタスクが与えられました。私は以前にSSLを取り除いたことがありますが、非常に基本的なレベルであり、現在のセキュリティの日々は少し難しいです。

すべてのHTTPSトラフィックを許可したいのですが、たいていのWebサーバーはSSLを強制するので、復号化して再暗号化することでWebサーバーが大騒ぎしないようになりました。このように攻撃します。

これを達成するための最良の方法は何でしょうか?

1
TheHidden

サーバーとして認証できません

問題は、サーバーが "大騒ぎ"しないことではありません。サーバーを簡単に偽装して、自分がユーザーだと思わせることができます。ユーザーはSSL証明書で認証されていません。問題は、ユーザーを騙したり、ユーザーのブラウザーを騙したりできないことです。 MITM攻撃については、攻撃者が両方のエンティティとの接続を確立する必要があることを覚えておいてください(したがって、中間にあります)。

クライアント<---------> MITM Attacker <---------->サーバー

Httpでは簡単です。あなたは真ん中に座って、クライアントのサーバーのふりをして、サーバーのクライアントのふりをします。 httpsの問題は、あなたとサーバー間のリンクではありません(サーバーに関する限り、あなたはクライアントです)。問題はあなたとユーザーの間のリンクにあります。

ユーザーが https://example.com を参照すると、ブラウザーは次のことを期待します。

  • SSL証明書が返されること
  • SSL証明書のホスト名にexample.comがあること
  • SSL証明書が、信頼されたルートキーストアのルート証明書によって署名されている(または間接的に署名されている)こと。

クライアントがexample.comからssl証明書を取得できないようにブロックすると、ブラウザはユーザーにエラー(httpタイムアウト)を表示します

ユーザーに別のホスト名の有効な(CAによって署名された)証明書を送信すると、ブラウザーはユーザーにエラー(誤ったホスト名)を表示します。

作成したexample.comの証明書をユーザーに送信し、署名されていない場合、ブラウザーはユーザーにエラーを表示します(証明書は信頼されていません)。

別のCA証明書で署名したexample.comの証明書をユーザーに送信すると、ブラウザーを制御すると、CA証明書を信頼しないため、ユーザーにエラー(信頼できない証明書)が表示されます。

SSLストリップ(ユーザーをhttpにリダイレクト)

SSL Stripの仕組みは、ユーザーをhttpsからhttpにリダイレクトすることです。ユーザーが http://example.com を参照し、ユーザーが http://example.com へのリダイレクトを送信するのを傍受し、それでもあなたとの間に安全な接続を確立するサーバー。

クライアント<--- HTTP ---> MITM攻撃者<---- HTTPS --->サーバー

ユーザーを他の実際の攻撃者に危害を加える可能性があることを理解してください。ユーザーが会社のwifiで接続している場合、sslを削除したため、wifi上の誰もが機密情報を盗む可能性があります。

ただし、ユーザーはhttpsではなくhttpを使用していることに気付く場合があります(銀行のWebサイトに緑色のバーが表示されないのはなぜですか)。悲しいことに、これは一般的なことではありません。ほとんどのユーザーは盲目的に自分が安全であると思い込むだけではないため、HSTSはこの種の攻撃からユーザーを保護するために開発されました。ブラウザーがHSTSをサポートし、サイトがHSTSを使用していて、ユーザーが以前にサイトにアクセスしたことがある(またはHSTSがブラウザーによってプリロードされた)場合、httpにリダイレクトするとユーザーにエラー/警告が表示されます。

ユーザーが制御する「信頼された」ルート証明書をユーザーのコンピューターに「感染」させる

HSTSを回避する唯一の方法(特にプリロードあり)は、秘密鍵を持っているCA証明書を作成し、それを被害者のブラウザー/ OSにインストールすることです。次に、ユーザーにMITMを実行するときに、example.comの証明書を作成し、MITM CA証明書で署名します。ブラウザーは、作成したexample.com証明書を検証し、(信頼されたルートキーストア内の)信頼する証明書に由来する有効な署名をチェックします。これには、ユーザーのマシンでの管理アクセスが必要です。

ブラウザでキーの固定を使用して「実際の」example.com証明書を書き留めている場合、これは機能しません。

2
Gerald Davis

何を求めているの?技術的詳細または法的側面?

技術的な詳細は、会社のインフラストラクチャに依存します。一般に、独自の認証局を作成し、その証明書を企業のコンピューターで信頼できるものとしてインストールしてから、テストするドメインごとに偽の証明書を生成する必要があります。

法的側面は2つのことをカバーします。

  1. 会社のトラフィック。
  2. 従業員の個人的なトラフィック(銀行口座など)。

最初に、会社との契約に署名する必要があります。これにより、必要なテストを実施し、(明示的に)会社の内部情報を傍受することができます。

次に、テストの影響を受けるすべての従業員に、ネットワークトラフィックが監視されており、傍受したり手動で分析したりできることを通知する必要があります。各国がそのような情報について特定の法的要件を持っている可能性があることに注意してください(たとえば、従業員は、雇用契約に署名する際にそれに同意するよう要求される場合があります)。

0
Tomasz Klim