라파엘(Rafael)이 깃허브 코파일럿(GitHub Copilot)을 MITM(Man-in-the-middle) 프록시를 이용해 분석하는 방법을 소개했다.
라이트하우스 뉴스레터(Lighthouse Newsletter)는 8월 11일 웹에 올린 글에서, 전자(Electron) 기반 데스크톱 앱들의 구조를 바탕으로 런타임 동작을 관찰하려고 MITM 프록시 접근을 택했다고 밝혔다.
글쓴이는 전자 기반 앱들이 크로미움(Chromium) 런타임과 함께 네트워크 스택을 제공하며, 앱이 원격 백엔드와 통신할 때 HTTP와 웹소켓, 또는 노드(Node)의 http/https/fetch 경로가 달라지면 가로채기 방식도 달라진다고 설명했다. 또 VS 코드는 일부 소스가 공개돼 있어 다른 앱과 달리 소스만으로도 확인을 시도했지만, 실제 런타임에서 무엇을 찾을지 모르는 상태에서는 수백만 줄 규모의 코드를 훑는 비용이 너무 크다고 적었다.
라파엘은 결국 트래픽을 먼저 ‘수동으로 관찰’해 질문할 대상을 정한 뒤 소스 확인으로 이어가려는 역공학 방향을 택했다고 설명했다. 이를 위해 MITM 프록시 서버를 세우고, 앱이 프록시를 사용하도록 설정해 HTTPS 구간의 TLS를 해독하도록 했다. HTTPS 트래픽은 TLS로 암호화되는데, mitmproxy가 로컬에서 생성한 CA(인증기관) 인증서를 신뢰하면 목적지별로 mitmproxy가 만든 임시 인증서를 클라이언트가 수용해 암호화 구간이 ‘앱-프록시’와 ‘프록시-서버’의 두 구간으로 나뉘며, 프록시가 요청을 해독·검사한 뒤 응답을 다시 전달할 수 있다고 밝혔다.
글은 macOS에서 mitmproxy 사용을 위해 brew 설치를 언급한 뒤, VS 코드가 트래픽을 mitmproxy로 라우팅하도록 설정을 바꿔야 한다고 안내했다. 라파엘은 VS 코드에서 Cmd+Shift+P로 사용자 설정을 열고 다음 값이 적용되도록 조정한 뒤 재시작하라고 적었다: Http Proxy를 http://localhost:8080으로, Http Proxy Strict SSL은 해제(체크 해제)하고, Http: Proxy Support는 override로 설정하는 방식이다.
원문 보기 (lighthousenewsletter.com)