Help us understand the problem. What is going on with this article?

【2019年12月版】mitmproxyでアプリの通信内容を確認したい

アプリ開発初心者なので

先日、自社で作成したアプリの最終チェックに関わったんですが、その時に「通信内容見たいな~」って思ったんですよ。まあサーバ側が見れればそこで見ればいいんですけど、昨今のアプリはいろんなところと通信するので、すべての通信内容を見れなかったりする事情もあるわけで。なので、そういう時に気軽に通信内容をチェックできるMan-In-The-Middleなproxyを立ててみようと思いました。

mitmproxy

ググると一発目でこいつに行き当たりました。ふーん、Fiddlerじゃないんだ。
Qiitaにも当然のように記事がたくさんあったので、まずは入れてみて動かしてみましょう。

導入手順

WSL導入

動作環境はWindows 10なので、まずはWSLを有効化します。
スタートメニューを右クリック->アプリと機能を選択。
2019-12-21_11h13_18.png

アプリと機能を選んでいきます。
2019-12-21_11h15_16.png

次にWindowsの機能の有効化・・・を選びます。
2019-12-21_11h15_41.png

ここでWSLを有効化します。
2019-12-21_11h17_25.png

次にWindowsの設定を開き、
2019-12-21_12h18_28.png

開発者モードをOn!
2019-12-21_12h18_54.png

再起動が求められたりするので、立ち上がったらWindows Storeでubuntuを探しましょう。
2019-12-21_12h22_13.png

はい。特に理由がなければLTSで。
2019-12-21_12h22_29.png

無事立ち上がります。
2019-12-21_12h26_02.png

mitmproxyのインストール

mitmproxyの導入はaptのおかげで至極簡単です。

sudo apt install python3-pip && sudo pip3 install -U pip && sudo pip3 install mitmproxy

2019-12-21_12h28_56.png

mitmproxyの起動と端末側の準備

シェルでmitmproxyとたたけば立ち上がります。
2019-12-22_07h44_17.png

SHIFT + Fでfollowモード(tailみたいな感じ)にしておきましょう。

これでmitmproxyが起動しましたが、準備はまだ終わっていません。端末側にproxyの設定と、mitmproxyの証明書をインストールする必要があります。
まずはproxyの設定。ポート指定してない場合は8080です。
1.png

次に証明書です。
端末側でブラウザを開き、mitm.itとアドレスに打ち込みます。
2.png

利用する端末のアイコンを選択して、証明書をダウンロードします。
IMG_0104.PNG

iOSの場合、これだけでは証明書が有効にならないようです。
設定を開くとプロファイルのインストールがアラートとして出てくるので、それを選択します。

IMG_0108.PNG

IMG_0105.PNG

最後に、設定 > 一般 > 情報 > 証明書信頼設定で有効にしておく必要があります。
IMG_0111.PNG

使ってみる。

まずはqiitaでも見てみましょう。(ブラウザですが)
IMG_0119.PNG

mitmproxyの方。よしよし。丸見えですね。
2019-12-22_08h13_52.png

アプリも見てましょう。例としてsmartnewsを開いた時の通信を見てみました。
2019-12-22_08h16_59.png

いい感じです。

見れないアプリもある。

証明書のpinning(これ、なんて訳すんでしょうね)という方法で中間者攻撃を無効化するというのは、比較的いろいろなアプリで実施されているようです。
先ほどsmartnewsの通信を垣間見ましたが、yahoo newsでは通信を見ることができません。証明書のpinningに対応しているものと思われます。
3.png

同様に、以前は通信内容を見ることができたAmazonなどのアプリも、中間者攻撃に対して対策がされているようで、mitmproxy動作下では正常に動作しないようです。
対策がされているアプリとそうでないアプリを調べていくのもなかなか楽しそうです。
逆に言うと、自分たちが作るアプリでも同様のことをしなくてはいけないケースを想定しなくてはいけませんね。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした