web-dev-qa-db-ja.com

平文でHTTPSトラフィックをキャプチャしますか?

リモートWebサービスと通信するローカルアプリケーション(作成していないため変更できません)があります。 HTTPSを使用しており、トラフィックの内容を確認したいと思います。

これを行う方法はありますか?私はWindowsシステムの方を好みますが、Linuxでプロキシを設定すれば簡単にできます。

私が考えていること:

  1. ホストファイルをハッキングして(または代替DNSを設定して)Webサイトをリダイレクトする。
  2. 自己署名付き(ただし信頼できる)証明書を使用して、そのサイトにHTTPSサーバーをインストールする。
  3. どうやら、WireSharkは秘密鍵をフィードするとHTTPSの内容を確認できるようです。私はこれを試したことはありません。
  4. どういうわけか、このトラフィックを実サーバーにプロキシします(つまり、本格的な中間者攻撃です)。

これは理にかなっていますか? WireSharkはHTTPSトラフィックの内容を本当に確認できますか?誰かが私に適切なプロキシ(および同じ構成)を指示できますか?

24
Roger Lipscombe

Fiddler はあなたがしたいことをしますか?

Fiddlerとは何ですか?

Fiddlerは、コンピューターとインターネット間のすべてのHTTP(S)トラフィックをログに記録するWebデバッグプロキシです。 Fiddlerを使用すると、すべてのHTTP(S)トラフィックを検査し、ブレークポイントを設定し、着信データまたは発信データを「いじる」ことができます。 Fiddlerには、強力なイベントベースのスクリプトサブシステムが含まれており、任意の.NET言語を使用して拡張できます。

Fiddlerはフリーウェアであり、Internet Explorer、Mozilla Firefox、Opera、その他数千を含む事実上すべてのアプリケーションからのトラフィックをデバッグできます。

15
AakashM

Wiresharkは、TLS/SSL暗号化ストリームをプレーンテキストとして確実に表示できます。ただし、そのためには必ずサーバーの秘密鍵が必要です。秘密鍵は、環境設定でSSLオプションとしてWiresharkに追加する必要があります。これは、SSLストリームを最初から追跡できる場合にのみ機能することに注意してください。 SSL接続を再利用すると機能しません。

Internet Explorerの場合、これ(SSLセッションの再利用)は、[インターネットオプション]ダイアログを使用してSSL状態をクリアすることで回避できます。その他の環境では、ブラウザの再起動やシステムの再起動が必要な場合があります(SSLセッションの再利用を回避するため)。

もう1つの重要な制約は、RSA暗号を使用する必要があることです。 Wiresharkは、DFH(Diffie-Hellman)を使用するTLS/SSLストリームをデコードできません。

上記の制約を満たすことができると仮定すると、「SSLストリームに従う」の右クリックコマンドはかなりうまく機能します。

10
Peter Schaeffer

ローカルアプリケーションのプロキシを設定する必要があります。プロキシ設定が適用されない場合は、透過プロキシを配置し、すべてのhttpsトラフィックをそこにルーティングしてから外部に移動します。このようなものは、途中の「男」になる可能性があります: http://crypto.stanford.edu/ssl-mitm

また、wiresharkでこれをアーカイブする方法の簡単な手順を次に示します。 http://predev.wikidot.com/decrypt-ssl-traffic

4
rasjani

Charles も考慮する必要があります。この回答時の製品説明から:

Charlesは、開発者がマシンとインターネット間のすべてのHTTPおよびSSL/HTTPSトラフィックを表示できるようにするHTTPプロキシ/ HTTPモニター/リバースプロキシです。これには、リクエスト、レスポンス、HTTPヘッダー(Cookieとキャッシュ情報を含む)が含まれます。

3
Jacinda
  1. 監視にhttpsプロキシを使用する場合、ハンドシェイクのタイプによって異なります。ローカルアプリケーションが偽造できないCAの署名によってサーバーの証明書をチェックせず、サーバーがローカルアプリケーションの証明書をチェックしない場合(または、httpsプロキシで設定する証明書がある場合)、httpsプロキシを設定してhttpsトラフィックを監視します。そうでなければ、私はhttpsプロキシでトラフィックを監視することは不可能だと思います。

  2. 別の方法として、httpsライブラリとの間でメッセージを送受信するクライアントプログラムのルーチンにインストルメンテーションプローブを追加することもできます。リバースエンジニアリングの作業が必要ですが、すべての状況で機能します。

0
Sam Liao

WireSharkをお勧めします。これは、さまざまなトラフィックを追跡するのに最適なツールです。ただし、SSLをオンにすると何が見えるかわかりません。多分、あなたがそれに証明書を供給するなら?

0
dusoft