web-dev-qa-db-ja.com

証明書をインストールせずにデバイスのHTTPSトラフィックを傍受する可能性

私の目標は、一部のデジタルデバイス(AppleTV、ゲームコンソールなど)のHTTPSトラフィックを盗聴し、ローカルネットワークのHTTPSパケットを復号化することです。

CharlesやFiddlerなどのHTTPSデバッグプロキシツールを使用して方法を見つけることはできません。デバイスに証明書をインストールする必要があるためです。デバイスのファイルシステムにアクセスできません。証明書をコピーできません。しかし、デバイスのプロキシを私のラップトップを指すように設定したり、ラップトップのホットスポットを使用したりできます。

22
Yifei

SSLの重要な点は、提案しているような中間者攻撃による盗聴に対する抵抗です。クライアントデバイスに自己署名証明書を信頼させることができない場合、唯一のオプションは次のとおりです。

  • 最初のHTTPリクエストをインターセプトし、通信をHTTPSにアップグレードしないでください(ただし、クライアントが明示的にhttps://... URLに移動した場合、これは機能しません)
  • 自分の自己署名証明書を持つサーバーのふりをして、リクエストを行うシステムが自己署名証明書を素直に受け入れることを期待します(これは、MITM攻撃の可能性に関するブラウザーの厳しい警告を無視するユーザーと同等の意思決定です)進行中)
  • SSLに対する既知の過去の攻撃(Heartbleed、BEASTなど)に対する脆弱性を確認します。このオプションは不正である可能性が高いことに注意してください。クライアントへの攻撃(所有している可能性があります)ではなく、サーバーへの攻撃(所有していない)が必要になる場合があるためです。

何兆ドルも利用できる場合は、他にいくつかのオプションがあります。

  • 世界的に信頼されている認証局を無事に侵害し、その秘密署名鍵を使用して独自の鍵ペアの偽造証明書を生成する
  • Webクライアント、Webサーバー、またはクライアントまたはサーバーが使用するSSL/TLSライブラリのゼロデイセキュリティ脆弱性を購入または発見する
  • SSLによって使用されるいくつかの基礎となる暗号プリミティブの致命的な弱点を発見します(たとえば、AESを完全に破壊するとうまくいくかもしれません)
  • 傍受された暗号化通信に対してブルートフォース攻撃を実行するために、数兆ドルをコンピューターハードウェアに費やします

デバイスに無制限に物理的にアクセスできる場合、ほぼ間違いなく、デバイス自体の信頼できる証明書ストアへの攻撃は、SSLへの攻撃よりも簡単です(ただし、簡単ではない場合もあります)。

40
apsillers

助言がありますか?実行可能ですか?

トラフィックを傍受するには、デバイスが信頼する証明書を所有している必要があります。これをどのように達成できるかは、デバイスでの証明書の検証の適切性とオープン性に依存します。

  • デバイスには、証明書のバギーまたは存在しない検証がある可能性があります。これは通常です。
    • 検証はまったく行われません。その場合、任意の証明書を使用できます。
    • 信頼チェーンのみを検証し、証明書内の名前は検証しません。この場合、デバイスが信頼するCAによって署名された証明書を使用できます。
  • デバイスには適切な証明書チェックがありますが、カスタムトラストアンカーをインストールできます。この場合、独自の証明書を作成して、信頼できるものとしてインポートできます。
  • デバイスには適切な証明書チェックがありますが、新しいトラストアンカーを追加することはできません。これは、信頼できるCAの1つがデバイスで受け入れ可能な新しい証明書に署名するように依頼しない限り、あなたにとっては悪いことです。おそらくCAはこれを行いません。

これで問題が解決しない場合は、他のバグがある可能性があります。ここ数年のSSLの問題を調べ、これらのバグのいずれかを採用できるかどうかを確認してください。また、SSL以外のバグを使用してデバイスをハッキングし、ソフトウェアの動作を変更することもできます。

11
Steffen Ullrich

いいえ、HTTPSの本質は、証明書を復号化するために証明書が必要であることです。トラフィックを盗聴することはできますが、暗号化されているので役に立たないでしょう。

3
armani

いいえ。SSLのポイントは、この種の不正なスヌーピングを防ぐことです。プロキシを承認するには、デバイスにプロキシ証明書を信頼するように指示し、デバイスクライアントに証明書を信頼するように指示するか、アクセス権がないように見えるデバイスの秘密鍵を使用する必要があります。詳細については:

https://en.wikipedia.org/wiki/Transport_Layer_Security

3
Antonius Bloch

FREAK tlsの脆弱性を見てください。 SSLネゴシエーションにデータを挿入して、デバイスをRSAエクスポート暗号にだますことができ、そこから中間者によるトラフィックの復号化が大幅に容易になります(別名:可能です)。

CharlesはJavaで書かれており、これを自動的に悪用するように変更するのは難しくありません。

3
Damian Nikodem

これはすべて、関心のあるトラフィックによって異なります。クライアントとデバイス間のトラフィックを復号化する場合は、プロキシを使用することができます。実際、これはSuperfishの動作と非常によく似ています。 superfishのしくみの概要については、 Lenovoが最近のラップトップでHTTPSセキュリティを破っている を参照してください。

一方、デバイスが他のポイントから送受信している情報を解読したい場合、たとえばApple TVがAppleから送受信している可能性がある)のは、はるかに困難です。これはおそらくあなたがもっと興味を持っているトラフィックだと思います。

同じ原則が適用されますが、本質的にはMiTM(Man in The Middle)攻撃ですが、所有する証明書をデバイスに信頼させるか、デバイスが使用する証明書の秘密鍵を危険にさらす必要があります。これは、ベンダーが適切なセキュリティとSSLキーの管理をどの程度徹底しているかに応じて、必要以上に簡単であるか、非常に難しい場合があります。たとえば、最近、有名なコンシューマルータおよびモデムの製造元が多くのデバイスで同じ証明書キーを使用したことが報告されました。これは、1つのデバイスからキーを抽出すると、そのキーを使用してすべてのデバイスにアクセスできることを意味します。デバイスの製造元が同様の不十分なセキュリティ保護を実装している場合は、おそらく悪用可能なホールがあります。ただし、それを見つけることは必ずしも簡単ではありません。それには、いくつかのハッキングスキルと、弱点を見つけるための適切な種類の逸脱した心が必要です。これには自然な人もいれば、それほど多くない人もいます。

あなたがする必要があるのはあなたが所有する証明書を信頼するようにあなたのデバイスを取得し、それから真ん中の人として機能するあなたの証明書を持つプロキシをセットアップすることです。プロキシの設定は、ネットワーク、つまりホームネットワークの場合は簡単ですが、作成した証明書をデバイスに信頼させるのは非常に難しく、リスクも伴います。つまり、デバイスの証明書ストアが破損する可能性があります。それをレンガにして、ほぼ確実に違法です。

1
Tim X