봄수의 연구실

Wireshark에서 HTTP 패킷이 안보여요 본문

Computer Science/네트워크

Wireshark에서 HTTP 패킷이 안보여요

berom 2023. 3. 28. 15:42

Wireshark에서 HTTP 패킷이 안보여요

Intro. 왜 어떤 곳은 보이고 어떤 곳은 안보이는가?


위처럼 분명히 MAC에서 와이어 샤크를 사용해서 HTTP를 볼 수 있습니다.
하지만 어떤 사이트는 보이지 않는 경우가 있습니다. 사실 요즘은 거의 HTTP를 보기 어렵죠

오늘은 왜 HTTP를 보기 어려웠는지, 왜 보였다가 안보였다가 하는지 알아보겠습니다.

세상이 흉흉하니 암호화를 하자

웹 사이트에 따라 HTTP 요청을 보내는 경우와 그렇지 않은 경우가 있는 이유는 주로 웹 사이트의 보안 설정과 관련이 있습니다.
최근에는 많은 웹 사이트가 데이터의 보안과 프라이버시를 보호하기 위해 HTTP 대신 보안 프로토콜인 HTTPS를 사용하고 있습니다.

HTTP와 HTTPS의 차이는 다음과 같습니다:

  • HTTP (Hypertext Transfer Protocol)
    • 웹 브라우저와 웹 서버 간에 정보를 주고받는 데 사용되는 프로토콜입니다.
    • 하지만 데이터가 암호화되지 않아 중간에서 데이터를 가로채거나 조작할 위험이 있습니다
  • HTTPS (Hypertext Transfer Protocol Secure)
    • HTTP에 SSL/TLS 보안 프로토콜을 추가하여 데이터를 암호화하는 프로토콜입니다.
    • 이를 통해 중간자 공격을 방지하고 데이터의 프라이버시와 보안을 보호할 수 있습니다.

Wireshark에서 HTTP 요청을 볼 수 없는 웹 사이트의 경우, 해당 웹 사이트가 HTTPS를 사용하여 트래픽을 암호화하고 있을 가능성이 높습니다.

이 경우, Wireshark에서 해당 패킷을 확인하려면 필터 입력란에 “tls” 또는 "ssl"을 입력해야 합니다.
그러나 암호화된 트래픽이기 때문에 패킷의 내용을 분석할 수는 없습니다.

최근 웹 표준 및 브라우저 정책에 따라 많은 웹 사이트가 HTTPS로 전환하고 있으며, 이로 인해 일부 웹 사이트에서는 HTTP 요청을 보내지 않게 됩니다.
이러한 웹 사이트는 대부분 리다이렉션을 사용하여 사용자를 자동으로 HTTPS 버전의 사이트로 이동시키기도 합니다.

그렇다면 암호화 해제하면 볼 수 있는거 아닌가?

맞습니다. TLS 및 HTTPS 트래픽을 복호화하여 볼 수는 있지만, 복호화를 위해서는 특정 조건이 충족되어야 합니다.
주로 개인키 또는 세션 키가 필요하며, 이를 사용하여 Wireshark에서 암호화된 트래픽을 복호화할 수 있습니다.
단, 이 방법은 본인이 서버 관리자거나 특정 키에 접근할 수 있는 권한이 있는 경우에만 적용 가능합니다.

Wireshark에서 TLS/HTTPS 트래픽을 복호화하는 방법은 다음과 같습니다:

  1. 개인키를 사용한 복호화:
    • 서버의 개인키를 사용하여 암호화된 트래픽을 복호화할 수 있습니다.
    • 하지만 이 방법은 일부 경우에만 적용 가능하며, 최근 TLS 버전에서는 Perfect Forward Secrecy(PFS)를 사용하여 개인키를 이용한 복호화를 방지하기 때문에 제한적입니다.
  2. 세션 키 로깅을 사용한 복호화
    • 웹 브라우저의 TLS 세션 키를 로깅하여 복호화할 수 있습니다.
    • 이 방법은 대부분의 최신 웹 브라우저에서 지원됩니다.
    • 웹 브라우저에서 로깅을 활성화하려면 SSLKEYLOGFILE 환경 변수를 설정하고, 해당 파일의 경로를 Wireshark에서 지정해야 합니다.
    • 이렇게 하면 Wireshark가 TLS 트래픽을 복호화하는 데 필요한 키를 참조할 수 있습니다.

세션 키 로깅으로 TLS 패킷 복호화를 해보자

터미널을 열고 다음 명령어를 입력하여 SSLKEYLOGFILE 환경 변수를 설정합니다.

export SSLKEYLOGFILE=~/Desktop/tls_keys.log
  • 이렇게 하면 데스크탑에 tls_keys.log 파일이 생성되며, 이 파일에 세션 키가 저장됩니다.
  • 필요에 따라 파일의 경로와 이름을 변경할 수 있습니다.

같은 터미널에서 다음 명령어를 입력하여 Chrome을 실행합니다

/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome
  • 이렇게 하면, Chrome이 실행되면서 SSLKEYLOGFILE 환경 변수가 설정된 상태로 시작되어, TLS 세션 키를 tls_keys.log 파일에 저장합니다.

이제 Wireshark에서 암호화된 트래픽을 캡처합니다.

캡처를 시작한 후에, 원하는 웹 사이트를 방문하여 HTTPS 트래픽을 생성합니다.

Wireshark에서 세션 키 파일을 지정합니다.

  • 상단 메뉴의 Edit > Preferences를 클릭하고, 왼쪽 패널에서 Protocols > TLS를 선택합니다.
  • 오른쪽 패널에서 (Pre)-Master-Secret log filename 설정 옆의 Browse 버튼을 클릭하고, 앞에서 생성한 tls_keys.log 파일을 선택합니다.
  • 설정을 저장하고 창을 닫습니다
  • 이제 Wireshark가 TLS 트래픽을 복호화할 수 있습니다. 필터 입력란에 tls를 입력하고 적용하면, 복호화된 HTTPS 트래픽을 볼 수 있습니다

결과 비교

|300


전 네이버 블로그에서 실습을 진행하였습니다.
로깅한 키 값을 세팅하고 와이어 샤크 캡처를 시작하고 이리저리 웹 서핑을 합니다
적당히 둘러보다 패킷 캡처를 멈추고, TLS 패킷을 검색하면 복호화 된 패킷을 확인 할 수 있습니다

  • TLS 키 로깅 전의 패킷 캡처사진
    • 현재 암호화 되어 있는 것을 볼 수 있습니다
    • |500
  • TLS 키 로깅 후의 패킷 캡처 사진
    • TLS 패킷들이 HTTP 패킷으로 복호화 된 것을 볼 수 있습니다
    • |500