mitmproxyはオープンソースのプロキシツールです。
mitm = man in the middle : 中間者(攻撃) → 中間者攻撃(マン・イン・ザ・ミドル攻撃、MITM攻撃)とは、攻撃者が2者間の通信に割り込み、通信内容を盗聴したり、改ざんしたりするサイバー攻撃のことです
以前取り上げたZAPやBurpsuiteと同じく、ブラウザとサーバーの間に介入してその通信をモニターするツールです。
helpの表示
Kali ー 11-Collection ー mitmproxy

非常に長いヘルプです





設定
設定という程でもないですが、使用するプロキシのポート番号だけは決めておく必要があります。
何番に決めてもいいのですが、予約されている番号(桁数の少ない番号)ではまずいので、HTTPのデフォルトの8080番か、それ以上の番号にすることが多いようです。
ここではポート番号を28080番に決定して話を進めます。
使用しているブラウザはFirefoxです。
準備
この過程は必須ではないのですが、便利なので先に行っておきます。
Foxyproxyの導入
Firefoxのアドオン(プラグイン)である ” foxyproxy ” を導入しておくと、使うプロキシを簡単に切り替えることができます。
foxyproxy導入の詳細は foxyproxyの投稿 をご参照下さい。
mitmproxyのfirefoxへの登録
” foxyproxy ” の導入後、右上のキツネのアイコンをクリックすると、ダイアログが開き、 ” Options… ” をクリックするとオプションの設定画面が開きます。
” Proxies ” ー ” Add ” と進み、プロキシの設定を行います。
以下の設定にしました。
- Hostname : localhost
- Port : 28080
- Color : 🟥

なお上図の例では “Burp” と “ZAP” もプロキシとして別に登録されています。
ブラウザの設定
右上のキツネのアイコンをクリックし、 ” mitm ” を選択することにより、プロキシをmitmproxyに切り替えます。
これでmitmを経由した通信が行われる設定になりました。
実行
ターミナルから下記コマンドラインで起動すると、別窓が立ち上がります。( ” -p ” オプションでポート番号を指定しています)
mitmproxy -p 28080
まだデータが流れていないのでmitmproxyの窓は真っ黒です。
CA証明書
SSL/TLS(HTTPS)に対応するためにまずはCA証明書を取得します。
CA証明書の取得
ブラウザで、 ” http://mitm.it ” に接続します。
https://〜 ではないので注意。しばしば自動的に勝手にhttps://になりますので、その場合は強引に手動でhttp://に変更してください。
接続した所:OS別にCA証明書が並んでいます。

Linux用のCA証明書: ” Get mitmproxy-ca-cert.pem ” をクリックしてダウンロード
CA証明書の設定
ブラウザ右上の ” 三 ” より、 ” Settings ” を選択します
左欄 ” Privacy & Security ” より、右欄 ” Security ー Certificates ” の ” View Certificates… ” を押します。

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

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

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

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

以上でブラウザの設定は終了です。
mitmproxy
この時点より、firefoxブラウザでのアクセスしたサイトの接続状況が随時mitmproxyの窓にモニターされます。
こんな感じ。


firefoxの状態とmitmproxyの状態との関係
firefox:foxyproxyのプロキシ選択 | mitmproxy off | mitmproxy on |
---|---|---|
プロキシ選択 なし | mitimproxy off firefox 普通接続 | mitimproxy モニター不可 firefox 普通接続 |
プロキシ選択 mitmproxy | mitimproxy off firefox 接続不可 | mitimproxy モニター可 firefox 普通接続 |
mitmweb
mitmwebというコマンドを使用すると、ブラウザ上に情報が表示され、GUIベースで操作できます。
mitmweb -p 28080



mitmwebのヘルプ






まとめ
プロキシツールのmitmproxyの紹介でした。
mitmproxy以外にもburpsuiteやZAP(zaproxy, Zed Attack Proxy)もあります。
以下、その3つの比較表
プロキシツールの比較
同じプロキシツールのZapやBurpsuiteとmitnproxyとの比較表
項目 | Burp Suite | mitmproxy | OWASP ZAP (Zed Attack Proxy) |
---|---|---|---|
開発元 | PortSwigger | Open Source (コミュニティ) | OWASP (オープンソース) |
ライセンス | Community(無料) / Pro(有料) | 無料・オープンソース | 無料・オープンソース |
UI | GUI中心(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証明書は由緒正しい第三者機関に申請して、
- 自分は怪しい者ではありませんと証明してもらい、
- それなりにお金もかけて発行してもらうものですが、
- それを勝手に自分で証明書を発行して、
- 自分で自分を証明する(つまり何の証明にもなっていない)ものを、
- 巷では ” オレオレ証明書 ” と呼びます。
今回CA証明書を発行してもらう手順がありますが、そんな証明書なんて軽々しく発行していいのか、オレオレ証明書なんじゃないか、という疑問をお持ちの方もいらっしゃると思います。
はい、そのとおりです。今回のはオレオレ証明書です。
但し今回の証明書を使い所は以下の通りですので、結論的には問題が起こりません。
1 まずプロキシを使用しない場合データの流れを下記とすると
ブラウザfirefox(A) ー 接続先サイト(C)
(A)ー(C)間の通信に使う証明書には由緒正しいCA証明書が使用されています。
この証明書を(α)とします。
αは由緒正しい証明書なので、何の問題もなく通信できます。
2 次にプロキシmitmproxyを使用する場合のデータの流れは下記となります。
ブラウザfirefox(A) ー プロキシmitmproxy(B) ー 接続先サイト(C)
(B)ー(C)間は、由緒正しいCA証明書(α)を使用します。
(A)ー(B)間ではオレオレ証明書(β)を使用します。
(A)と(B)はどちらも内部の話であり、オレオレ証明書(β)は内部のみで使用されている為、問題にならない訳です。(自分自身が承諾していればそれでいい)
プロキシツールの種類によるCA証明書の比較
項目 | Burp Suite | mitmproxy | OWASP 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形式なのでスクリプト向き | 有効期限が長く再設定が少ない |
- Burp Suite → 証明書は比較的長期間(10年)、GUIから簡単に管理可能。
- mitmproxy → PEM形式でシンプル、スクリプト連携に最適。ただし有効期限は短め(3年)。
- ZAP → デフォルト20年と長期間使える。GUIでの管理が簡単。
コメント