Manjaro LinuxにmitmproxyでHTTPキャプチャリング〜Arch系なら新しいアプリが簡単に使える

Manjaro Linux Linux

Manjaro Linuxが良くて最近気に入っている

長らく安定志向のdebian GNU/LinuxをデスクトップOSとして使ってきて、安定性重視で言えば非常に満足していました。しかし、先日Arch系の派生として比較的安定性を重視しているManjaro Linuを使ってみて、コレはアリだなと感じたのです。debianの様に頑なな安定志向も良いのですが、Arch系で先進性を負いつつも安定方向に振っているManjaroであれば、実用性は非常に高いということを実感したのです。

と言うのも、動画配信サイトの仕組みを解析していてFirefoxの開発者ツールを起動すると配信がブロックされてしまう細工の施されたサイトに遭遇しました。それでこのブロックの仕組みにも興味を持ったし、開発者ツールで見せないという動画配信の仕組みにも興味を持った次です。隠されると見たくなるものです。

FirefoxにHTTPプロキシ(mitmproxy)を挟む

HTTPプロキシは各種ありますが、オープンソースで開発されていて知名度もある「mitmproxy」を使ってみることにしました。

「mitmproxy」はコマンドラインからも操作出来ますが、Webブラウザを使ってGUI的にも使用出来ます。Python APIが実装されているのでより高度な使い方もできるそうです。私はAPIを使うレベルまでは行きませんが。

さて、LMDE7に「mitmproxy」をインストールしようとしたのですが、debianリポジトリ、Linux Mintリポジトリには存在しない様です。頼りのFlatpakにも存在しません。debian Sid(Unstable)にはあるんですけどね。

どうやら、Python等の依存パッケージのバージョンにかなり依存している様で、debian Stable(安定版)をベースにしているLMDE7では「mitmproxy」を動作させる環境が整わない様です。強引にインストールすることも考えたのですが、ここはLMDE7以外の環境で動作させた方が無難だという考えに至りました。安定している環境を崩したくはありません。

どうやらdebian StableをベースにしているParrot Securityでは「mitmproxy」をすんなりと使用できるみたいです。Parrotはディストリビューション的に安定性を確保しつつも、開発者ツール(ネットワークツール)はなるだけ最新版を追いかけるように努力してくれているので、Parrot OSを使用するのも一案だとわかりました。

mitmproxyをインストールする

ふと、Arch系で検索してみるとArch Linuxでは当然の様にmitmproxyを使用できます。ということはArch派生のManjaroでも行けるのでは?と、Manjaro Linuxを起動してソフトウェアマネージャを起動して検索してみるとアッサリと見つかりました。HTTP解析はManjaroで行う事に決めました。

ソフトウェアマネージャを起動して、「mitmproxy」を検索してインストール指定するだけ。コマンド不使用(GUI)でインストール済です。Arch系ではpacmanコマンドを使うのが流儀でしょうが、私はデスクトップOSの場合はなるだけソフトウェアマネージャを使用しています。

やはり、debian Stable環境でやるよりも、先進的なArch系(でありながら安定志向のManjaro)でやる方が話が早いですし思わぬトラブルも避けられます。何より使い分けることで常用しているLMDE環境を壊すことがありません。PCを複数台所有して使い分けているメリットを享受しなくては勿体ないです。

プロキシと証明書の設定をする

ここからちょっと環境設定を変更する必要があります。Firefoxの通信を「mitmproxy」を通してやる必要がある訳です。mitmproxyパッケージにはGUI版の「mitmweb」もセットになっています。ターミナルから「mitmweb」を起動します。

~$ mitmweb

Firefoxブラウザで新たなタブ(ウィンドウ)として、「mitmproxy is running.」というのが表示されます。ローカルで動いているのでURL欄には「http://127.0.0.1:8081/#/flows」と表示されています。

どうやらポート番号「8081」がmitmproxyのGUIコンソール、「8080」がHTTP(S)通信に使う番号の様です。

mitmproxyが稼働したら、FirefoxのHTTPプロキシの設定を行います。
「設定」ー「一般」の一番下までスクロール。

「プロキシー設定」から「手動でプロキシーを設定する」を選択して、「HTTPプロキシーを設定する」「localhost(127.0.0.1)」でポート「8080」を入力して、「このプロキシーをHTTPSでも使用する」にチェックを入れておきます(HTTPSが今や標準なので)。

