암호화된 HTTPS 패킷을 네트워크에서 보는 방법

주싱·2022년 4월 7일
3

Network Programming

목록 보기
8/21

HTTPS 개요

“HTTPS 를 사용하면, 모든 HTTP 요청과 응답 데이터는 네트워크로 보내지기 전에 암호화된다” 고 합니다. (책, HTTP 완벽 가이드 참조) 다시 말해 HTTP 를 사용하면 전송 계층(TCP)에 암호와 없이 사용자 데이터가 전송되고 때문에 네트워크 어디에서나 패킷을 캡쳐하면 사용자 데이터를 볼 수 있습니다. 보안에 매우 취약하죠. 반면에 HTTPS 를 사용하면 전송 계층에서 전송 이전에 TLS(Transport Layer Security) 또는 SSL(Secure Sockets Layer)이라고 불리는 보안 계층(본 글에서는 TLS 단어 사용)을 통해 사용자 데이터 암호화가 이루어 집니다. 데이터를 안전하게 보호해 줍니다.

궁금증과 결론

최근에 HTTP 를 그대로 네트워크로 전송하는 서비스 거의 없습니다. 그래서 문득 궁금해졌습니다. 아래와 같이 암호화된 HTTP 패킷을 네트워크에서 복호화 해서 볼 수 있는 방법은 없을까?

결론은 클라이언트의 웹브라우저에서 Pre-Master Secret 파일을 획득하여 Wireshark 에 등록해 주면 가능합니다. 이 글에서는 Pre-Master Secret 파일은 어떻게 획득하고, 그리고 Wireshark 에 어떻게 등록하면 아래와 같이 복호화된 HTTP 패킷이 보여지는지 과정과 결과를 간단히 정리해 보려합니다. 아래의 사이트를 보고 따라해보았다고 보아도 무방합니다.

How to Decrypt SSL using Chrome or Firefox and Wireshark in Windows

Pre-Master Secret 파일

먼저 Pre-Master Secret 파일을 크롬 브라우저를 통해 획득해 보겠습니다.

  1. 모든 크롬 브라우저를 닫습니다.

  2. 윈도우에서, 시스템 속성 > 고급 > 환경 변수 > 사용자 변수 (시스템 변수 아님)를 선택합니다.

  3. SSLKEYLOGFILE - %USERPROFILE%\sslkey.log 변수를 등록해 줍니다.

  4. 크롬 브라우저를 다시 엽니다.

  5. 저의 경우에는 “C:\Users\{usr-name}\sslkey.log” 경로에 파일이 생성됩니다.

  6. 파일을 한 번 열어보면 이런 내용이 들어있습니다.

Wireshark 등록

이제 획득한 Pre-Master Secret 파일을 Wireshark 에 등록해 보겠습니다.

  1. Wireshark 에서, Menu > Edit > Preference 창을 열고 Protocols > TLS 로갑니다.
  2. 아래에서 (Pre)-Master-Secet log filename 에 획득한 파일을 지정해 줍니다.
  3. 이제 다 되었습니다.

결과

이제 Wireshark 가 한번 화면을 갱신하게 되고 이후부터 크롬 브라우저를 통해 주고 받은 암호화된 TLS 기반 HTTP 요청과 응답을 복호화하여 확인할 수 있습니다.

참고

profile
소프트웨어 엔지니어, 일상

0개의 댓글