mitmproxy를 이용해서, vscode계열 앱에서 전송하는 https 패킷 감시하기


주의사항

블로그 주인장이 코파일럿보다 2배 비싼 cursor.sh를 한달 결제했기 때문에 한동안 이 툴에서 생성한 글로 대충 날먹하려는 심보가 보일 수도 있습니다.

요약

대 인터넷 시대라 이런저런 앱을 깔거나, 플러그인 등을 설치하게 되는데, 보통 유용하지만, 혹시나 개인정보를 유출시키고 있지는 않나 걱정이 되곤 합니다. 경우에 따라선 이런 앱들이 실제로 어떤 통신을 하고 있나 감시하고 싶을 경우도 있습니다.

여기서의 문제는 https 등의 보안 프로토콜입니다. https 등의 보안 프로토콜은 통신 중간에서 제 3자가 패킷을 감청하는 것을 막아주지만, 통신 당사자에 해당하는 내가 내 컴퓨터에서 나가는 패킷을 감청하고 싶다면 방법이 있습니다.

이 글에서는, vscode 계열 앱에서 어떻게 설정하면 플러그인에서 주고받는 패킷을 확인할 수 있을지 정리해보겠습니다.

Key idea - 프록시의 CA를 신뢰하는 CA로 등록

패킷 내용을 확인해야 하는 입장에서, 자기 자신을 목표 서버인 것처럼 변장하려면 목표 서버에 해당하는 인증서를 사용해야 합니다. 보통의 웹사이트는 공인된 기관에서 인증서를 발급받고, 유저는 공인된 기관의 리스트를 신뢰하는 CA 목록으로 관리하고 있기 때문에 해당 사이트를 믿을 수 있다고 간주하고 연결을 수행하는 것입니다. 프록시의 경우 해당 웹사이트의 인증서를 공인된 기관에서 받을 수 있을리가 만무하므로, 내가 맘대로 인증서를 발급할 수 있는 가상의 CA를 만들고 그것을 내 컴퓨터의 CA 목록에 추가함으로써 HTTPS 통신을 감시할 수 있게 만들 수 있습니다.

설정 1 - vscode 설정

먼저 vscode에게 인터넷에 바로 연결하지 말고, 프록시를 통해 연결하라고 설정해야 합니다. vscode 문서 에서 관련 내용을 참조하시면 좋겠습니다. 하여튼 다음 내용을 설정파일 json에 추가하면 됩니다.

    "http.proxy": "http://127.0.0.1:8080",
    "http.proxyStrictSSL": false,
    "http.proxySupport": "on",
    "http.proxyAuthorization": null,

설정 2 - 8080 proxy 서버 구동

이 글에서는 mitmproxy를 이용해서 프록시 서버를 구동합니다.

설정 3 - CA 설정

mitmproxy를 한번이라도 실행하면 ~/mitmproxy 디렉토리가 생성되고, 그 안에 가상 인증서 파일이 생성되게 됩니다. 이 파일을 이용해서 CA cert를 만들고, 그걸 OS에 등록해보도록 하겠습니다. 여기서는 Arch linux에서의 예제 를 그대로 수행하시면 됩니다.

결론

포스팅 이미지를 참조하시면 됩니다.

막상 하고 보니 protobuf를 쓰고있어서 proto 파일을 알아야 쓸 수 있다는 문제가 있던데, 뭐 이것도 어찌어찌 할 수 있지 않을까?