burp proxy と呼ばれる無料のパケット解析ソフトがあります。proxyとして動作するのでandroid や iphone のパケットを解析することができます。android からwifi接続でproxyアクセスするように設定すると、burpproxyが通信を仲介してパケットのログを取得してくれます。接続を仲介している為、SSLパケットを復号することもできます。対応しているプロトコルは、http とwebsocketです。それ以外のパケットの解析はできません。類似のソフトにFiddlerがあります。こちらでも同様のことが可能です。また、burp proxy は、javaで動作しており、インストーラにjavaのパッケージが含まれています。javaの環境を別途用意する必要はありません。
burp proxy を利用してandroidのパケットを解析する場合、上図のように同一の無線LAN親機を利用するPCが必要になります。親機からPC,Android双方にDHCPでIPが割り振られて入れば、AndroidからBurpProxyに接続できます。この方法を用いるとMITM proxyのような環境を容易に構築できます。導入方法は、下記手順となります。
mitm リバースproxy reverse
導入方法(PC側)
①下記サイトから、Burp Proxy CommunityEditionをダウンロードします。Community版は、脆弱性の調査機能や、パケット改ざん機能に制限がありますが、パケット解析は可能です。下図のようにCommunityEditionのWindows64bit版を選択し、ダウンロードをクリックします。ここでは、Windows 64bitの環境として説明を進めていきます。
https://portswigger.net/burp/releases/community/latest
②インストーラーを起動し、Burp proxyをPCにインストールします。ウィザードに従ってインストールしてください。注意点は特にありません。
インストール後、スタートメニューに下記のプログラムが登録されます。
③スタートメニューから上記のburp proxy を起動します。
下記画面が表示されます。今回は、一時的なプロジェクトを選択してNextのボタンを押します。
④設定はデフォルトを選択し、StartBurpを押します。デフォルト設定で起動した場合、127.0.0.1 ポート番号8080としてProxyサーバーが開始されます。この後の手順で一部設定を変更します。
⑤BurpProxyを起動すると、下記メイン画面が表示されます。proxyが稼働した状態で左上のCapturing スイッチがオンであれば、パケットがキャプチャされます。まず、デフォルトの設定を一部変更します。メニュー下にあるタブからProxyタブをクリックします。
⑥Proxyタブをクリックすると、下記画面が表示されます。デフォルト設定では、Intercept On となっているので、クリックし、Offにします。Intercept On になっていると、proxyが仲介するデータを一旦保持して、通信が止まった状態になります。パケットを改変したりしたい場合、この機能を使います。今回は、必要ない為、Offにしておきます。
⑦proxyタブのサブのタブでoptionタブを選択します。
Editボタンを押します。
⑧Proxyサーバーのアドレスを設定するダイアログが表示されます。
今回は、Androidからアクセスできるように、DHCPから振られたアドレスに変更します。spcific address にチェックを付け、コンボボックスの▼ボタンを押すとアドレスの候補が出ます。DHCPからPCに振られたアドレスがあれば、それを選択します。その後、OKボタンを押します。
⑨変更したIPアドレスでProxyが再起動します。Firewallのブロック画面が出るので許可してください。
⑩SSLパケットの解析の必要がないなら、設定はこれで完了です。SSLパケットも解析する場合、次の手順でパケット解析用のSSL鍵を用意します。
先ほどのProxyタブのoptionサブタブを表示します。
今度は、import/export CA Certification のボタンを押します。
⑪表示されたダイアログでCertificate in DER format をチェックし、Nextを押します。
⑫証明書の出力ファイルパスを入力します。例では、デスクトップにcecert.cer という証明書を出力します。このファイルは、後でAndroid側で使用されます。
PC側の設定は、これで終わりです。
⑬proxyサーバーで通信が発生した場合、下記のProxyタブのサブタブである、HTTP historyタブと TargetタブのSitemapに通信ログが表示されます。
導入方法(Android側)
①Androidのproxy設定を変更します。例では、Android6.0を利用してますが、ご使用の環境に読み替えて設定してください。
まず設定アプリを立ち上げ、WiFiを選択します。
②接続しているAPポイントを長押しし、"ネットワークを変更"をタップします。
③プロキシ設定を手動に変更します。
④設定をスライドさせると、IPアドレスとポート番号の設定箇所がります。今回の環境では、192.168.11.7 と8080のポート番号を設定します。ご使用の環境に合わせて入力してください。プロキシポートは、薄い色で8080と表示されていますが、8080を入力し直さないと保存できないので注意してください。
⑤SSLパケットを解析する場合、証明書のインストールを行います。
(PC側の設定で作成した証明書ファイルをSDカードもしくは、USBケーブル等を利用して端末にコピーしておいてください。ここでは、SDカードのdownloadフォルダに格納しました。)
設定アプリのセキュリティをタップします。
⑥認証情報ストレージの"SDカードからインストール"をタップします。
⑦ここでは、SDカードのDownloadフォルダに格納してるcecert.cerをタップします。
⑧証明書名を指定する画面が出ます。任意の名前を入力してください。ここれは、burpと入力しておきます。
⑨証明書の登録を確認します。先程の認証情報ストレージの画面から"信頼できる認証情報"をタップします。表示された画面で"ユーザー"をタップします。PortSwigger と表示されていれば、証明書のインストールが完了しています。(証明書を削除したい場合、この画面で証明書をタップし、表示されたポップアップの最下部にある削除ボタン押して下さい。)
設定は、以上で完了です。あとは、chrome 等でwebページを閲覧すれば、BurpProxy の画面にパケット解析ログが表示されます。
より詳しい情報は、下記公式サイトを参考にしてください。
getting started with burp suite
https://portswigger.net/support/getting-started-with-burp-suite
documentation