Wireshark

Ref.

  • Wireshark
  • https://gist.github.com/summerwind/a482dd1f8e9887d26199

Wiresharkのフィルタ

Wiresharkのフィルタには以下の2つがある。

  • キャプチャフィルタ・・・基本的にtcpdumpと同じ構文
  • 表示フィルタ・・・キャプチャフィルタとは全く異なる構文(構文がことなることに注意)

キャプチャフィルタ

※ 実際のキャプチャ設定画面のスクリーンショットは省略(例:en0 tcp port 443 のように指定)

表示フィルタ

※ 実際の表示フィルタ画面のスクリーンショットは省略(例:tcp.port == 80のように指定)

TLSを見る

TLS通信は暗号化されているのでデータを見ることはできない。 以下を参考に、SSLKEYLOGFILEで取得したセッション鍵をWiresharkに読み込ませることでTLSを復号して中身(HTTP等)を表示する。
ただしHTTP/2で配信されているコンテンツの場合、Wiresharkのバージョンによってはストリームの再構成・デコード機能が制限されており、復号はできてもHTTPリクエスト/レスポンスとして正しく表示されないことがある点に注意。

ref.

  • https://gist.github.com/summerwind/a482dd1f8e9887d26199
  • https://firefox-source-docs.mozilla.org/security/nss/legacy/key_log_format/index.html
  1. tls_key.logファイルを作成
  2. Wiresharkの(Pre)-Master-Secret log filenameを設定
  3. Google Chromeを起動

上記の順番は重要。

tls_key.logファイルを作成

SSLKEYLOGFILEに指定するファイルを作成。
ファイル名・パスは任意(例はtls_key.log)。

Wiresharkの(Pre)-Master-Secret log filenameを設定

Wireshark > Preferences > TLS > (Pre)-Master-Secret log filename にSSLKEYLOGFILEで指定したファイルを設定する。

環境変数SSLKEYLOGFILEを指定してGoogle Chromeを起動

以下のようにChromeを起動することで共通鍵をtls_key.logに出力する。

$ env SSLKEYLOGFILE=/path/to/tls_key.log "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"

SSLKEYLOGFILEは絶対パスで指定しないとうまく動作しない。

参考

  • https://www.youtube.com/watch?v=RvlnchPUiI4&t=504s
  • https://www.youtube.com/watch?v=A69du3TBMF8
  • https://www.youtube.com/watch?v=OkXOZse81tU&t=496s