Skip to content
KitploitKITPLOIT
도구익스플로잇블로그
Log in
제출
도구익스플로잇블로그
제출

해킹, 침투 테스트 및 사이버 보안 도구를 당신의 보안 무기고에!

Kitploit은 해킹, 사이버 보안 및 침투 테스트 도구 디렉토리입니다. 최신 프로젝트 업데이트를 발견하여 취약점을 찾고, 시스템을 분석하고, 테스트를 자동화하고, 보안을 강화하세요.

피드문의개인정보© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
Good-MITM — 규칙 기반 MITM 엔진. HTTP(S) 요청 및 응답에 대한 재작성, 리다이렉션, 거부를 수행하며 JavaScript 규칙을 지원합니다. | Kitploit
도구/GitHubGitHub/zu1k/good-mitm
Web Proxies & InterceptionScripting & AutomationWeb SecurityNetwork SecurityPrivacyUtilities & Frameworks
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 재작성
    • 규칙당 다중 액션 지원
  • 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

또한 유효한 규칙은 다음 요구 사항을 충족해야 합니다:

  • 집중성: 각 규칙은 단일 작업을 수행하도록 설계되어야 합니다.
  • 단순성: 유지보수가 쉽도록 처리에 간단한 방법을 사용하세요.
  • 효율성: 가능한 한 효율적인 방법을 사용하세요. 예를 들어 도메인 매칭에 복잡한 정규 표현식 대신 도메인 접미사와 접두사를 사용하세요.

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는 주로 텍스트를 수정하는 데 사용됩니다. 현재 두 가지 방법을 지원합니다:

  • 텍스트 콘텐츠를 직접 설정합니다.
  • 단순 치환 또는 정규 표현식 치환을 수행합니다.
텍스트 직접 설정

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는 딕셔너리의 키를 나타내며 반드시 지정해야 합니다.

value는 TextModify 유형이며 위에서 언급한 메서드를 따릅니다.

도구 다운로드