Skip to content
KitploitKITPLOIT
도구블로그
제출
도구블로그
제출

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

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

··피드·문의·개인정보·© 2026 Kitploit

도구 디렉토리

카테고리

모든 카테고리 보기
Loading categories
mitmengine — MITM(괴물-인-더-미들) 탐지 도구입니다. MALCOLM을 구축하는 데 사용됩니다: | Kitploit
도구/GitHubGitHub/cloudflare/mitmengine
Defensive ToolsNetwork SecurityThreat IntelligenceIncident ResponseArchived
GitHubcloudflare/mitmengine

mitmengine

MITM(괴물-인-더-미들) 탐지 도구입니다. MALCOLM을 구축하는 데 사용됩니다:

저장소 보기
813682년 전Kitploit 검토 완료

인기

모두 보기 →

커뮤니티에서 가장 많이 사용되는 도구를 찾아보세요.

모든 도구 탐색

도구 컬렉션을 둘러보세요

모든 도구 보기 →
공유
웹사이트

MITMEngine

Build Status

지원 중단 알림: 이 소프트웨어는 더 이상 유지 관리되지 않습니다.

이 프로젝트의 목표는 HTTPS 가로채기를 정확하게 탐지하고 강력한 TLS 핑거프린팅을 가능하게 하는 것입니다. 이 프로젝트는 HTTPS 가로채기의 보안 영향을 기반으로 하며, 해당 처리 스크립트 및 핑거프린트를 Go로 포팅한 것입니다.

MITMEngine에 대한 자세한 내용은 Cloudflare 블로그 게시물에서 확인할 수 있습니다. 빠른 링크:

  • 서명 및 핑거프린트: 핵심 정의
  • MITM 탐지 방법론
  • API
  • 사용 예시
  • 빌드 및 테스트
  • 기여 방법
  • mergeDB 유틸리티

요구 사항

  • Go
  • Wireshark 3.0.0 (wireshark -v로 확인)

문서

자세한 문서는 코드와 함께 있습니다 (먼저 패키지를 $(GOPATH)/src/github.com/cloudflare/mitmengine에 복사하세요).

root@kitploit:~
godoc -http=:6060

http://localhost:6060/pkg/github.com/cloudflare/mitmengine

서명 및 핑거프린트

이 프로젝트에서 핑거프린트는 객체의 구체적인 인스턴스에 매핑되는 반면, 서명은 여러 객체를 나타낼 수 있습니다. 이러한 명명 규칙을 사용하는 이유는 핑거프린트는 일반적으로 객체의 고유한 속성인 반면, 서명은 선택될 수 있기 때문입니다. 마찬가지로, 서버에서 볼 수 있는 실제 클라이언트 요청은 핑거프린트를 가지며, 요청을 생성하는 소프트웨어는 (예를 들어 지원하는 암호 스위트 선택을 통해) 자체 서명을 선택할 수 있습니다.

클라이언트 요청

클라이언트 요청 핑거프린트는 서버에 대한 클라이언트 요청에서 파생되며 TLS 및 HTTP 기능을 모두 포함합니다. 클라이언트 요청 서명은 소프트웨어가 생성할 수 있는 모든 가능한 핑거프린트를 나타냅니다. 목표는 각 서명이 소프트웨어를 고유하게 식별할 수 있을 만큼 충분히 구체적으로 만드는 것입니다.

사용자 에이전트

사용자 에이전트 서명은 브라우저에서 생성된 사용자 에이전트의 집합을 나타냅니다. 브라우저의 사용자 에이전트 서명은 브라우저 버전 범위를 허용하며, 보다 세분화된 서명을 생성하기 위해 OS 이름, OS 플랫폼, OS 버전 범위 및 장치 유형을 지정할 수 있습니다.

브라우저

브라우저 서명은 사용자 에이전트 서명과 클라이언트 요청 서명을 모두 포함합니다. 이를 통해 서명은 예를 들어 Windows 10의 Chrome 31-38에서 생성된 모든 가능한 핑거프린트를 나타낼 수 있습니다.

MITM

MITM 서명은 클라이언트 요청 서명과 함께 MITM 소프트웨어에 대한 추가 세부 정보를 포함합니다. 여기에는 소프트웨어가 인증서를 검증하는지 여부와 같이 클라이언트 요청 외부 요인의 영향을 받을 수 있는 보안 등급이 포함됩니다.

MITM 탐지 방법론