この辺りは追々自分で調整していくことになりそうです。

SSL/TLS証明書のインポート

HTTPSのサイトを開いた時に「セキュリティ警告」がいちいち表示されるのは困るので、プロキシー設定を済ませた状態のFirefoxで「mitm.it」にアクセスして証明書ファイルをダウンロードします。

http://mitm.it

Firefoxの設定「プライバシーとセキュリティ」から、「証明書」「証明書を管理」とアクセスし、インポートで証明書ファイルを指定して、」この認証局によるウェブサイトの識別を信頼する」で受け入れます。

Firefoxの証明書マネージャに「mitmproxy」の認証局証明書が追加されました。これでいちいち警告が表示されなくなります。

FirefoxでHTTP(S)キャプチャする

以上で、いわゆる「串をさした」状態になるので、WebブラウザとWebサーバー(配信サイト)との通信内容をプロキシ経由でモニターできる状態になりました。

FirefoxでHTTPキャプチャをする目的サイトを表示すると、mitmproxyに通信がつらつらと表示されます。虫眼鏡の欄にURLの一部を指定するなどしてフィルターをかけられるので、情報を探しやすい様にその都度工夫して解析をします。

左ペインのURLクリックすると右ペインが表示されて、リクエストやレスポンスなどのHTTP(S)通信が更に詳しくわかります。暗号化されているハズのHTTPSの通信内容が見えるのがポイントです。意図的にその様に設計・開発されている様です。(Proxyで有名なSquidでは暗号化されたまま中継した記憶が・・)

言い換えればmitmproxyを間に入れて中継させれば、HTTPSだろうが丸見えにできてしまうと言うことです。現在もPythonでゴリゴリと開発されている勢いのあるアプリみたいです。今後もどんどん使いやすくなりそうな気配が感じ取れます。

後は地道に通信内容を追いかけて解析していくことになります。

Firefox(ウェブブラウザ)の開発者ツールを起動するとブロックされてしまう仕組みになっている配信サイトとのHTTP(HTTPS)通信も、mitmproxyを介することで内容を観ることができます。(配信は止まりませんでしたので成功です!)

mitmwebの終了

ターミナルから起動したmitmwebは、使用中ずっとターミナル内にメッセージが表示されていてプロンプトが返ってきてないと思います。mitmwebを終了させるには、ターミナル内で、CTRL+Cを押すことで終了させてプロンプトが返って来ます。

最後に

一通り流してみるとわかると思いますが、意識的にmitmweb(mitmproxy)を稼働させることになるので、普段はFirefoxのプロキシー設定は使わず、HTTP解析をする時だけプロキシー設定を有効にして使うようにしたりする手間は若干必要です。

ちょっと裏技的なmitmproxyですが、こういうツールの存在も知っておくと開発者ツールが制限されている場合にも有効です。もとい、HTTPプロキシーを介しておくことで通信ログを残すことも可能になるので、色々と応用のアイディアも考え浮かびます。

例えば、mitmproxyはローカルに無くても構わない点を活用してみるアイディアです。

複数台のPCを使っている場合は、mitmproxyを動かしているPCのIPアドレスを確認して、別のPCのWebブラウザのプロキシー設定にそのIPアドレスを指定すれば、HTTP(S)通信はmitmproxyを経由して行われるので全ての通信がmitmproxyに表示されます。

いわゆるProxy ServerをLAN内に1台設営しておけば、クライアントPCは全てmitmproxyを経由してインターネットへHTTP(S)アクセスをするという構成にも出来ます。セキュリティレベルの高いProxy Serverを構成しておけば安心度も増すという訳です。それなりの人数の企業・団体であればProxy経由にして通信の記録を取ったり、セキュリティ保護をしたりと色々工夫をしていると思います。まだまだ色々出来そうな可能性を感じます。

コメント

Comment spam is annoying.

There has been an increase in comment spam, but we decline it. It’s pointless because we use Akismet to block spam comments. Spam comments will not be posted.

コメントスパムが増えていますがお断りします。akismetでスパムコメントを弾いているので無意味です。スパムコメントは掲載されません。

ブロックしたスパム

DMM広告

タイトルとURLをコピーしました