Open1

[WireShark]TLS通信の復号解析(for mac)

Nako80Nako80

[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)]
https://qiita.com/godgarden/items/a7c44d6b3b8cd5b5f4d6

[【Wireshark/Tshark】ブラウザのTLS通信をキャプチャ]
https://chigusa-web.com/blog/wireshark-setup/2/

[HTTP/2 over TLS の通信をダンプする方法]_
https://gist.github.com/summerwind/a482dd1f8e9887d26199

[TLS 通信のパケットキャプチャ]
https://please-sleep.cou929.nu/decrypting-tls-traffic-packet-capture.html

[DH鍵交換でもWiresharkでSSL/TLSを復号化したい]_
https://cipepser.hatenablog.com/entry/2017/04/08/110945