사용자 에이전트로 식별된 브라우저에 해당하는 예상 클라이언트 요청 서명과 요청의 실제 클라이언트 요청 핑거프린트 간에 불일치가 있을 때 HTTPS 연결이 가로채기된 것으로 간주합니다.

오탐지(False positives)

특정 클라이언트 소프트웨어에 대한 서명이 부정확하거나 오래된 경우, 서명이 연결을 가로채기된 것으로 잘못 표시할 수 있습니다.

미탐지(False negatives)

프록시가 클라이언트의 요청을 밀접하게 모방하는 경우 불일치를 감지하지 못할 수 있습니다. 브라우저 서명이 지나치게 광범위한 경우에도 가로채기를 탐지하지 못합니다.

프로덕션 핑거프린트

MALCOLM에서 사용되는 참조 브라우저 및 MITM 소프트웨어 핑거프린트는 reference_fingerprints/mitmengine/에서 찾을 수 있습니다. 이 핑거프린트 세트는 reference_fingerprints/pcaps/의 TLS Client Hello pcap에서 추출된 것과 Cloudflare 네트워크에서 관찰되고 높은 신뢰도 등급으로 레이블링된 상위 500개의 사용자 에이전트 + TLS Client Hello 쌍의 조합입니다.

이상적으로는 Cloudflare 네트워크에서 샘플링된 참조 핑거프린트에 의존할 필요가 없습니다. 대신, 종합적인 pcap 세트를 확보하여 참조 TLS Client Hello 세트를 구축할 것입니다. 데이터셋 구축에 도움을 주고 싶으신가요? 기여 방법을 확인하세요!

API

먼저 사용자는 mitmengine.NewProcessor에 전달할 mitmengine.Config 구조체를 생성해야 합니다. mitmengine.Config 구조체는 브라우저 핑거프린트, MITM 핑거프린트 및 MITM 헤더가 포함된 파일의 파일 이름을 지정할 수 있습니다. 또는 다른 소스에서 앞서 언급한 파일을 읽기 위한 구성 파일을 지정할 수도 있습니다. 현재 MITMEngine은 Amazon S3 클라이언트 호환 데이터베이스(Amazon S3 및 Ceph 포함)에서 이러한 파일을 읽는 것을 지원합니다. 데이터베이스용 추가 파일 리더("로더"라고 함)는 loaders 패키지에서 정의할 수 있으며, 새로운 로더가 Loader 인터페이스를 구현하는 한 MITMEngine의 나머지 부분과 즉시 작동합니다.

MITMEngine 패키지의 의도된 진입점은 Processor.Check 함수를 통하는 것입니다. 이 함수는 사용자 에이전트와 클라이언트 요청 핑거프린트를 받아 mitm 탐지 보고서를 반환합니다. 예를 들어 실행 중인 프로세스에 새 서명을 추가할 수 있도록 향후 추가 API 함수가 추가될 예정입니다.

사용 예시

API 사용 예시는 아래와 같습니다. 더 완전한 애플리케이션은 cmd/demo/main.go에서 확인할 수 있으며, make bin/demo를 실행하여 빌드할 수 있습니다.

root@kitploit:~
rawUa := "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.119 Safari/537.36"
requestFingerprintString := "303:dada,1301,1302,1303,c02b,c02f,c02c,c030,cca9,cca8,c013,c014,9c,9d,2f,35,a:aaaa,0,17,ff01,a,b,23,10,5,d,12,33,2d,2b,1b,dada,15:9a9a,1d,17,18:0::"
uaFingerprintString := "1:72.0.3626:2:3:10.14.3:1:"
requestFingerprint, _ := fp.NewRequestFingerprint(requestFingerprintString)
uaFingerprint, _ := fp.NewUAFingerprint(uaFingerprintString)
report := mitmProcessor.Check(uaFingerprint, rawUa, requestFingerprint)

TLS requestFingerprintString의 형식은 다음과 같습니다:

root@kitploit:~
<tls_version>:<cipher_suites>:<extension_names>:<curves>:<ec_point_fmts>:<http_headers>:<quirks>

uaFingerprint의 형식은 다음과 같습니다:

root@kitploit:~
# <browser_name>:<browser_version>:<os_platform>:<os_name>:<os_version>:<device_type>:<quirks>

사용자 에이전트를 uaFingerprint 형식으로 구문 분석하는 방법의 예는 cmd/demo/main.go 파일에 있습니다.

빌드 및 테스트

