[WireShark]TLS通信の復号解析(for mac)
![Nako80](https://res.cloudinary.com/zenn/image/fetch/s--I96QlriN--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_70/https://storage.googleapis.com/zenn-user-upload/avatar/48ea316543.jpeg)
[WireShark]TLS通信の復号解析(for mac)
推奨環境
Mac OS
## 概要
WireSharkというパケット通信解析のアプリケーションを使うと、
Http通信なら、WireSharkでパケット通信をしたときに、
どのURLにアクセスしたのかなど通信内容を容易に見ることができるが、
TLS通信だと中身が、Enclipted Application Dataとなっていて、
暗号化されていて見れない。
これを見れるようにしたいよね。
というお話。
これも、何でもかんでも見れるわけではなくて、
あくまで自分のブラウザで行ったTLS通信の復号になります。
TLS通信解析の手順
①WireSharkでWifiに接続
②ブラウザのTLS通信の復号キーが書き込まれるファイルの生成
③WireSharkでTLS復号ファイルを読み込んで、TLS通信復号
①WireSharkでWifiに接続
WireSharkでWifiに繋ぐ。
大体は、[Wifi:en0]を選べばいいと思う。
もし、このときPermission エラー(you don't have permission to capture on that device mac)が出たときの方法も書いておく。
コマンドプロンプトから
$ whoami
を実行し、表示される[ユーザー名]を控えておく。
次に、bpfの所有権のユーザー名とグループ名を変更する。
$cd /dev
$sudo chown [ユーザー名]:admin bp*
最後に、
$ls -la | grep bp
を実行し、出てきたリストに
[ユーザー名] admin
と書かれていることを確認する。
以上、ができたらParmissinoエラーが解消されて、
WireSharkで接続できるはずである。
②ブラウザのTLS通信の復号キーが書き込まれるファイルの生成
まず、
ホームディレクトリに移動し、.zshrcファイルを開く
$ cd ~
$ open ~/.zshrc
次に、
.zshrcファイルに書いて保存する。
「export SSLKEYLOGFILE = ~Desktop/pre-master-secret.log」
そして、
パスを通す
$ source ~/.zshrc
最後に、
グーグルのアプリケーションを起動
$ open -n "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
すると、デスクトップに
「pre-master-secret.log」ファイルが生成されている。
この中には、グーグルクロムブラウザで
TLS通信の復号用のキー情報が書き込まれている。
⏬、、、はず、だったけど、自分の環境では何もファイル内に書き込まれていなかった。実は、ネットでは.zshrcに書き込む環境変数の値が違う。
export SSLKEYLOGFILE = ~Desktop/pre-master-secret.log
の後に、
"/Applications/Google Chrome.app.Contents/MacOS/Google Chrome"
とつけて、クロームを起動するように書いている。
本当は、こうしたいけど、、、
パスをとおそおとすると、エラー。
なので、上記の方法でやってみてた。ファイル生成まではできてたけど、
中身がなかった。ちょっとこれ以上はわからない。🙏
一応その後の、ステップを
「pre-master-secret.log」ファイルに情報が書き込まれていた体で書いていく。
③WireSharkでTLS復号ファイルを読み込んで、TLS通信復号
このファイルをWireSharkに読み込ませてあげることで、
「pre-master-secret.log」と紐づいているブラウザのTLS通信の中身を
見ることができるようになる。
まず、TLSにファイルを読み込ませる設定をしていく。
WireSharkで、Preferences(設定)画面を開く
・WireShark >> Preferences..
そして、
・Protocol >> TLS
を開き、[(pre)-master-secret.log]で
デスクトップに保存しているファイルを指定する。
最後に、理由はよくわからないが下記の設定をしなければ、
初めはいいが、後々、うまくTLCの復号ができなくなるらしい。
・Protocol >> TCP
から
「Analyze TCP sequence numbers」にチェックをはずして、
「Reassemble out-of-order segments」にチェックをいれる
◆参考
[WiresharkでPermission エラーが出た時の処方箋(you don't have permission to capture on that device mac)]
[【Wireshark/Tshark】ブラウザのTLS通信をキャプチャ]
[HTTP/2 over TLS の通信をダンプする方法]_
[TLS 通信のパケットキャプチャ]
[DH鍵交換でもWiresharkでSSL/TLSを復号化したい]_