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 트래픽을 복호화하는 방법은 다음과 같습니다:
- 개인키를 사용한 복호화:
- 서버의 개인키를 사용하여 암호화된 트래픽을 복호화할 수 있습니다.
- 하지만 이 방법은 일부 경우에만 적용 가능하며, 최근 TLS 버전에서는 Perfect Forward Secrecy(PFS)를 사용하여 개인키를 이용한 복호화를 방지하기 때문에 제한적입니다.
- 세션 키 로깅을 사용한 복호화
- 웹 브라우저의 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 트래픽을 볼 수 있습니다
결과 비교
전 네이버 블로그에서 실습을 진행하였습니다.
로깅한 키 값을 세팅하고 와이어 샤크 캡처를 시작하고 이리저리 웹 서핑을 합니다
적당히 둘러보다 패킷 캡처를 멈추고, TLS 패킷을 검색하면 복호화 된 패킷을 확인 할 수 있습니다
- TLS 키 로깅 전의 패킷 캡처사진
- 현재 암호화 되어 있는 것을 볼 수 있습니다
- TLS 키 로깅 후의 패킷 캡처 사진
- TLS 패킷들이 HTTP 패킷으로 복호화 된 것을 볼 수 있습니다
'Computer Science > 네트워크' 카테고리의 다른 글
OSPF 프로토콜 (0) | 2023.04.06 |
---|---|
서브넷 인터페이스 수와 프리픽스 계산하는 방법 (0) | 2023.04.03 |
최장 프리픽스 매칭 (Longest Prefix Matching) with CIDR (0) | 2023.03.25 |
NAT Traversal (0) | 2023.03.25 |
SDP는 무엇인가 (0) | 2023.02.24 |