mitmproxy

Kalilinux
この記事は約9分で読めます。

mitmproxyはオープンソースのプロキシツールです。

mitm = man in the middle : 中間者(攻撃) → 中間者攻撃(マン・イン・ザ・ミドル攻撃、MITM攻撃)とは、攻撃者が2者間の通信に割り込み、通信内容を盗聴したり、改ざんしたりするサイバー攻撃のことです

以前取り上げたZAPBurpsuiteと同じく、ブラウザとサーバーの間に介入してその通信をモニターするツールです。

helpの表示

Kali ー 11-Collection ー mitmproxy

mitmproxy -h

非常に長いヘルプです

help1
help2
help3
help4
help5

設定

設定という程でもないですが、使用するプロキシのポート番号だけは決めておく必要があります。

何番に決めてもいいのですが、予約されている番号(桁数の少ない番号)ではまずいので、HTTPのデフォルトの8080番か、それ以上の番号にすることが多いようです。

ここではポート番号を28080番に決定して話を進めます。

使用しているブラウザはFirefoxです。

準備

この過程は必須ではないのですが、便利なので先に行っておきます。

Foxyproxyの導入

Firefoxのアドオン(プラグイン)である ” foxyproxy ” を導入しておくと、使うプロキシを簡単に切り替えることができます。

foxyproxy導入の詳細は foxyproxyの投稿 をご参照下さい。

mitmproxyのfirefoxへの登録

” foxyproxy ” の導入後、右上のキツネのアイコンをクリックすると、ダイアログが開き、 ” Options… ” をクリックするとオプションの設定画面が開きます。

” Proxies ” ー ” Add ” と進み、プロキシの設定を行います。

以下の設定にしました。

foxyproxy

なお上図の例では “Burp” と “ZAP” もプロキシとして別に登録されています。

ブラウザの設定

右上のキツネのアイコンをクリックし、 ” mitm ” を選択することにより、プロキシをmitmproxyに切り替えます。

これでmitmを経由した通信が行われる設定になりました。

実行

ターミナルから下記コマンドラインで起動すると、別窓が立ち上がります。( ” -p ” オプションでポート番号を指定しています)

まだデータが流れていないのでmitmproxyの窓は真っ黒です。

CA証明書

SSL/TLS(HTTPS)に対応するためにまずはCA証明書を取得します。

CA証明書の取得

ブラウザで、 ” http://mitm.it ” に接続します。

https://〜 ではないので注意。しばしば自動的に勝手にhttps://になりますので、その場合は強引に手動でhttp://に変更してください。

接続した所:OS別にCA証明書が並んでいます。

CA download

Linux用のCA証明書: ” Get mitmproxy-ca-cert.pem ” をクリックしてダウンロード

CA証明書の設定

ブラウザ右上の ” 三 ” より、 ” Settings ” を選択します

左欄 ” Privacy & Security ” より、右欄 ” Security ー Certificates ” の ” View Certificates… ” を押します。

CA setting1

現在取得しているCA証明書の一覧が出ますので、下の ” Import.. ” ボタンを押します。

CA setting2

先ほどダウンロードしたCA証明書 ” mitmproxy-ca-cert.pem ” を選択します。

CA setting3

” Trust this CA to identify websites ” にチェックを入れます。

CA setting4

CA証明書一覧の中に ” mitmproxy ” が登録されていることを確認します。

CA setting5

以上でブラウザの設定は終了です。

mitmproxy

この時点より、firefoxブラウザでのアクセスしたサイトの接続状況が随時mitmproxyの窓にモニターされます。

こんな感じ。

mitmproxy1
mitmproxy2

firefoxの状態とmitmproxyの状態との関係

firefox:foxyproxyのプロキシ選択mitmproxy offmitmproxy on
プロキシ選択 なしmitimproxy off
firefox 普通接続
mitimproxy モニター不可
firefox 普通接続
プロキシ選択 mitmproxymitimproxy off
firefox 接続不可
mitimproxy モニター可
firefox 普通接続

mitmweb

mitmwebというコマンドを使用すると、ブラウザ上に情報が表示され、GUIベースで操作できます。

mitmweb
mitmweb1
mitmweb2

mitmwebのヘルプ

mitmweb -h1
mitmweb -h2
mitmweb -h3
mitmweb -h4
mitmweb -h5
mitmweb -h6

まとめ

プロキシツールのmitmproxyの紹介でした。

mitmproxy以外にもburpsuiteやZAP(zaproxy, Zed Attack Proxy)もあります。

以下、その3つの比較表

プロキシツールの比較

同じプロキシツールのZapBurpsuiteとmitnproxyとの比較表

