Wireshark로 SSL/TLS(HTTPS, HTTPS2) 트래픽을 복호화하기

2018. 7. 2. 19:20Programming/보안

반응형

참조: Walkthrough: Decrypt SSL/TLS traffic (HTTPS and HTTP/2) in Wireshark


  최근 웹서버가 탑재된 카메라, NVR 장비의 TTA 인증으로 인해, 서버에 대한 보안 작업이 증가하고 있다. 문제는 보안을 적용하는 방법이 아니라, 제대로 적용됐는지를 TTA에 확인할 수 있는 방법이 필요했다. 장비를 최초 부팅할때마다 인증서를 생성하는 것은 문제가 없으나, 인증서를 장비 외부로 반출하여 '정말로 해당 인증서를 사용하여 HTTPS 통신을 하고 있는지'를 보여주는 게 문제였다.

  여튼 테스트 중에 RSA키를 사용하여 TLSv1.2로 전송되는 패킷의 복호화를 시도했으나, 정상적으로 복호화가 진행되지 않았다. 서버에 대한 지식이 부족했던 나로써는 꽤나 골치아픈 일이었는데, 문제는 TTA쪽에서도 딱히 복호화하는 방법은 인지하지 못하고 있던 것이었다.

  한참동안 인터넷을 찾아본 결과, Walkthrough: Decrypt SSL/TLS traffic (HTTPS and HTTP/2) in Wireshark라는 글을 발견할 수 있었다. 문제의 요지를 요약하자면, RSA키가 있더라도 Diffie-Hellman 암호화(DHE, ECDHE)는 Wireshark상에서 복호화가 불가능하다는 얘기였다. 동적으로 생성된 키 한 쌍을 이용하여 만들어진 세션 키를 이용하는 방식이니, 그럴수밖에. 서버에서 DHE, ECDHE를 비활성화하는 방식도 있지만, 서버에서 굳이 강력한 보안을 비활성화하는 건 사실상 말이 안되는 얘기다. 그렇기에, 브라우저에서 Diffie-Hellman 암호화 방식을 비활성화 하는 방식을 이용한다.


IE) 

  1. '실행'에서 gpedit.msc를 실행하여, 로컬 컴퓨터 정책을 연다.
  2. 컴퓨터 구성 -> 관리 템플릿 -> 네트워크 -> SSL 구성 설정 -> SSL 암호 그룹 순서로 이동한다.
  3. 'SSL 암호 그룹'에 작성된 내용이, 기본으로 사용되고 있는 SSL 암호 그룹(SSL Cipher suite order)이다. 복사 후 텍스트 에디터로 열어준다.
  4. 'ECDHE'나 DHE가 포함된 항목을 모두 지워준다.
  5. 수정된 내용을 복사하여, 기본값을 대체해준다. (3번의 스크린샷에서 커서가 위치한 곳이, SSL 암호 그룹의 기본값이다. 필자처럼 도움말을 복사해놓고 어떻게 해야하는지 몰라서, 허둥대는 일은 없기를 바란다.)
  6. 수정이 끝났으면 '확인'을 누른 후, PC를 재부팅한다.
  7. Wireshark로 패킷을 캡쳐한 후, Client Hello를 찾는다. Secure Sockets Layer -> TLSv1.2 Record Layer: Handshake Protocol: Client Hello -> Handshake protocol: Client Hello -> Cipher Suites 항목에서 DHE, ECDHE가 포함되지 않았음을 확인할 수 있다.

  참조에는 크롬과 파이어폭스에서 Diffie-Hellman 암호화를 비활성화하는 방법도 나와있으나, IE만 테스트해도 충분했으므로 별도 기재하지 않는다. 어렵지 않은 내용인데 작성된 내용이 많지는 않아서, 나중에 또 고생할까봐 블로그에 작성해놓기로 했다. 모쪼록 나처럼 쓸데없는 삽질로 고생하는 사람이 없기를 바란다. ㅠ ㅅㅜ)


반응형

'Programming > 보안' 카테고리의 다른 글

인증기관(CA)의 역할과 개인키의 유출  (0) 2019.01.30