stylesheet

2017-10-12

mitmproxyでandroidの通信を改竄

mitmproxyはhttpsに対応したman-in-the-middle型のプロキシサーバー。
PC側でmitmproxyを起動してAndroid実機へプロキシ設定するだけでお手軽に通信を覗いたり改竄することができる。 Android端末にrootも不要なので、テストがとても捗る。

これでハイスコア更新したりありえない場所にワープしたりするのが流行ったとかなんとか。

PC側

インストール

Windowsはインストーラーがある。Ubuntuはバイナリパッケージを使うかaptで。

$ sudo apt install mitmproxy

起動

$ mitmproxy

デフォルトでポート番号8080で起動する。

Android側

WiFi接続へプロキシを設定する。
設定Wi-Fiから接続のネットワークを変更

プロキシのホスト名 192.168.1.xxx (PC側のIPアドレス)
プロキシポート   8080

ブラウザでhttp://mitm.itへアクセスしてAndroid用の証明書をインポートする。

以上で設定完了。

この状態で端末側で通信を発生させるとmitmproxyの画面にずらずらと出力されるはず。
操作方法は?を入力するとヘルプが表示されるのでそちらを参照。

便利機能

リミット

正規表現パターンでの絞り込み(フィルタリング)が行える。 lキーを押してパターンを入力。

インターセプト

パターンに一致した通信を止めて書き換えることができる。 iキーを押してパターンを入力。
通信内容を改竄するにはインターセプトしたフローを選択してEnterキーで内容を表示、eキーで編集モードに入る。
編集を完了したらaキーで通信を再開。
一度のインターセプトでリクエストとレスポンスの2回改竄機会がある。

リプレイ

一度行った通信を内容を書き換えて再送できる。rキー。

ヘッダー追加

リクエストかレスポンスにヘッダーを追加できる。 o次にHキー。 コマンドラインからは--setheader

スクリプティング

pythonスクリプトで自動処理できる。 o次にSキー。 コマンドライン引数は-s

# antiapple.py
def request(context, flow):
  if flow.request.host.startswith('apple.com'):
    flow.request.host = 'google.com'
$ mitmproxy -s antiapple.py

お金(コイン)を扱うものはちゃんとして欲しいのだけどなぁ