Android スマホのSSLパケットを解析する方法

 burp proxy と呼ばれる無料のパケット解析ソフトがあります。proxyとして動作するのでandroidiphone のパケットを解析することができます。android からwifi接続でproxyアクセスするように設定すると、burpproxyが通信を仲介してパケットのログを取得してくれます。接続を仲介している為、SSLパケットを復号することもできます。対応しているプロトコルは、http とwebsocketです。それ以外のパケットの解析はできません。類似のソフトにFiddlerがあります。こちらでも同様のことが可能です。また、burp proxy は、javaで動作しており、インストーラjavaのパッケージが含まれています。javaの環境を別途用意する必要はありません。

f:id:russianble:20200302161528j:plain

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 

 

f:id:russianble:20200302123647j:plain

 

インストーラーを起動し、Burp proxyをPCにインストールします。ウィザードに従ってインストールしてください。注意点は特にありません。

インストール後、スタートメニューに下記のプログラムが登録されます。

f:id:russianble:20200302123726j:plain

③スタートメニューから上記のburp proxy を起動します。

下記画面が表示されます。今回は、一時的なプロジェクトを選択してNextのボタンを押します。

f:id:russianble:20200302123746j:plain

④設定はデフォルトを選択し、StartBurpを押します。デフォルト設定で起動した場合、127.0.0.1 ポート番号8080としてProxyサーバーが開始されます。この後の手順で一部設定を変更します。

f:id:russianble:20200302123640j:plain

 

⑤BurpProxyを起動すると、下記メイン画面が表示されます。proxyが稼働した状態で左上のCapturing スイッチがオンであれば、パケットがキャプチャされます。まず、デフォルトの設定を一部変更します。メニュー下にあるタブからProxyタブをクリックします。

f:id:russianble:20200302123701j:plain

 

⑥Proxyタブをクリックすると、下記画面が表示されます。デフォルト設定では、Intercept On となっているので、クリックし、Offにします。Intercept On になっていると、proxyが仲介するデータを一旦保持して、通信が止まった状態になります。パケットを改変したりしたい場合、この機能を使います。今回は、必要ない為、Offにしておきます。

f:id:russianble:20200302123656j:plain

 

⑦proxyタブのサブのタブでoptionタブを選択します。

Editボタンを押します。

f:id:russianble:20200302123713j:plain

 

Proxyサーバーのアドレスを設定するダイアログが表示されます。

今回は、Androidからアクセスできるように、DHCPから振られたアドレスに変更します。spcific address にチェックを付け、コンボボックスの▼ボタンを押すとアドレスの候補が出ます。DHCPからPCに振られたアドレスがあれば、それを選択します。その後、OKボタンを押します。

f:id:russianble:20200302123722j:plain

 

⑨変更したIPアドレスでProxyが再起動します。Firewallのブロック画面が出るので許可してください。

f:id:russianble:20200302123652j:plain

 

SSLパケットの解析の必要がないなら、設定はこれで完了です。SSLパケットも解析する場合、次の手順でパケット解析用のSSL鍵を用意します。

先ほどのProxyタブのoptionサブタブを表示します。

今度は、import/export CA Certification のボタンを押します。

f:id:russianble:20200302123717j:plain

 

⑪表示されたダイアログでCertificate in DER format をチェックし、Nextを押します。

f:id:russianble:20200302123738j:plain

⑫証明書の出力ファイルパスを入力します。例では、デスクトップにcecert.cer という証明書を出力します。このファイルは、後でAndroid側で使用されます。

PC側の設定は、これで終わりです。

f:id:russianble:20200302123742j:plain

 

proxyサーバーで通信が発生した場合、下記のProxyタブのサブタブである、HTTP historyタブと TargetタブのSitemapに通信ログが表示されます。

f:id:russianble:20200302123708j:plain

f:id:russianble:20200302123733j:plain

 

 導入方法(Android側)

Androidのproxy設定を変更します。例では、Android6.0を利用してますが、ご使用の環境に読み替えて設定してください。

まず設定アプリを立ち上げ、WiFiを選択します。

f:id:russianble:20200302123904p:plain

 

②接続しているAPポイントを長押しし、"ネットワークを変更"をタップします。

f:id:russianble:20200302123910p:plain

 

③プロキシ設定を手動に変更します。

f:id:russianble:20200302123808p:plain

 

④設定をスライドさせると、IPアドレスとポート番号の設定箇所がります。今回の環境では、192.168.11.7 と8080のポート番号を設定します。ご使用の環境に合わせて入力してください。プロキシポートは、薄い色で8080と表示されていますが、8080を入力し直さないと保存できないので注意してください。

f:id:russianble:20200302123816p:plain

 

SSLパケットを解析する場合、証明書のインストールを行います。

(PC側の設定で作成した証明書ファイルをSDカードもしくは、USBケーブル等を利用して端末にコピーしておいてください。ここでは、SDカードのdownloadフォルダに格納しました。)

設定アプリのセキュリティをタップします。

f:id:russianble:20200302123829p:plain

 

⑥認証情報ストレージの"SDカードからインストール"をタップします。

f:id:russianble:20200302123837p:plain

 

⑦ここでは、SDカードのDownloadフォルダに格納してるcecert.cerをタップします。

f:id:russianble:20200302123844p:plain

 

⑧証明書名を指定する画面が出ます。任意の名前を入力してください。ここれは、burpと入力しておきます。

f:id:russianble:20200302123851p:plain

 

⑨証明書の登録を確認します。先程の認証情報ストレージの画面から"信頼できる認証情報"をタップします。表示された画面で"ユーザー"をタップします。PortSwigger と表示されていれば、証明書のインストールが完了しています。(証明書を削除したい場合、この画面で証明書をタップし、表示されたポップアップの最下部にある削除ボタン押して下さい。)

設定は、以上で完了です。あとは、chrome 等でwebページを閲覧すれば、BurpProxy の画面にパケット解析ログが表示されます。

f:id:russianble:20200302123858p:plain
f:id:russianble:20200302123822p:plain

 より詳しい情報は、下記公式サイトを参考にしてください。

getting started with burp suite

https://portswigger.net/support/getting-started-with-burp-suite

documentation

https://portswigger.net/burp/documentation