Wiresharkを使用してWebトラフィックを監視しようとしたことがある場合、おそらく問題が発生しています。その多くは暗号化されています。実際、ほとんどのサイトでは、ユーザーの安全を守るためにSSLまたはTLS暗号化を使用しています。 Amazonで買い物をしている場合、ユビキタス暗号化は良いことですが、ネットワークを管理しようとするときは非常に苦痛です。 WiresharkでSSLを復号化する方法は次のとおりです.
WiresharkとSSLとは?
Wiresharkは ネットワークトラフィックアナライザー;多くの管理者がネットワーク上の問題のトラブルシューティングに使用するコアユーティリティです。具体的には、フレーム(パケットのビルディングブロック)をキャプチャし、それらを並べ替えて分析できるようにします。 Wiresharkを使用すると、ネットワークを流れるトラフィックを調べて分析し、生データのフレーム内を覗くことができます。.
SSLは、OSIモデルのトランスポート層で動作する暗号化プロトコルです。さまざまな暗号化方式を使用して、ネットワークを移動するデータを保護します。注:このガイドでは、主にSSLをSSLとTLSの包括的な用語として参照します。.
SSL暗号化は、管理者が各パケットが運ぶデータを表示できないため、Wiresharkの使用をより困難にします。 Wiresharkが適切にセットアップされると、SSLを復号化し、生データを表示する機能を復元できます。.
プリマスターシークレットキーを使用してSSLおよびTLSを復号化する
Wiresharkでプリマスターシークレットキーを使用してSSLを復号化することをお勧めします。 A プリマスター秘密鍵 クライアントによって生成され、セッショントラフィックを暗号化するマスターキーを導出するためにサーバーによって使用されます。暗号化の現在の標準であり、通常はDiffie-Hellmanを介して実装されます.
ブラウザでプリマスターシークレットキーを記録することができます。これは、WiresharkがSSLおよびTLSセッションを解読するために使用します.
プリマスターシークレットキーを使用してSSLおよびTLSを復号化する手順は次のとおりです。
- 環境変数を設定する
- ブラウザを起動します
- Wiresharkを構成する
- セッションをキャプチャして解読する
終了したら、ターゲットサーバーにアクセスしなくても、WiresharkでSSLおよびTLSセッションを復号化できます。.
Windows環境変数を設定する
に ウィンドウズ, を使用して環境変数を設定する必要があります 高度なシステム設定 ユーティリティ。この変数は、 SSLKEYLOGFILE, プリマスター秘密鍵が保存されているパスが含まれています.
を右クリックして開始します ぼくのコンピュータ, そして選択 プロパティ メニューから。の システム メニューが開きます.
次に、クリック 高度なシステム設定 左側のリスト。の システムプロパティ ウィンドウが開きます.
で 高度な タブで、 環境変数 ボタン.
クリック 新着… 下のボタン ユーザー変数. また、変数を作成することもできます システム変数 システム上のすべてのユーザーのSSLキーをログに記録したいが、自分のプロファイルに制限したい場合.
下 変数名, 次を入力します。
SSLKEYLOGFILE
の中に 変数値 フィールドに、ログファイルへのパスを入力します。をクリックすることもできます ファイルを参照… ボタンをクリックし、ファイルピッカーを使用してパスを指定します.
注意として、これをシステム全体の環境変数として作成する場合は、適切なワイルドカードを使用するか、すべてのユーザーがアクセスできる場所にファイルを保存する必要があります。例えば、あなたは選ぶかもしれません %USERPROFILE%\ App Data \ ssl-keys.log または C:\ ssl-keys.log.
終了したら、クリックします OK 次の一連のステップに移動します.
LinuxまたはMac環境変数を設定する
に Linux そして マック, あなたが設定する必要があります SSLKEYLOGFILE 環境変数を使用して ナノ. に Linux, 変数はに格納されます 〜/ .bashrc. で マック, ファイルに変数を作成します 〜/ .MacOSX / environment.
ターミナルを開き、 Linuxでこのコマンドを使用します:
nano〜/ .bashrc
開いた 発射台, クリック その他, ターミナルを起動して Mac OSXでこのコマンドを実行します:
nano〜/ .bash_profile
次の手順は、両方のオペレーティングシステムで同じです。.
ファイルの最後に、次の行を追加します。
export SSLKEYLOGFILE =〜/ .ssl-key.log
押す Ctrl + X、Y 変更を保存するには.
ターミナルウィンドウを閉じて別のウィンドウを開いて変数を設定し、次のように入力して変数が正常に設定されたことを確認します。
echo $ SSLKEYLOGFILE
コマンドを実行すると、上の画像のような出力が表示されるはずです。. /Users/comparitech/.ssl-key.log SSLプリマスターキーログへのフルパスです。注:Wiresharkに入力するには、異なるものをメモしてください。.
変数が設定されたので、次の一連のステップに進むことができます.
ブラウザを起動し、ログファイルを確認します
Wiresharkを起動し、プリマスターキーを使用してSSLを復号化するように構成する前に、ブラウザーを起動して、ログファイルが使用されていることを確認する必要があります。.
ログにデータを入力するには、SSLが有効になっているサイトにアクセスすることが重要です。テストには独自のApacheサーバーを使用していますが、どのサイトでも機能します。プリマスター共有キーを使用する最大の利点の1つは サーバーにアクセスする必要はありません SSLを解読する.
SSL対応のウェブサイトにアクセスしたら、ファイルのデータを確認してください。に ウィンドウズ, 使用できます メモ帳. に Linux または マック, 次のコマンドを使用します。
cat〜/ .ssl-log.key
どのオペレーティングシステムでも、ファイルは上記のようになります。ブラウザが選択した場所にプリマスターキーを記録していることを確認したら、これらのキーを使用してSSLを復号化するようにWiresharkを設定できます.
SSLを復号化するためのWiresharkの構成
ブラウザがプリマスターキーをログに記録したら、これらのログを使用してSSLを復号化するようにWiresharkを設定します.
Wiresharkを開いてクリックします 編集, それから 環境設定. の 環境設定 ダイアログが開き、左側にアイテムのリストが表示されます。展開する プロトコル, 下にスクロールしてクリック SSL.
SSLプロトコルのオプションのリストに、次のエントリが表示されます (Pre)-Master-Secretログファイル名. 前の手順で設定したログファイルを参照するか、単にパスを貼り付けます.
設定が完了したら (Pre)-Master-Secretログファイル名, クリック OK Wiresharkに戻ります。先に進む準備ができました.
セッションをキャプチャしてSSLを復号化する
最後のステップは、テストセッションをキャプチャし、WiresharkがSSLを正常に復号化することを確認することです.
- フィルタリングされていないキャプチャセッションを開始し、最小化し、ブラウザを開きます.
- データを生成するために安全なサイトにアクセスし、オプションで「ssl」の表示フィルターを設定してセッションノイズを最小限に抑えます.
- 暗号化されたデータを含むフレームをクリックします.
私の場合、Webサーバーがブラウザに送信しているソースコードを確認したいので、テキスト/ HTMLエンコードのHTTPトラフィックを含むものを選択します。ただし、プリマスターシークレットキーを使用する暗号化トラフィックは、この方法で機能します。これには、Diffie-Hellmanまたは同等の鍵交換を通じてPerfect Forward Encryption(PFE)を利用するすべてのデータが含まれます.
暗号化されたフレームを選択したら、 パケットバイトビュー, 具体的には、ビューの下のタブ。次のエントリが表示されます 復号化されたSSL とりわけデータ.
私のセッションはまだゴミだらけで、HTMLが表示されていないように見えます。これは、私のWebサーバー(およびほとんどのApacheサーバー)がデフォルトでGZIP圧縮を使用しているためです.
クリックすると 圧縮されていないエンティティ本体 この場合、SSL復号化が有効になっている場合にのみ表示されるタブで、サイトのソースコードを表示できます。たとえば、プレーンテキストのデフォルトのApacheページのタイトル要素は次のとおりです。.
RSAキーを使用してSSLを復号化する
WiresharkにはRSAキーをアップロードし、それらを使用してSSLを復号化できるフィールドがあることに気づいたかもしれません。実際には, RSAキー復号化は非推奨です.
RSAキーを使用してSSLを復号化することが一般的に使用されなくなった理由は、Perfect Forward Encryption(PFE)によって廃止されたためです。 Diffie-Hellmanとネゴシエートされたセッションは、RSAキーを直接使用しません。代わりに、RAMにのみ保存され、ディスク上のキーを使用して暗号化されるワンタイムキーを生成します.
以前にRSAキーを使用してトラフィックをデコードし、動作を停止した場合、SSLロギングを有効にすることにより、ターゲットマシンがDiffie-Hellman交換を使用していることを確認できます。.
ロギングをオンにするには、をクリックします 編集 ツールバーメニューから選択します 環境設定. を展開する プロトコル 左側のメニュー項目を下にスクロールします SSL. ここから、クリックできます ブラウズ ボタンをクリックして、SSLログの場所を設定します.
場所が設定されると、すべてのSSL対話が指定されたファイルに記録されます.
SSL対応ホストとのセッションをキャプチャし、ログを確認します。具体的には、TLSハンドシェイクがネゴシエートされたフレームが見つかるまでスクロールする必要があります。暗号文字列に、わかりやすいDHEエントリが表示される可能性があります.
つまり、Diffie-Hellmanキー交換が有効になります。私の場合、Apacheは特に楕円曲線キーを持つDiffie-Hellmanを使用しています。 ECDHE.
さらにスクロールすると、マスターシークレットが見つからないことがわかります。.
ログがそのように見え、RSAキーを使用してトラフィックを復号化できない場合、上記のプリマスターシークレット方式に切り替える以外に選択肢はありません.
PFEは標準的な手法になりつつあり、TLSv1.3が問題を強制する可能性が高いため、単純なRSAキー復号化は非推奨であり、使用すべきではありません.
WiresharkはSSLトラフィックの解読を容易にします
WiresharkがSSL復号化を処理する方法がとても気に入っています。暗号化は複雑であり、標準はより安全にするために常に変化しています。ただし、Wiresharkと環境が適切にセットアップされたら、復号化されたデータを表示するためにタブを変更するだけです。それ以上簡単にはなりません.
語は、Wiresharkを使用してWebトラフィックを監視しようとしたことがある場合、おそらく問題が発生しています。その多くは暗号化されています。実際、ほとんどのサイトでは、ユーザーの安全を守るためにSSLまたはTLS暗号化を使用しています。この記事では、WiresharkでSSLを復号化する方法について説明されています。プリマスターシークレットキーを使用してSSLおよびTLSを復号化する方法や、Windows、Linux、Mac環境での環境変数の設定方法などが詳しく説明されています。この記事は、ネットワーク管理者やセキュリティエンジニアにとって非常に役立つ情報を提供しています。