MITMEngine을 사용하려면 해당 종속성을 가져오는 것을 잊지 마세요. MITMEngine에서 테스트를 실행하기 전에 vendoring 또는 gomod 로직을 실행하는 것이 좋습니다.

테스트하려면 make test를 실행하고 코드 커버리지를 보려면 make cover를 실행하세요.

기여 방법

브라우저 및 MITM 핑거프린트는 빠르게 구식이 되므로, 우리는 새 샘플로 핑거프린트 저장소를 업데이트하기 위해 적극적으로 모색하고 있습니다.

핑거프린트 샘플("샘플")을 기여함으로써, 귀하(귀하 자신을 대신하여 또는 귀하가 대표하거나 후원받는 조직(해당하는 경우)을 대신하여)는 Cloudflare, Inc. 및 그 자회사와 계열사에 샘플의 모든 지적 재산권 하에서 영구적, 취소 불가능, 비독점, 로열티 프리, 전 세계적 권리 및 라이선스를 부여합니다: (1) 샘플을 복사, 게시, 전시 및 배포; (2) 샘플을 기반으로 하거나 샘플의 일부인 파생 작업을 준비합니다.

핑거프린트 샘플을 기여하려면 다음 단계를 따르세요:

핑거프린트 샘플 생성

(macOS Mojave 10.14.3에서 테스트됨)

서버 RSA 인증서 및 키 쌍 생성:

root@kitploit:~
openssl req -new -x509 -sha256 -out server.crt -nodes -keyout server.pem -subj /CN=localhost

포트 4433에서 서버 시작:

root@kitploit:~
openssl s_server -www -cipher AES256-SHA -key server.pem -cert server.crt

HTTP 헤더를 복호화하기 위해 TShark 캡처 시작 (TShark >= 3.0.0):

root@kitploit:~
tshark -i loopback -o tls.keys_list:"127.0.0.1,4433,http,server.pem" -Tjson -e http.request.line -Y http > header.json

TLS Client Hello의 TShark 캡처 시작:

root@kitploit:~
tshark -i loopback -f "tcp port 4433" -w handshake.pcap

핑거프린트하려는 TLS 클라이언트에서 https://localhost:4433을 방문하세요. 예를 들어,

root@kitploit:~
echo -e "GET /test HTTP/1.1\r\nHost:example.com\r\n\r\n" | openssl s_client -connect localhost:4433

풀 리퀘스트 제출

  • 위에서 설명한 대로 핑거프린트 샘플(header.json, handshake.pcap)을 생성하고 reference_fingerprints/pcaps/<desc> 디렉터리에 배치합니다. 여기서 <desc>는 고유하고 설명적인 이름입니다.

  • reference_fingerprints/fingerprint_metadata.jsonl에 아래 필드와 함께 한 줄을 추가합니다. os, device, platform, browser 필드에 대해 인식되는 옵션은 uasurfer 패키지에 정의된 것입니다. mitm_fingerprint.type에 대해 인식되는 옵션은 아래에 나열되어 있습니다. 예제는 reference_fingerprints/fingerprint_metadata.jsonl을 참조하십시오; 알 수 없는 필드는 비워두거나 생략할 수 있습니다.

    { "desc": "", "comment": "", "handshake_pcap": "", "header_json": "<(optional) path to file containing the client HTTP request", "ua_fingerprint": {"raw_ua": "", "os": "<WindowsPhone|Windows|MacOSX|iOS|Android|...>", "os_version": "..", "device": "<Windows|Mac|Linux|...>", "platform": "<Computer|Tablet|Phone|...>", "browser": "<Chrome|IE|Safari|Firefox|...>", "browser_version": ".."}, "mitm_fingerprint": { "name": "", "type": "<Antivirus|FakeBrowser|Malware|Parental|Proxy>" }}

다른 PR 및 기능 요청도 환영합니다!

mergeDB 유틸리티

mergeDB (cmd/mergedb에 있음)는 여러 유사한 브라우저 또는 MITM 소프트웨어 버전 간에 유사한 TLS ClientHello 핑거프린트를 병합하는 유틸리티입니다. mergeDB를 사용하여 사용자 에이전트 / Client Hello 핑거프린트의 큰 목록을 통합하세요:

root@kitploit:~
go run cmd/mergedb/main.go

기본적으로 mergeDB는 reference_fingerprints/mitmengine 디렉터리의 핑거프린트에서 실행됩니다.

도구 다운로드
  • 위 변경 사항으로 풀 리퀘스트를 제출하세요.