Fiddler Classicを使ってPC、スマートフォンのHTTPS通信を見る

2022年11月16日水曜日

セキュリティ

t f B! P L

環境

  • Windows上のFiddler Classic。ブラウザはChromeなどのChromium系。
  • iPhone(iOS)。ブラウザはsafari。

Androidを使っていたり別のブラウザ、別の拡張機能などを使いたい場合はその部分を適当に調べたりして読み替えてください。

まずはPC。Fiddler Classicのダウンロード、インストール

Fidder Classicのダウンロード。ダウンロードページに行く。

https://www.telerik.com/download/fiddler

Fiddlerの使い道、メールアドレス、国を聞かれるので適当に答えてチェックボックスにチェック入れてDownload For Windowsをクリック。

FiddlerSetup.exeをダウンロードしたら起動。ツールのインストール時あるあるの利用規約への同意やダウンロードディレクトリの指定を適当に進めてインストール。

インストールが終わるとInstall was successful!と書かれたページが起動するかもしれませんが、閉じてよし。

Fiddler Classicを起動。ダイアログが表示されるが遠慮なくCancel。これでインストール完了。

httpsの通信を見るための設定をする

まずは証明書のインストール。

ToolsのOptionsをクリックし、HTTPSタブを開いてDecrypt HTTPS trafficにチェックを入れる。チェックを入れるとルート証明書をインストールするかと聞かれるのでYesを押す。この後も確認やUACなどが出てくるので”はい”を押す。

Ignore server certificate errors(unsafe)、Check for certificate revocationにもチェックを入れておく。

proxyを設定する

Connectionsタブでポートを確認。デフォルトだと8888になっている。Act as system proxy on startupとMonitor all connectionsのチェックを外してFiddler再起動。この辺は好みで。

通信を見るためには通信の経路をブラウザ←→fiddler←→サーバーとfiddlerを中継させる必要がある。そのための設定。

Chromeの拡張機能であるProxy SwitchyOmegaをインストール。この拡張機能はプロキシの切り替えを簡単に行えるようにしてくれる。

Proxy SwitchyOmegaのオプションを開き、PROFILESのproxyをクリック。一番上の(default)のところのServerをlocalhost, Portを8888にして左下のApply changesで設定を保存する。(New profileで新しく作ってもいい)

設定が完了したら拡張機能のアイコンをクリックして設定したプロファイルを選択。これでブラウザの通信をfiddlerが見られるようになる。

実際にhttpsの通信を見る。

適当にhttpsなサイトを見に行く。https://www.python.org/

Hostがwww.python.orgな部分を探して見てみる。ツールバーのDecodeをクリックしておくと自動的にhttpsをデコードしてくれるので便利。

Your connection is not privateと言われてhttpsの通信が見えない

私の環境で問題が起こった。証明書が機能してない。

ブラウザの同期などで以前のバージョンのfiddler由来のルート証明書が入ってしまっていたことが原因らしい。

ルート証明書を入れ直す。OptionsのHTTPSタブからActionsをクリック。そしてReset All Certificatesをクリック。後は証明書のインストールと同様にyes, はいを選んでいく。

これでよし。

参考サイト(英語)

スマートフォンの通信を見る

Fiddler側の準備

fiddlerを閉じる。

https://www.telerik.com/fiddler/add-onsからCertMaker for iOS and Androidをダウンロード。ダウンロードしたfiddlercertmaker.exeを実行。

fiddlerを起動。

Tools, Options, Connectionsに進み、Allow remote computers to connectにチェックを入れる。

Tools, Options, HTTPSと進み、Certificates generated byのところがBCCertMakerになっていることを確認。確認したらActionsからReset All Certificationsをクリックする。いろいろダイアログなどが出るがすべて”はい”とか”yes”などを選択。

スマートフォン(iOS)のプロキシの設定

設定→Wi-Fiから今繋がってるWi-FiのSSIDのiマークをタップ。

プロキシを構成をタップ。

手動を選択してfiddlerを起動しているPCのIPアドレスとポートを入力(fiddlerのデフォルトは8888)。

保存。これでスマートフォン側の通信がPC上のFiddlerを中継するようになる。

スマートフォン(iOS)に証明書をインストール

iOS側のブラウザでで(PCのIPアドレス):8888にアクセスするとFiddler Echo Serviceが出てくる。FiddlerRoot certificationをタップして証明書をダウンロード。

iOS側で設定→一般→プロファイルといくとDO_NOT_TRUST_FiddlerRootがあるのでインストール。

インストールできたら設定→一般→情報→証明書信頼設定に行ってDO_NOT_TRUST_FiddlerRootをオンにする。

これでデバイス側のhttps通信が見られる。

つながらない場合

ルーターに原因がある場合

ルーターがデバイス同士での通信を拒否している可能性がある。その場合はルーターの設定画面に行って隔離機能、プライバシーセパレーター(メーカーや機種によって呼び方が違うかもしれない)の設定を切る。

ファイアウォールに原因がある場合

設定の確認。コントロールパネル→システムとセキュリティ→Windows Defender ファイアウォール→Windows Defender ファイアウォールを介したアプリまたは機能を許可。ここで通信を許可しているか確認。

ネットワークプロファイルがプライベート/パブリックのどちらかを確認する。たまに意図せず違う方に設定されてることがある。

タスクトレイからwifiを開いてプロパティ。

ネットワークプロファイルを確認。必要であれば設定する。

おわり

この記事が誰かの役に立つことを願っています。Happy Hacking!

参考

QooQ