項目Burp SuitemitmproxyOWASP ZAP (Zed Attack Proxy)
開発元PortSwiggerOpen Source (コミュニティ)OWASP (オープンソース)
ライセンスCommunity(無料) / Pro(有料)無料・オープンソース無料・オープンソース
UIGUI中心(Windows/macOS/Linux)CUI(ターミナルUI)、Web UI(mitmweb)GUI(クロスプラットフォーム)
主要機能プロキシ, Repeater, Intruder, Scanner, Decoder, Comparer, Sequencerプロキシ, ログ, リクエスト/レスポンス改変, Pythonスクリプト拡張プロキシ, 自動スキャン, Fuzzer, Repeater, APIテスト, Add-on拡張
HTTPS対応BurpのCA証明書をインポートhttp://mitm.it から証明書取得ZAPのCA証明書をインポート
自動スキャンPro版のみ(高機能)スクリプトで実装可能(標準機能なし)標準で自動スキャン搭載
拡張性Burp Extender API (Java/Pythonなど)Pythonスクリプトによる高度な制御Marketplaceで多数のAdd-on、Zestスクリプト
学習難易度中~高(GUI操作習熟が必要)中(CUIだがシンプル、Python必須)低~中(GUIで直感的、教材豊富)
速度高速(Pro版は特に最適化あり)軽量(スクリプト次第)中程度(スキャンは重い場合あり)
導入しやすさGUIで直感的、教育向け教材多数軽量・簡単だがCLI操作に慣れ必要GUIでわかりやすく、初心者に人気
主な用途プロ向け診断、レポート作成開発者・研究者のPoC、挙動解析教育、CTF、簡易診断、開発時のセキュリティ確認
代表的な強み商用診断ツールのデファクト、強力な有料機能Pythonで自在に拡張、軽量無料でGUI中心、自動スキャンも標準搭載
弱みPro版は有料・高価、Communityは制限多いGUIに弱い、初心者には取っつきにくい重くなることがある、商用現場ではBurp優先

CA証明書について(補足)

オレオレ証明書

” オレオレ証明書 ” という言葉があります。

今回CA証明書を発行してもらう手順がありますが、そんな証明書なんて軽々しく発行していいのか、オレオレ証明書なんじゃないか、という疑問をお持ちの方もいらっしゃると思います。

はい、そのとおりです。今回のはオレオレ証明書です。

但し今回の証明書を使い所は以下の通りですので、結論的には問題が起こりません。

1 まずプロキシを使用しない場合データの流れを下記とすると

ブラウザfirefox(A) ー 接続先サイト(C)

(A)ー(C)間の通信に使う証明書には由緒正しいCA証明書が使用されています。

この証明書を(α)とします。

αは由緒正しい証明書なので、何の問題もなく通信できます。

2 次にプロキシmitmproxyを使用する場合のデータの流れは下記となります。

ブラウザfirefox(A) ー プロキシmitmproxy(B) ー 接続先サイト(C)

(B)ー(C)間は、由緒正しいCA証明書(α)を使用します。

(A)ー(B)間ではオレオレ証明書(β)を使用します。

(A)と(B)はどちらも内部の話であり、オレオレ証明書(β)は内部のみで使用されている為、問題にならない訳です。(自分自身が承諾していればそれでいい)

プロキシツールの種類によるCA証明書の比較

項目Burp SuitemitmproxyOWASP ZAP
証明書生成方法起動時に自動生成(初回のみ)初回起動時に自動生成初回起動時に自動生成
保存場所– ユーザーディレクトリに保存   – Linux: ~/.BurpSuite/   – Windows: %USERPROFILE%\\AppData\\Roaming\\BurpSuite\\– Linux: ~/.mitmproxy/   – Windows: %USERPROFILE%\\.mitmproxy\\– Linux: ~/.ZAP/   – Windows: %USERPROFILE%\\OWASP ZAP\\
証明書形式Java Keystore形式(.der / .cerでエクスポート可能)PEM形式 (mitmproxy-ca.pem, mitmproxy-ca-cert.pem)Java Keystore形式(owasp_zap_root_ca.cer)
有効期限デフォルト 10年(環境によっては再生成可)デフォルト 3年(再生成時に更新)デフォルト 20年(長め)
管理方法– Burp GUIからエクスポート可能   – 新規生成も可能– mitmproxy –set confdir=… で指定   – 証明書ファイルを削除すると再生成– 「Tools → Options → Dynamic SSL Certificates」から管理
信頼設定方法– http://burp にアクセス → 証明書DL   – ブラウザ/OSにインポート– http://mitm.it にアクセス → 証明書DL   – ブラウザ/OSにインポート– GUIでエクスポート → ブラウザ/OSにインポート
再生成方法設定画面から新規CAを作成証明書ファイル削除で自動再生成設定画面から「Regenerate」可能
特徴業界標準で扱いやすい軽量、PEM形式なのでスクリプト向き有効期限が長く再設定が少ない

コメント

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