mitmproxyを使用してネットワークトラフィックを検査する方法

author
0 minutes, 32 seconds Read

最新のアプリのほとんどはApiに依存 “-私はいかにあなたのカタログにアクセスしてもいいですか。 -ここにそのためのAPIがあります。 “Apiはどこにでもあり、それは変更されようとしていません。

コードの各部分を別々のサービスに分割することは(多くの場合)良いことですが、テストに関しては、この分離は物事を少し難しくするかもしれません。

フロントエンドアプリ開発者は、コアビジネスロジックを処理するコードを記述しなくなりました。 一般的に、複雑なデータ処理タスクはAPI側で行われ、フロントエンドアプリはAPIによって提供されるものを表示するだけです。

これが、アプリからAPIへのデータパスをたどることが非常に重要な理由です。 アプリをテストして検証するときは、次の質問に答えることが重要です:

  • アプリはこの画面にどのAPI-endpointを使用していますか?
  • APIによって提供される応答には何が含まれていますか?
  • APIレスポンス構造が変更された場合はどうなりますか?

このチュートリアルの終わりまでに、mitmproxyを使用してこれらの質問に答えることができるはずです。 しかし、あなたは、この素晴らしいツールで行うには、より多くのものがあり、表示されます。

mitmproxyの仕組み

始める前に…

別のツールの代わりにmitmproxyを使用する必要がある理由が不思議に思うかもしれません。 そして、それは良い質問です(誇大宣伝に従わないでください!).

私の最初の引数は価格です:Mitmproxyは無料です(MITライセンスの下でリリースされます)Charles Proxyのライセンスは約50$です。

また、mitmproxyは非常に強力なツールです : トラフィックを書き換えるオプションを提供するだけでなく、Pythonスクリプトを実行して要求と応答を変更することもできます。 これは、エッジケースをテストしようとするときに本当に便利です。

終了するには、mitmproxyはwebインターフェイスやコマンドラインでどこでも実行できます。

インストール

mitmproxyをインストールするには複数の方法があります。 Brewを使用することは”標準的な”方法ですが、私は個人的にDockerを介してそれを使用することを好みます : それは私がPythonのバージョンを扱うのを防ぎ、また私のMacをきれいに保つのに役立ちます。 さらに、それは本当に簡単で、特にDockerの知識は必要ありません。

取付けのために、あなたがとの最も快適に感じる方法を自由に選ぶことを感じて下さい。

Brewを使用する

すでにbrewがコンピュータにインストールされていて、すべてがうまくいけば、この簡単なコマンドを実行するだけで十分です:

brew install mitmproxy

mitmproxyがインストールされたら、直接Let’s run mitmproxyセクションにジャンプすることができます。

Dockerを使用する

公式のDockerイメージを使用してmitmproxyを実行するのは、次のコマンドを実行するのと同じくらい簡単です:

docker run --rm -it -p 8080:8080 mitmproxy/mitmproxy:4.0.4

毎回テストデバイスにmitmproxyの証明書をインストールする必要がないようにするには、コンテナの証明書フォルダをローカルの証明書フォルダと共有す

このようにして、Dockerコンテナが強制終了された後でも証明書は永続化されます。

docker run --rm -it -v /your/local/folder:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy:4.0.4

このコマンドの使用を簡単にするには、~/.bash_profileにエイリアスを追加します :

alias mitmproxy='docker run --rm -it -v /your/local/folder:/home/mitmproxy/.mitmproxy -p 8080:8080 mitmproxy/mitmproxy:4.0.4'

また、ファイルを編集した後にsource ~/.bash_profileを実行することを忘れないでください。

mitmproxyを実行してみましょう

どのようにインストールしても、次のコマンドでmitmproxyを起動できるようになりました:

mitmproxy

プログラムが起動した場合は、おめでとう! あなたは続けることができます!

mitmproxy is alive

ターゲットデバイス上のネットワーク設定

mitmproxyは、リバースプロキシ、透過プロキシ、または通常のプロキシとして実行できます。 物事をシンプルに保つために、我々は通常のプロキシとしてそれを使用します。

この方法でプログラムを使用する方が確かに簡単ですが、プロキシを設定するためにターゲットデバイスのネットワーク設定を変更できることを意

これは、iOSやAndroidデバイスからの要求を検査する必要があるが、ネットワークの詳細設定を提供していないデバイスではより複雑になる場合には、本当に簡

ターゲットデバイスに応じて、対応するサブチュートリアルに従ってください :

  • iOSデバイスでプロキシを設定する
  • Androidデバイスでプロキシを設定する
  • tvOSデバイスでプロキシを設定する

自己署名証明書をインストールする

この時点で、mitmproxyを起動すると、デバイスはHTTPトラフィックを受け入れますが、デバイスから直接来ていないHTTPSリクエストは拒否しますサーバー。 その理由は簡単です:あなたがそうするように依頼しない限り、あなたのデバイスは自己署名証明書を受け入れません。

HTTPS要求を傍受するには、ターゲットデバイス上でmitmproxyが使用する証明書を設定する必要があります。 これにより、デバイスは実サーバーの代わりにコンピュータからの安全な要求を受け入れることができます。

自己署名証明書のインストールの複雑さは、実際に検査する必要があるデバイスの性質によって異なります。 基本的には、「非常に単純」から「不可能」になります。

ターゲットデバイスに応じて、対応するサブチュートリアルに従ってください :

  • iOSデバイスへの自己署名証明書のインストール
  • Androidデバイスへの自己署名証明書のインストール
  • tvOSデバイスへの自己署名証明書のインス

証明書

通話を傍受しましょう

証明書がインストールされたら、通話を傍受する準備が整いました。 Mitmproxyをもう一度起動するには、次のようにします:

mitmproxy

ターゲットデバイスで、アプリを開き、端末に新しい行が表示されているかどうかを確認します。

mitmproxy

あなたが要求を参照してください場合は、おめでとう! すべてが設定され、あなたの携帯電話やタブレットを通過するwebトラフィックの検査を開始することができます。

トラブルシューティング

何も表示されず、ターゲットデバイスがインターネットに接続していないように見える場合は、以下を確認する必要があります:

  • mitmproxyを実行しているコンピュータとターゲットデバイスの両方が同じネットワーク上にありますか?
  • mitmproxyを再起動してみましたか?
  • ターゲットデバイスでプロキシ設定が正しく設定されていますか?
  • ターゲットデバイスで自己署名証明書を有効にしましたか?

さらに進むには

今、あなたはmitmproxyをインストールし、ターゲットデバイスを設定するために必要なすべてを知っている必要があります。 さらに進みたい場合は、次の投稿を見てください:

  • mitmproxy
  • mitmproxy

のスクリプトを作成するための便利なヒント

Similar Posts

コメントを残す

メールアドレスが公開されることはありません。