HSTS(Http Strict Transport Security)와 보안/침투 테스트

웹 해킹을 진행 중 SSL이 결려있는 https 에 대한 침투테스트를 진행할 때가 있습니다. 대부분의 site 는 SSL(https)만 적용되어 Proxy를 통해 쉽게 테스트가 가능하지만 개인정보나 중요정보를 다루는 서버는 HSTS 기술이 적용되어 있습니다.

이 HSTS는 기존 HTTPS 보다 더 강화된 형태의 보안 정책이며 Proxy 사용 시 브라우저단에서 HSTS로 인해 요청처리를 하지 않아 테스트 진행 시 불편한점이 상당히 많습니다.

그래서 이 HSTS가 무엇인지, 이것을 피해 테스트를 진행하기 위해 어떤 방법을 생각하고 사용하였는지에 대한 이야기로 풀어나갈까 합니다.

HSTS(Http Strict Transport Security)란?

Wikipedia에서 제공되는 내용을 보면 웹사이트내 Session Hijacking, agains downgrade attack 등에 대응하기 위하여 만들어진 보안정책 메커니즘입니다. 간단히 두면 SSL를 안전하게 처리하기 위한 정책이라고 볼 수 있죠.

HTTP Strict Transport Security (HSTS) is a web security policy mechanism which helps to protect secure HTTPS websites against downgrade attacks and cookie hijacking. It allows web servers to declare that web browsers (or other complying user agents) should only interact with it using secure HTTPS connections,[1] and never via the insecure HTTP protocol. HSTS is an IETF standards track protocol and is specified in RFC 6797.

The HSTS Policy[2] is communicated by the server to the user agent via an HTTP response header field named “Strict-Transport-Security”. HSTS Policy specifies a period of time during which the user agent shall access the server in a secure-only fashion. -Wikipedia-

이 HSTS 기술은 IETF에서 Proposed Standard로 승인되었고 보안연결이 지정된 사이트만 접근할 수 있도록 서버가 설정하는 보안 메커니즘입니다. 이 기술을 통해서 HTTPS가 아닌 일반적인 URL 접근시에도 강제로 HTTPS로 돌려지는 기능또한 수행되고 있지요. 이제 이런 HSTS가 적용된 사이트에 Proxy를 통해 접근하려고 하면 아래와 같이 Error가 발생하며 연결에 실패합니다.

***는 유효하지 않은 보안 인증서를 사용합니다. 발급자 인증서를 알 수 없기 때문에 인증서를 신뢰할 수 없습니다. 서버가 적절한 중간 인증서를 보내지 않을 수 있습니다. 가져오기를 하기 위해 추가적인 루트 인증서가 필요할 수 있습니다. (오류 코드: sec_error_unknown_issuer)

일반적인 경우에는 공격의 위험성이 있는 네트워크를 식별하여 사용자에게 좀 더 높은 수준의 보안을 제공하는것 이지만 보안분석가의 입장에서 침투 테스트 시 귀찮은 가림막이 됩니다.. :(

RootCA(인증서) 설치

가장 확실한 방법입니다. 웹 브라우저에 프록시 툴에서 제공하는 CA, 또는 직접 구성한 CA를 로컬단에서 직접 인증서로 설치해주면 웹 브라우저는 프록시 서버를 정상적인 서버로 판단하고 에러가 발생하지 않습니다.

Burp, ZAP 등 도구의 RootCA 인증서

인증서를 생성하고 이를 RootCA로 등록하는 방법은 이 글을 참고해주세요!

ZAP/Burpsuite Browser 사용하기

ZAP과 BurpSuite 등 일부 보안 테스팅 도구들은 각각 내장 브라우저를 가지고 있습니다. 이를 사용하면 위 RootCA 작업을 별도로 하지 않아도 즉시 사용할 수 있어서 굉장히 편리합니다.

Old technic

FireFox Addon 인 Live HTTP Header 기능 활용

각 브라우저 별로 유사한 형태의 Addon이 있을것으로 생각됩니다. 전 Firefox가 메인 브라우저이기 때문에 Firefox addon인 Live HTTP Header를 사용하여 테스트를 진행합니다. Mozilla Addon에서 간단하게 설치가 가능하며, Proxy가 아닌 브라우저단에서 확인하기 때문에 SSL 기술을 쉽게 우회하여 테스트를 진행할 수 있습니다.

  • https://addons.mozilla.org/ko/firefox/addon/http-header-live/

HSTS를 지원하지 않는 구버전 Web Browser 를 이용한 테스트

비추 / 현재는 굳이 불필요한 방법으로 보여 내용 삭제헀습니다 🤩