알게된 배경

교내에서 모바일 개발을 알려주시는 선생님한테 burpsuite과 frida를 연결해서 사용하고 있다는 이야기를 드리자 선생님께서 MITMProxy도 한번 써보라고 권해주셨다. 해당 일을 계기로 바로 MITM 프록시를 사용하고 질문하면서 알게된 내용을 정리해 볼까한다.

MITM이란?

burpsuite과 같이 네트워크 트래픽을 감지하고 intercept하여 외부로 나가는 트래픽을 분석할 수 있는 도구이다.

MITM 설치

brew install mitm
pip3 install mitm

MITM 사용법

from mitmproxy import http
from urllib.parse import urlparse
 
mapping = {
	"https://server-api.com": "http://localhost:8080"
}
 
def request(flow: http.HTTPFlow) -> None:
    for org_url, redirect_url in mapping.items():
        org_parsed = urlparse(org_url)
        if flow.request.pretty_host == org_parsed.hostname:
            redirect_parsed = urlparse(redirect_url)
            flow.request.host = redirect_parsed.hostname
            if redirect_parsed.port is not None:
                flow.request.port = redirect_parsed.port
            else:
                if redirect_parsed.scheme == "https":
                    flow.request.port = 443
                else:
                    flow.request.port = 80
            flow.request.scheme = redirect_parsed.scheme