ubuntuでFirefoxのTLS通信をキャプチャする。

ブラウザにFirefoxを使っている場合、TLS通信をキャプチャできる方法があるので書いてみます。試した環境は以下です。

OS:ubuntu 18.04 LTS
ブラウザ:Firefox Quantum
キャプチャツール:Wireshark(Version 2.6.3)

まず、TLSの通信で使う鍵をファイルに書き出すように環境変数を設定します。設定する環境変数は「SSLKEYLOGFILE」です。コンソール画面を立ち上げて、以下のようにします。

$ export SSLKEYLOGFILE=/home/user/sslkey.log
$ env | grep SSLKEYLOGFILE
SSLKEYLOGFILE=/home/user/sslkey.log

※「/home/user/sslkey.log」は任意の場所、ファイル名で構いません。

Firefoxをコンソールからコマンドで立ち上げます。

$ which firefox
/usr/bin/firefox
$ /usr/bin/firefox

Firefoxが立ち上がり、コンソールは待ち状態になります。別ウィンドウでコンソールを開いて、SSLKEYLOGFILE が書き出されていることを確認します。

$ ls -l /home/user/sslkey.log

[広告]

ここまででキャプチャする準備が整いました。ここからはWiresharkの設定をします。Wiresharkを起動して、上部の「編集」メニューから「設定..」を選択します。設定画面が表示されるので左ウィンドウから「Protocols」を選び、そのなかの「SSL」を選択します。

(Pre)-Master-Secret log filename に SSLKEYLOGFILE の場所を指定します。これでキャプチャを開始するとTLS通信の中身が解析できるようになります。

注意点です。
マウス操作でFirefoxを立ち上げてもSSLKEYLOGFILEで指定したファイルには書き込まれません。コンソールで環境変数を設定した上で、コマンドでFirefoxを立ち上げてください。

なお、Firefoxをマウスを使って閉じるとコンソール画面では「接続が相手からリセットされました」となりますが、気にしなくても良いでしょう。

ubuntuにWiresharkをインストールする。

ubuntu 18.04 LTS に Wireshark(Version 2.4.5) をインストールしてみました。そのときの気づきのメモです。Wireshark は「ubuntuソフトウェア」からインストールしました。

インストールの途中に「非特権ユーザ(root以外のユーザ)がパケットをキャプチャできるようにしますか?」と聞かれるのでチェックをつけておく。(チェックをつけておいたのだけど、root以外のユーザではダメみたい。後述。)

インストールが無事終わったので、Wiresharkを起動してみる。キャプチャできるインターフェースが表示されるので任意のインターフェースを選択し、上部のラベルから「キャプチャ」→「開始」を選び実行しました。が、「Couldn’t run /usr/bin/dumpcap in child process:許可がありません」のメッセージが出てしまい、起動に失敗。。

どうやら権限がない模様。調べてみると他の方も同様の問題にあたったようでいろいろとネット上には情報がありました。で、整理してみて、以下の対応で起動できるようになりました。

[広告]

まず、起動させるときのユーザ(ここでは「usr1」とします、各自の環境にあわせてください)のid情報を確認します。


$ id usr1
uid=1000(usr1) gid=1000(usr1) groups=1000(usr1),4(adm),・・・,126(sambashare)

次に、Wiresharkをインストールした際に「wireshark」のグループがOSに作成されていますので、それを確認します。

$ grep usr1 /etc/group
adm:x:4:syslog,usr1
usr1:x:1000:
 :
sambashare:x:126:usr1
wireshark:x:128:usr1 ← ココです。

Wiresharkを起動する権限がないため、usr1を「wireshark」のグループに追加します。

$ sudo usermod -aG wireshark usr1

このとき、usermodのオプションは「a」と「G」の両方が必要みたいです。はじめ「a」だけの指定で usermod を実行したらエラーとなってしまいました。ちなみに、usermod の使い方のメッセージは次のようになっていました。

  • -G, –groups GROUPS 新たな補助グループのリストを与える。
  • -a, –append ユーザを (-G で指定された) 補助グループ群GROUPS に追加する。他のグループからの削除は行わない。

再度、id情報を確認します。


$ id usr1
uid=1000(usr1) gid=1000(usr1) groups=1000(usr1),4(adm),・・・,126(sambashare),128(wireshark)

末尾に「128(wireshark)」のグループが追加されていることが確認できます。これで「wireshark」のグループに追加されました。改めてWiresharkを起動すると、今まで表示されていなかったインターフェースが表示され、上部のラベルから「キャプチャ」→「開始」でキャッチャできるようになりました。