はじめに
tcpdump や Proxy を使わずに Wireshark だけで TLS 通信の復号に成功しました。たくさんの人が同じようなことをやっていますが、自分用メモとして残しておきます。OS は Windows10 、ブラウザは Chrome です。
設定手順
TLS で暗号化する際に生成した鍵情報をファイルに出力する
Windowsキー + R で「ファイル名を指定して実行」画面を出し、「control」と入力して「OK」を押します。
以下のように入力します。
変数名 SSLKEYLOGFILE
変数値 C:\temp\tls.keys
「OK」をクリックし、Windows を再起動します。
Wireshark 設定
Chrome を起動し、c:\temp\tls.keys のファイルが作成されていることを確認します。
wireshark を起動し、「編集」→「設定」をクリックします。
「TLS」までスクロールし、「(Pre)-Master-Secret log filename」に「c:temp\tls.keys」と入力し、「OK」をクリックします。
パケットキャプチャする
HTTPS のページなら何でもいいのですが、Qiita の**マイページ**をサンプルとします。
Wireshark を起動し、パケットキャプチャするポートを指定します。わたしの場合は「イーサネット」です。
いきなりキャプチャが始まりますが、まだ心の準備ができていないので一旦止めます。
サメの背びれボタンを押すとキャプチャが始まります。先程少しだけキャプチャしたパケットを保存するかを聞かれるので、「Continue without Saving」をクリックします。
キャプチャが始まるので、ブラウザをリロードします。リロードが終わったらキャプチャを止めてください。
パケットを探す
左側のプルダウンで「パケットの詳細」を選択、真ん中のプルダウンで「文字列」を選択。右側のフォームに検索したい文字列を入力します。今回の場合「quora」という文字が特徴的なので、これを持つパケットを検索します。
見つかりました。ペイロードが復号されているので、他の文字も丸見えです。
まとめ
これらの操作により、ブラウザがどのような通信をしているかが簡単に見られるようになりました。
IP を絞り込むことで、拡張機能の通信なども調べられそうです。
Wireshark のフィルタや機能を改めて勉強して、更に効率よく調査ができるようになりたいと思います。
おまけ
パケット検索の際に表示される左側のプルダウンの項目は、それぞれ以下のペインを示しています。
ペイロードだけではなく、HTTP ステータスや DNS クエリでも検索できるので参考にしてください。