네트워크 해킹 - HTTPS 우회

김동하·2025년 12월 21일

security

목록 보기
2/11
post-thumbnail

SSL 스트립(SSL Stripping)

앞서 보았던 것처럼 HTTP는 암호화가 없이 평문으로 데이터를 전송한다. 그래서 스니핑이 가능했다. 하지만 HTTPS는 평문을 암호문으로 감싸 전송한다.

즉, 패킷을 캡처해도 바이트는 알 수 있지만 내용은 복호화할 수 없다.

그래서 HTTPS를 HTTP로 다운그레이드하여 스니핑하는 방식이 한때 가능하기도 했다. 이를 SSL 스트립이라고 부른다.

  • 사용자가 https://로 가려는 걸
  • 중간에서 http://로 바꿔치기해서
  • 사용자가 HTTP로 접속 중인 줄 모르고 로그인하게 만드는 아이디어다.

하지만 요즘엔 이러한 방법을 막는 수단이 많다. 대표적으로 HSTS가 있다.

HSTS(HTTP Strict Transport Security)

HSTS는 무조건 HTTPS로만 접속하도록 브라우저에 강제하는 정책이다. 대부분 대형 사이트들은 HSTS가 적용되어 있다고 봐도 무방하다.

그럼 실습을 해보자!

로컬 스니핑

먼저set net.sniff.local true 커맨드를 활성화 한다.

위 커맨드를 활성화하는 이유는 트래픽이 타켓에서 온 것처럼 보이지 않고, 내 로컬에서 생성된 것처럼 보이는 경우가 생길 수 있다. 즉, 공격자는 타겟의 요청을 가로채고 이를 http 프로토콜로 수정해서 라우터로 전송을 할 때, 마치 타겟 컴퓨터에서 직접 전송한 것처럼 보이도록 할 수 있다.

caplets.show

better cap이 제공하는 스크립트들 사용하자. caplets.show을 입력하면 리스트가 나온다

이중에서 hstshijack/hstshijack를 실행하자!

에러 없이 잘 실행이 되었다. 그럼 타켓 컴퓨터로 이동하자

링크드인으로 접속해보면 브라우저가 HTTPS가 아닌 HTTP로 접속하게 된다. 아이디와 비밀번호를 입력하게 되면

이렇게 스니핑이 가능하다.

위 예제는 강의 예제고 아무리 테스트 해보려고 해도 나는 성공하지 못 했는데, 2025년 대부분 주요 사이트들은 HSTS를 아주 강력히 강제하기 때문에 HTTPS -> HTTP 우회가 불가능하다. 위 방법은 교육 목적 외 사용은 불법이니 조심해야 한다.

HSTS 우회

HSTS를 우회할 수 있는 유일한 방법은 브라우저가 다른 사이트를 여는 것처럼 보이게 만드는 것이다. 즉, 로드된 페이지 안의 HSTS 링크들을 비슷해 보이지만 다른 링크로 바꾸는 방식이다.

예를들어 facebook.com 을 facebook.corn으로 변경한다던지... 그런 식이다! (진짜 스캠 사이트...!)

어떤 도메인을 어떻게 바꿀지, JS 스크립트 등을 설정하고

caplet을 실행하면 된다!

위와 같은 방법도 현재는 거의 불가능하다. .corn 같은 이상한 도메인은 브라우저/안티바이러스가 의심스러운 도메인으로 분류. HSTS를 깨는 건 불가능!

profile
프론트엔드 개발

0개의 댓글