Android端末上のHTTP/HTTPS(SSL)通信内容を傍受・解析する方法

Android上で動作するアプリのネット通信の内容が気になったことってありませんか?
例えばアプリ開発でネット通信部分のデバッグを行ったり、アプリが個人情報を抜いていたりしていないか確認したい場合などなど・・・

そこで今回は、Android端末のHTTP/HTTPS通信の内容を、パソコン上にインストールしたFiddlerというソフトを使用して傍受する方法をご紹介いたします。

※パケットキャプチャ時の前提として、同一のプライベートネットワーク上にPCとAndroid端末が繋がっているものとします。

Fiddlerのインストール・起動
Fiddlerのインストール

まずは、Web通信のデバッグツールであるFiddlerをインストールします。
インストールは以下の通りです。

1.まずは、Fiddlerのダウンロードサイトに行きます。

temp

Fiddlerダウンロードサイト

・「How do you plan to use Fiddler?」の部分を使用用途に合わせて変更してください。
 ※私は「Website development/debugging」にしました。
・「Your email」にメールアドレスを入力してください。
・「Keep me informed about Fiddler and relevant offerings」は入力したメールアドレス
  にFiddlerとその関連情報のメールが欲しい場合にチェックを入れてください。
・「I accept the Fiddler End User License Agreement」にチェックを入れて、 
 「Download」ボタンを押せば、インストーラがダウンロードされます。

2.ダウンロードしたインストーラを実行して、以下の手順通りインストールを行います。

ラインセンス情報が表示されるので「I Agree」(同意)をクリックします。
temp

インストール先が聞かれるので、変更したい場合はインストール先を変更して、変更がない場合はそのままにして、「Install」をクリックします。

temp

インストール完了後、以下の画面がブラウザで表示されるので閉じます。

temp

Fiddlerの起動と設定

Fiddlerのインストールが完了したら、スタートメニューからFiddlerを起動してください。

※Windows8以降を使ってる方は以下のように、AppContainer経由のキャプチャをする方法についての通知が出ますが、今回はAndroid端末のパケットをキャプチャするのみなので「キャンセル」をクリックしてください。

temp

Fiddlerを起動すると以下のような画面が表示されます。

temp

この画面から、Fiddlerをプロキシ動作させる設定とHTTPS通信復号化の設定を行います。

メニューから「Tools」→「Telerik Fiddler Options」と辿り、以下の設定画面を表示させてください。

temp

「HTTPS」タブへ移動します。

temp

「Decrypt HTTPS traffic」にチェックを入れます。
チェックを入れると以下のダイアログが表示されるますが、Windows上のパケットをキャプチャするわけではないので、「No」を選択します。
temp

Decrypt HTTPS trafficにチェックを入れると、以下のように設定項目が増えるので、Decrypt HTTPS trafficチェックボックス直下のプルダウンメニューを「…from remote client only」に変更してください。

temp

次に「Connections」タブへ移動します。

以下の画面の通りとなりますので、「Fiddler listens on port」を「8888」に設定して、「Allow remote computers to connect」にチェックを入れてください。

temp

「Allow remote computers to connect」にチェックを入れると以下の画面が表示されますので「OK」をクリック。

temp

最後に設定画面で「OK」を押して閉じた後、Fiddlerを再起動します。

Android端末の設定
WiFiプロキシ設定

FiddlerでAndroid端末のパケットをキャプチャする前に、Android端末にてPCのFiddler経由でネット通信するよう設定します。
※Android 4を例として紹介します。

まず、PCのプライベートIPアドレスを確認します。
コマンドプロンプトを起動して「ipconfig」を実行し、192.168~から始まるIPをメモします。

このパターンではPCのIPは「192.168.1.6」となります。

temp

次にAndroid端末へ移動し、設定→WiFiと辿りWiFiの設定画面を表示します。
設定画面移動後、WiFi接続しているアクセスポイントをロングタップして、以下のメニューを表示後、「ネットワークを変更」をタップします。
temp

「ネットワークを変更」をタップすると、以下の画面となるので「詳細オプションを表示」にチェックを入れます。

temp

チェックを入れると設定項目が増えるので、「プロキシ」のプルダウンメニューを「手動」にして、プロキシホスト名の箇所にFiddlerをインストールしたPCのプライベートIPアドレスに、プロキシポートに「8888」を設定して、「保存」をタップします。

temp

以上でWiFiのプロキシ設定は終わりです。
次の証明書インストールへ進んでください。

ユーザ証明書のインストール

次にHTTPS通信の傍受に利用する証明書をAndroid端末にインストールします。

まず、Android端末上のブラウザを起動し、「http://ipv4.fiddler:8888」にアクセスして
「You can download the FiddlerRoot certificate」のリンク(赤下線部分)をタップして証明書をダウンロード後、証明書を開きます。

temp

証明書を開くと以下のダイアログが表示されるので、証明書名を「Fiddler」に、認証情報の使用を「Wi-Fi」にしてOKをクリックします。

temp

以上で、Android端末への証明書のインストールは完了しましたので、これで準備は完了です。

HTTP/HTTPS通信の傍受方法
傍受方法

以上の設定が完了したら、通信傍受を行ってみます。
試しに私が用意したテキストファイル (HTTPS通信対応のサーバに設置)をAndroid端末で表示してみて、通信内容がPC上のFiddlerで見れるか確認してみます。

PC上にFiddlerを起動してAndroid端末で予め用意していたテキストファイルにアクセスします。

temp

Android端末でHTTPS通信

すると、Fiddler上にAndroid端末でHTTPS通信した内容が傍受され表示されることが確認できます。

temp

PC上のFiddlerの画面

Fiddlerの画面には左側に各HTTP(S)通信の一覧が表示されるので、表示したい通信をダブルクリックすると、右上にリクエスト内容、右下にレスポンス内容が表示されます。

このように、HTTPS通信の内容が復号化されて表示されたことが確認できます。

後始末

最後に、通信内容の確認が一通り終わったら、後始末を行います。

・Android端末のWiFiプロキシ設定削除
 Android端末に設定したWiFiプロキシ情報を削除します。
 (これを行わないとFiddlerを終了した場合は、設定したWiFiアクセスポイントでの通信が行えません)

 まず、「設定」→「WiFi」へとたどり、プロキシ設定を行ったアクセスポイントをロングタップして「ネットワークを変更」をタップします。

temp

すると以下の画面が表示されるので、「プロキシ」所を「設定しない」に変更して、「保存」ボタンをタップします。

temp

以上で、WiFiプロキシ設定の削除は完了です。

・Android端末のユーザ証明書削除
 Android端末の設定でインストールしたユーザ証明書を削除します。
 (これを行わないと、Android端末に第三者に監視されている等の警告が表示されます)

 まず、「設定」→「セキュリティ」→「信頼できる認証情報」へとたどり、「ユーザー」をタップします。

temp

すると、以上のように「DO_NOT_TRUST」という証明書があるので、タップします。

タップすると、以下のセキュリティ証明書の詳細が表示されるので、下までスクロールします。

temp

下までスクロールしたら「削除」ボタンをタップして、証明書を削除します。

以上でユーザ証明書の削除は完了です。

最後に

Android端末上のHTTP(S)通信を傍受できればデバッグや、アプリが不正な挙動を行っていないか確認できていろいろと捗るかと思います。
この記事がお役に立てば幸いです。

何かあればコメントください。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする