본문 바로가기

해킹/Mobile application Hacking

[ Mobile App Hacking ] 취약한 HSTS 암호화 프로토콜

이번에는 HSTS 프로토콜에 대해 보고 서버에서 취약한 HSTS 설정을 하면 어떤 화면이 뜨는지 보겠습니다.

 

HSTS는 클라이언트의 브라우저에서 HTTPS 접속을 강제화하여 최초 접속 시부터 HTTPS 접속을 유도하는 기능입니다.

 

하지만 암호화 프로토콜 버전이 낮거나 취약한 프로토콜을 사용하고 있따면 SSL Strip의 위험이 있습니다.

 

 

SSL Strip 이란?

일반적으로 잘 알려진 MITM (Man in the Middle) 공격을 보안하기 위함입니다.

일반적으로 TLS / SSL로 암호화 된 세션은 중간에서 공격자가 그 내용을 감청하더라도 암호화 되어 있기 때문에 데이터가 보호 될 수 있습니다.

그러나 강제로 SSL/TLS 암호화 세션을 암호화가 되지 않은 HTTP 세션으로 유도하게 된다면 암호화가 풀리면서 데이터를 감청할 수 있게 됩니다. 이를 SSL Strip이라고 합니다.

 

 

HSTS 프로토콜이란?

HSTS 프로토콜 :   HSTS (HTTP Strict Transport Security)

웹 브라우저가 HTTPS 프로토콜만을 사용해서 서버와 통신하도록 만든 기능

일정시간 (max-age) 동안 HSTS 응답을 받은 웹 사이트에 대해서 https 접속을 강제화합니다.

 

HTTPS를 강제로 접속하게 한다면 서버측에서 302 Redirect 를 이용하여 전환시켜 줄 수 있습니다. 그러나 이 부분이 취약점 포인트로 작용할 수 있습니다.

 

HSTS 프로토콜이 취약하면?

 

위 패킷의 정보는 예시입니다.

 

해당 패킷이 실제 상용되고 있는 서버라면 해당 패킷은 HSTS 프로토콜이 취약한 상태라고 할 수 있습니다.

Request에서도 Referer나 Cookie, User-Agent 등 패킷을 구성하는 다양한 헤더가 있듯이 

Response에서도 Strict-Transport-Security라는 헤더가 존재해야 합니다.

 

HTTP Strict-Transport-Security 응답 헤더는 사이트가 HTTPS를 통해서만 접근되어야 하며 향후 HTTP를 사영하여 사이트에 접근하려는 모든 시도는 자동으로 HTTPS로 변환되어야 함을 브라우저에 알립니다.


소스 참조

HSTS란? : https://rsec.kr/?p=315 

Strict-Transport-Security 헤더 : https://developer.mozilla.org/ko/docs/Web/HTTP/Headers/Strict-Transport-Security

HSTS란? 2 : https://inreve.tistory.com/59