Androidのhttpsの通信をスニファーする方法(暫定版)です。
現在、某アプリの解析が忙しいので簡単な図による説明だけです。
あとでまとめます。m(_ _)m
尚、https/sslによる通信は、端末やサーバに不具合などの脆弱性が無い、端末やサーバを改造されたりしなければ、一般的に覗き見されることはありません。
ここに記載した内容は、Androidのアプリのhttpsの通信を解析することを目的とした、技術的なノウハウをまとめたものです。
Androidでhttps通信をスニファーするのは、iPhone、Windows Phoneと異なり、とても大変です。
理由は、以下の通りです。
(1)システム共通のプロキシーの設定が行えない。
(2)ルート証明書を変更することができない。(追加や削除を行うにはroot権限が必要)
(3)iptablesによるポートフォワーディングを行うことができない。(root権限が必要)
ということで、方法は2つあります。
(方法1)ポートフォワーディングを使う
参考:
技術 / Android / Emulator(AVD)の証明書ストアに証明書を追加する

・(1)実機からミログ系の検体アプリ、(2)ProxyDroid(透過型プロキシアプリ)を抜き出して、(3)エミュレータにインストールします。
・(4)ProxyDroid(Linuxのiptablesを使います)でAndroidの通信を外部PCで動作するBurp Proxy(非透過型プロキシ)に転送する設定を行います。
・(5)Burp ProxyのオレオレCA証明書をエミュレータに設定します。(6)Burp Proxyで特定ホスト名のサーバ証明書を返すように設定します。
これで、Burp Proxyでhttpsの通信をスニファーできます。
尚、Android Marketは実機のみで使え、正規の方法ではエミュレータでは使えないので、いずれにせよ実機は必要です。実機/エミュレータ共に正規の方法ではルート証明書を変更することができないので、エミュレータでもイメージの改造が必要です。
(2)AndroidのSSLのライブラリで証明書のチェックを無効化するように改造する
(あとで書く)
参考:
AndroidアプリケーションのSSL通信をプロキシで解析する(1)
最近のコメント