導入
mitmproxy は、トラフィックを検査、操作、分析するための強力かつ柔軟なツールです。 HTTP/HTTPS 開発環境では、モバイルアプリケーションやWebアプリケーションのセキュリティテストとデバッグに使用されます。このガイドでは、ステップバイステップの実装、実用的な例、一般的な設定( 透過プロキシ)、セキュリティのヒント、スケーラビリティの方法について説明します。.
この記事は、サイト管理者、開発者、DevOps、セキュリティ チームを対象に書かれており、例と実行可能な Linux コマンドを提供します。.
mitmproxy を使用してトラフィックを分析する理由は何ですか?
mitmproxy ローカル証明書をインストールすることで、TLS 暗号化されたリクエストとレスポンスを表示する機能 (MITM CA) を実行します。この機能は、API のデバッグ、アプリケーションの動作の分析、セキュリティ テスト、トラフィックの記録/再生に最適です。.
セットにはツールが含まれています mitmproxy (相互の作用)、 mitmdump (スクリプトとバックエンド用)と ミットウェブ (Web インターフェース)。.
Pythonスクリプトはフィルタリング、ログ記録、ペイロードの変更を自動化できます。このツールは ドッカー、 システムド、 iptables/nftables 互換性があり、 明示的な または 透過プロキシ そうです。.
実用的なユースケース
APIとモバイルのデバッグ
JSON の問題、CORS エラー、または OAuth 認証に異議を唱えるには、モバイルとサーバーの間に mitmproxy を配置し、リクエスト/レスポンスを監視できます。.
簡単な方法: クライアントをmitmproxyサーバーのIPアドレス(デフォルトポート)に設定します 8080) にアクセスし、デバイスに CA 証明書をインストールします。.
侵入テストとセキュリティ評価(法的原則に準拠)
ペンテストでは、mitmproxy は論理攻撃、トークン リーク チェック、TLS 分析を可能にします。. 必ず書面による契約と許可を得てください。 また、許可なく機密データを収集することは避けてください。.
交通記録と再生
エラーを再現したり負荷テストを行うには、キャプチャしたトラフィックを サーバーリプレイ 再生してサーバーまたはクライアントの動作を再評価します。.
インストールとツール
Debian/Ubuntuへの基本インストール
pip でインストールします (最新バージョンの場合は推奨):
pip3 install mitmproxyパッケージからのインストール(簡単ですが古いです):
sudo apt update
sudo apt install mitmproxy
高速実行
3つの主なツール:
mitmproxy — コンソールインタラクティブインターフェース
mitmdump — スクリプトやバックエンドの記録に適しています
ミットウェブ — グラフィカルUIを備えたWebインターフェース
実行例:
mitmweb --listen-port 8080 --showhost
Dockerで実行
docker run --rm -p 8080:8080 -p 8081:8081 -v $(pwd)/certs:/home/mitmproxy/.mitmproxy mitmproxy/mitmproxy mitmweb --web-host 0.0.0.0
明示的なプロキシとして設定する(クライアント構成)
一般的な手順:
mitmproxyを実行します:
mitmproxy --listen-port 8080CA 証明書の生成とインストール:
mitmproxyを実行した後、CAは
~/.mitmproxy/が配置されます(ファイルmitmproxy-ca-cert.pem).クライアントブラウザまたはオペレーティングシステムで、証明書を次のように表示します。 信頼 インストール (Windows: MMC > 証明書、macOS: キーチェーン、Android: 設定 > セキュリティ > ストレージからインストール)。.
透過プロキシモード(手動クライアント構成なし)
クライアント側でプロキシ設定ができない環境(IoTデバイスや内部ネットワークなど)の場合は、 透明 このモードでは、トラフィックルーティングが必要です。 iptables/nftables/TPROXY また、カーネルで IP 転送が有効になっています。.
IP転送を有効にする
sudo sysctl -w net.ipv4.ip_forward=1
HTTP/HTTPSをポート8080にリダイレクトするiptablesの例
TCP ポート 80 と 443 を同じマシンのポート 8080 に転送します (ローカル トラフィック用)。
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 8080
sudo iptables -t nat -A PREROUTING -p tcp --dport 443 -j REDIRECT --to-port 8080
透過モードでmitmproxyを実行する
mitmproxy --mode transparent --listen-port 8080注: 透過モードでのHTTPSトラフィックの場合、クライアントにCAをインストールする必要があります。ネットワークエッジでのスケーラブルな実装には、 TPROXY + nftables クライアントの元の IP を保持するために使用します。.
ストリームを記録、保存、変換する
mitmdumpで記録する
mitmdump -w flows.mitm
記録されたファイルの読み取り
mitmproxy -r flows.mitm
HAR/pcapに変換する
mitmproxy/mitmdump にはエクスポート機能があります (mitmweb にはエクスポート HAR オプションがあります)。.
pcap の場合、tcpdump を同時に実行し、その後 pcap を使用して Wireshark を分析できます。
sudo tcpdump -i eth0 -w capture.pcap port 80 or port 443WiresharkでTLSを分析する必要がある場合、ブラウザを制御できる場合は、 SSLキーログファイル クライアント側のキーを生成し、Wireshark に渡すことを有効にします。.
スクリプトとアドオン
mitmproxyはPythonと統合されており、プラグインを作成できます。次の例は、JSONレスポンスボディのログ記録と変更を示しています。.
from mitmproxy import http
import json
def response(flow: http.HTTPFlow):
if "api.example.com" in flow.request.pretty_host():
# log URL
print(flow.request.url)
# modify JSON response
if "application/json" in flow.response.headers.get("content-type", ""):
data = json.loads(flow.response.get_text())
data["injected"] = True
flow.response.set_text(json.dumps(data))アドオンを実行します:
mitmdump -s modify_response.py
フィルターとフロー検索
フィルターの便利な例:
特定のドメインへのリクエストのみを表示します。
~d example.com5xx エラーのある応答のみを表示します:
~s 500-599
設定を使用して mitmproxy を実行する例:
mitmproxy --set stream_large_bodies=2m --showhost
TLS分析と技術詳細
mitmproxyは TLS クライアントHello暗号スイート、および SNI 指紋採取の手続きを支援します。.
開発環境でのTLSの完全な分析のために、CAをインストールして収集します。 JA3 または UA検出器 それは動作します。.
スケーラビリティとパフォーマンス
mitmproxy これは Python に基づいており、負荷の高いワークロードには適切なハードウェアまたはクラスターで実行する必要があります。.
大規模な場合: 10 Gbps ポートを備えたクラウド サーバーなど、強力なネットワークを備えた専用サーバーまたはクラウド インスタンスを使用します。.
攻撃耐性が必要な実稼働環境では、ウイルス対策サーバーを使用します。DDoS ロードバランサーです。当社は 世界85か所以上の拠点 エッジ ポイントに展開できるため、取引やゲームにおける遅延を削減するのに役立ちます。.
運用上のセキュリティとプライバシー
明示的な許可を得たネットワークでのみ分析を実行してください。法的同意なしにトラフィックを記録することは犯罪です。.
CA 秘密キーをハードウェアまたはキー マネージャーに保存し、アクセスを制限します。.
ログには機密データ (トークン、Cookie) が含まれる場合があります。保持ポリシーを指定して、ログに暗号化を適用します。.
機密性の高い環境(支払い、カード)の場合、ルール PCI/DSS MITM ツールはテスト段階でのみ使用してください。.
取引やゲーム分析に使用する場合は、適切な SLA と DDoS 対策を備えた専用の取引 VPS またはゲーム VPS を使用してください。.
実例: モバイル、API、リプレイ
モバイルアプリのデバッグ
ラップトップで mitmproxy を実行します。
mitmweb --listen-host 0.0.0.0 --listen-port 8080ノートパソコンを同じWi-Fiネットワークに接続します(例:IP) 192.168.1.10.
携帯電話のWi-Fi設定でプロキシを手動に設定し、IPアドレスを設定します 192.168.1.10 およびポート 8080 置いてください。.
mitmproxy 証明書を電話にインストールします。.
mitmweb 上のトラフィックを表示およびフィルタリングします。.
テスト用に API トラフィックを記録して再生する
録音:
mitmdump -w api_flows.mitm放送:
mitmdump --server-replay api_flows.mitm --server-replay-nopop
他のツールとの統合(Wireshark、Burp、CI)
tcpdump を使用して pcap をキャプチャし、Wireshark で分析します。.
Mitmproxy は、Burp やその他のアナライザーのトラフィック プリプロセッサとして使用できます。.
CI/CD の場合: mitmdump を使用してトラフィック サンプルをキャプチャし、統合段階で再生して実際の状況をシミュレートすると便利です。.
アプリケーション別の最適な構成
取引の場合: 低レイテンシのVPS、取引所に近いサーバー、BGPネットワーク、適切なCDN。専用の取引VPSを使用してmitmproxyをテストモードで実行し、別途ログツールを使用することで、取引実行エンジンへの干渉を防ぎます。.
ゲームの場合: 低pingのゲーミングVPS。mitmproxyのみ対応。 TCP/HTTP サポートされています。UDPを分析するには、次のような他のツールを使用する必要があります。 tcpreplay/ワイヤーシャーク そして タップ 使用。.
AI/レンダリングの場合: mitmproxy はモデル API のデバッグに役立ちます。負荷の高いネットワーク処理の場合は、グラフィックス サーバー (GPU クラウド) を使用し、mitmproxy を別のコンピューティング サーバーに配置します。.
最終注記と法的警告
分析を行う前に、必ずサービス所有者またはユーザーから書面による許可を得てください。.
カード情報、パスワード、トークンなどのデータは安全に保管し、使用後は削除する必要があります。.
実稼働環境では、悪用を防ぐために保護されたサーバーと DDoS 対策ソリューションを使用します。.
結論と実践的な提案
mitmproxy によるトラフィック分析は、デバッグ、セキュリティテスト、トラフィック分析のための柔軟なツールです。シンプルなインストール、Python スクリプトの作成、そして記録/再生機能により、開発、QA、そして一部のセキュリティシナリオで非常に役立ちます。.
大規模な生産や分析には、強力なネットワーク、DDoS 対策を備え、ユーザーに近い場所に展開されたサーバーを使用します。.









