mitmproxyで端末の通信内容を見る
mitmproxyとは
mitmproxyはコンソール型の通信監視ツールである。
mitmproxyは、プロキシを通じて通信サーバと端末の間に入り、その通信内容を表示する。
例えばモバイルのアプリケーションを開発している際に、端末から実際に行っている通信内容を確認したいときがある。
ログなどに出力すれば見ることはできるが、細かい情報を見ようとするならば実際に通信内容を見るしかない。
mitmproxyを使えば、リアルタイムに通信内容を確認できる。
今回はVirtualBox上のUbuntuにインストールして、Androidの通信を見てみた。
環境
- Ubuntu 14.04
- VirtualBox 4.3.20
- HTC J Butterfly (4.1.1)
インストール
pipを使ってインストールできる。
RUN apt-get -y update # Install pip sudo apt-get -y install python-dev sudo apt-get -y install libxml2-dev sudo apt-get -y install libxslt1-dev sudo apt-get -y install zlib1g-dev sudo apt-get -y install libffi-dev sudo apt-get -y install libssl-dev sudo apt-get -y install python-pip # Install mitmproxy sudo pip install mitmproxy
準備
端末
Androidの場合、Wi-Fi設定にてプロキシを設定できるのは3.2 以上のみである。
まず端末とmitmproxyの入ったUbuntuを同ネットワーク上に繋ぐ。
次に端末のWi-Fi設定から接続しているSSIDを長押しする。
そして「ネットワークを変更」から「詳細オプションを表示」にチェックを入れてプロキシを設定する。
プロキシのホストはUbuntuのIPアドレス、ポートは自由に設定できる。
証明書のインストール
mitmproxyを使うと、mitmproxyを通じて通信を行うことになるので、端末に証明書をインストールする必要がある。
まずmitmproxyを起動する。デフォルトのポートは8080なので、プロキシのポートを8080以外に設定した場合は、-pオプションで変更する。
mitmproxy -p 8001
証明書をインストールする方法は2つある。
- http://mitm.it にアクセスする。
- adb pushで証明書を端末に直接入れてインストールする。
http://mitm.it にアクセスする際はmitmproxyを起動しておかないと接続できない。
証明書はmitmproxyを1度実行後、~/.mitmproxy/mitmproxy-ca-cert.cer に置かれるのでこれをadb pushで端末に入れる。
証明書を端末に入れた後は、設定 -> セキュリティ -> ストレージからインストール でインストールできる。
使い方
mitmproxyはコンソールで操作するツールになっている。
左にカーソルがあり、見たい通信のところでEnterキーを押すことで詳しい中身が見れる。
下の画像はAmazonにアクセスしたときのリクエスト内容である。
tabキーを押すことでサーバからのレスポンスを確認できる。
その他にも通信内容を変更して送り返したり、通信のフィルタリングを行ったりといろいろな機能がある。
下記記事に詳しい使い方が書いてある。