Skip to content
KitploitKITPLOIT
ツールエクスプロイトブログ
Log in
提出
ツールエクスプロイトブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

フィードお問い合わせプライバシー© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
Good-MITM — ルールベースのMITMエンジン。HTTP(S)リクエストとレスポンスの書き換え、リダイレクト、拒否を行い、JavaScriptルールをサポートします。 | Kitploit
ツール/GitHubGitHub/zu1k/good-mitm
ウェブプロキシと傍受スクリプトと自動化ウェブセキュリティネットワークセキュリティプライバシーユーティリティとフレームワーク
GitHubzu1k/good-mitm

Good-MITM

ルールベースのMITMエンジン。HTTP(S)リクエストとレスポンスの書き換え、リダイレクト、拒否を行い、JavaScriptルールをサポートします。

リポジトリを見る
858109103年前Kitploit レビュー済み

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
ウェブサイト

Good Man in the Middle

GitHub stars GitHub forks Release GitHub issues Build GitHub license Docs

中文版

ルールベースのMITMエンジン。HTTP(S)リクエストおよびレスポンスの書き換え、リダイレクト、拒否を行い、JavaScriptをサポートします。

機能

  • TLS ClientHello SNI拡張に基づく証明書の自動署名
  • 特定ドメインに対する選択的MITMのサポート
  • YAML形式に基づくルール記述言語:書き換え、拒否、リダイレクト
    • 柔軟なルールマッチング機能
      • ドメイン名の前方一致/後方一致/完全一致
      • 正規表現マッチング
      • 複数のフィルタールール
    • 柔軟なテキストコンテンツの書き換え
      • 消去/置換
      • 正規表現による置換
    • 柔軟な辞書ベースのコンテンツ書き換え
      • HTTPヘッダーの書き換え
      • Cookieの書き換え
    • 1つのルールに対する複数アクションのサポート
  • JavaScriptスクリプトルールのサポート(プログラムによる介入)
  • 透過プロキシのサポート
  • 単一ポートでのHTTPSとHTTPの多重化のサポート
  • システムの信頼ゾーンへのCA証明書のインストール

使用方法

証明書の準備

MITM技術の要件により、独自のルート証明書を生成して信頼する必要があります。

ルート証明書の生成

セキュリティ上の理由から、見知らぬ人が提供するルート証明書を盲目的に信頼しないでください。独自のルート証明書と秘密鍵を生成する必要があります。

経験のあるユーザーはOpenSSLを使用して必要な操作を実行できます。しかし、この分野の経験がないユーザーは、以下のコマンドを使用して必要なコンテンツを生成できます。生成された証明書と秘密鍵はcaディレクトリに保存されます。

good-mitm.exe genca

ブラウザでGood-MITMが提供するプロキシを使用した後、http://cert.mitm.plusにアクセスするだけで証明書を直接ダウンロードできます。これは、他のデバイスにサービスを提供する際に特に便利です。

証明書の信頼

必要に応じて、ルート証明書をオペレーティングシステムまたはブラウザの信頼ゾーンに追加できます。

プロキシ

Good-MITMを起動し、使用するルールファイルまたはディレクトリを指定します。

good-mitm.exe run -r rules

ブラウザまたはオペレーティングシステムで、Good-MITM が提供する HTTP プロキシを使用します: http://127.0.0.1:34567。

透過プロキシ

ドキュメントについては https://docs.mitmproxy.org/stable/howto-transparent/ を参照してください。

sudo sysctl -w net.ipv4.ip_forward=1
sudo sysctl -w net.ipv6.conf.all.forwarding=1
sudo sysctl -w net.ipv4.conf.all.send_redirects=0

sudo useradd --create-home mitm
sudo -u mitm -H bash -c 'good-mitm run -r rules/log.yaml -b 0.0.0.0:34567'

sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 80 -j REDIRECT --to-port 34567
sudo iptables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 443 -j REDIRECT --to-port 34567
sudo ip6tables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 80 -j REDIRECT --to-port 34567
sudo ip6tables -t nat -A OUTPUT -p tcp -m owner ! --uid-owner mitm --dport 443 -j REDIRECT --to-port 34567

ルール

Rule は Good-MITM を操作するために使用されます。

有効なルールには以下のコンポーネントを含める必要があります:

  • Name:異なるルールを区別し、メンテナンスを容易にするために使用されます。
  • Filter:一連の requests と responses から処理対象のコンテンツを選択するために使用されます。
  • Action:redirect、reject、modification など、目的のアクションを実行するために使用されます。
  • オプションで、MITM が必要なドメイン名を指定します。
- name: "Block YouTube tracking"
  mitm: "*.youtube.com"
  filter:
    url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
  action: reject

さらに、有効なルールは以下の要件を満たす必要があります:

  • 焦点:各ルールは単一のタスクを実行するように設計する必要があります。
  • シンプルさ:保守を容易にするため、処理には straightforward な方法を使用してください。
  • 効率性:可能な限り効率的な方法を使用してください。例えば、ドメインマッチングには複雑な正規表現ではなく、ドメインのサフィックスやプレフィックスを使用してください。

Filter

Filterは、処理が必要なリクエストとレスポンスを選択するために使用されます。

利用可能なオプション

現在、Filterには以下の種類があります:

  • All
  • Domain(String)
  • DomainKeyword(String)
  • DomainPrefix(String)
  • DomainSuffix(String)
  • UrlRegex(fancy_regex::Regex)

注意
現在のバージョンでは、domain関連の種類はhostフィールドにマッチしますが、これは通常結果に影響しません。 ウェブサイトが非標準ポートを使用している場合、ルールでポートを指定する必要があります。 この動作は将来のバージョンで最適化される予定です。

All

フィルターをallに指定すると、すべてのリクエストとレスポンスにマッチします。これは通常、ログ記録アクションを実行するために使用されます。

- name: "log"
  filter: all
  action:
    - log-req
    - log-res
ドメイン

domain はドメイン名に対して完全一致を実行します。

- name: "redirect"
  filter:
    domain: 'none.zu1k.com'
  action:
    redirect: "https://zu1k.com/"
DomainKeyword

domain-keyword はドメイン名に対してキーワードマッチを実行します。

- name: "reject CSDN"
  filter:
    domain-keyword: 'csdn'
  action: reject
DomainPrefix

domain-prefix はドメイン名に対して前方一致を行います。

- name: "ad prefix"
  filter:
    domain-prefix: 'ads' // example: "ads.xxxxx.com"
  action: reject
DomainSuffix

domain-suffix はドメイン名に対してサフィックスマッチを実行します。

- name: "redirect"
  filter:
    domain-suffix: 'google.com.cn'
  action:
    redirect: "https://google.com"
UrlRegex Url

url-regex は URL 全体に対して正規表現マッチを実行します。

- name: "youtube tracking"
  mitm: "*.youtube.com"
  filter:
    url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
  action: reject

複数フィルター

filters フィールドは単一フィルターと複数フィルターの両方をサポートしており、複数フィルター間の関係は OR です。

- name: "youtube-2"
  mitm:
    - "*.youtube.com"
    - "*.googlevideo.com"
  filters:
    - url-regex: '^https?:\/\/[\w-]+\.googlevideo\.com\/(?!(dclk_video_ads|videoplayback\?)).+(&oad|ctier)'
    - url-regex: '^https?:\/\/(www|s)\.youtube\.com\/api\/stats\/ads'
    - url-regex: '^https?:\/\/(www|s)\.youtube\.com\/(pagead|ptracking)'
    - url-regex: '^https?:\/\/\s.youtube.com/api/stats/qoe?.*adformat='
  action: reject

同じアクションを持つ複数のルールは、メンテナンスを容易にするために単一のルールに集約できます。

Action

Action は、リクエストまたはレスポンスに対して操作を実行するために使用されます。

利用可能なオプション

現在、Action には以下のオプションがあります:

  • Reject
  • Redirect(String)
  • ModifyRequest(Modify)
  • ModifyResponse(Modify)
  • LogRes
  • LogReq
Reject

reject タイプは直接 502 ステータスコードを返し、特定のリクエストを拒否するために使用されます。トラッキングや広告のブロックに利用できます。

- name: "reject CSDN"
  filter:
    domain-keyword: 'csdn'
  action: reject
Redirect

redirect タイプはリダイレクトのために 302 ステータスコードを直接返します。

- name: "youtube-1"
  filter:
    url-regex: '(^https?:\/\/(?!redirector)[\w-]+\.googlevideo\.com\/(?!dclk_video_ads).+)(ctier=L)(&.+)'
  action:
    redirect: "$1$4"
ModifyRequest

modify-request はリクエストを変更するために使用します。具体的な変更ルールについては、Modify セクションを参照してください。

ModifyResponse

modify-response はレスポンスを変更するために使用します。具体的な変更ルールについては、Modify セクションを参照してください。

Log

log-req はリクエストをログに記録するために使用し、log-res はレスポンスをログに記録するために使用します。

Multiple Action

actions フィールドは単一のアクションと複数のアクションの両方をサポートします。複数のアクションを実行する必要がある場合は、配列を使用する必要があります。

- name: "youtube-1"
  filter:
    url-regex: '(^https?:\/\/(?!redirector)[\w-]+\.googlevideo\.com\/(?!dclk_video_ads).+)(ctier=L)(&.+)'
  actions:
    - log-req:
    - redirect: "$1$4"

変更

変更は、リクエストの変更やレスポンスの変更など、変更操作を実行するために使用されます。

利用可能なオプション

変更対象コンテンツの位置に基づいて、モディファイアは以下のように分類できます:

  • Header(MapModify)
  • Cookie(MapModify)
  • Body(TextModify)
TextModify

TextModify は主にテキストの変更に使用されます。現在、2つの方法をサポートしています:

  • テキストコンテンツを直接設定する。
  • 単純な置換または正規表現による置換。
テキストを直接設定する

plain タイプの場合、コンテンツは指定されたテキストに直接設定されます。

- name: "modify response body plain"
  filter:
    domain: '126.com'
  action:
    modify-response:
      body: "Hello 126.com, from Good-MITM"
置換

置換は単純置換と正規表現置換の両方をサポートしています。

単純置換

- name: "modify response body replace"
  filter:
    domain-suffix: '163.com'
  action:
    modify-response:
      body:
        origin: "NetEase homepage"
        new: "Good-MITM homepage"

正規表現による置換。

- name: "modify response body regex replace"
  filter:
    domain-suffix: 'zu1k.com'
  action:
    - modify-response:
        body:
          re: '(\d{4})'
          new: 'maybe $1'

MapModify

MapModify は、header や cookies などの辞書型のロケーションを変更するために使用されるモディファイアです。

key は辞書内のキーを表し、必ず指定する必要があります。

ツールをダウンロード