
SSL 스트립(SSL Stripping)은 중간자 공격(MitM) 기법의 일종으로, 공격자가 HTTPS 연결을 HTTP로 변환하여 사용자의 데이터 통신을 가로채는 방법을 의미한다.
SSL 스트립은 주로 SSL 프로토콜이 사용되던 시절에 명명된 용어이다. 하지만 현재는 SSL이 TLS(Transport Layer Security)로 대체되었고, 대부분의 웹사이트와 서비스가 TLS를 사용하고 있음에도 보안 커뮤니티에서는 여전히 SSL 스트립이라는 용어로 통용된다.
ARP 스푸핑 할 때 타겟이 https를 접속 할 경우, 패킷 캡쳐를 제대로 할 수 없으니 https를 http로 다운그레이드 시키는 SSL 스트립이라는 것을 해볼 것이다.
시작하기 앞서 아래와 같이 로컬 스니핑 활성화 하도록 하자.

set net.sniff.local true
해당 명령어를 사용하는 이유는 set net.sniff.local true 설정을 통해 공격자는 타겟의 요청을 가로채고 이를 http 프로토콜로 수정해서 라우터로 전송을 할 때, 마치 타겟 컴퓨터에서 직접 전송한 것처럼 보이도록 할 수 있기 때문이다.
스크립트 파일을 이용해서 SSL 스트립을 적용시킬 것이다.
SSL 스트립을 하기 위한 스크립트 파일을 존재하는지 확인해보자.
caplets.show

위와 같이 스크립트 파일이 없다면 아래 주소를 이용하자
https://gitlab.com/kalilinux/packages/bettercap-caplets/-/tree/kali/master/hstshijack
아래와 같이 Name 그대로 입력하면 SSL 스트립이 적용된다.
hstshijack/hstshijack
이후 타겟 컴퓨터에서 stackoverflow.com 으로 접속해서 로그인을 해보면 아래와 같이 아이디와 패스워드까지 알아낼 수 있다.

하지만 몇몇 여러 사이트에는 적용이 안될 수 있다. 이는 해당 웹사이트가 HSTS를 적용하고 있기 때문이다.
HSTS(HTTP Strict Transport Security)는 웹 보안 정책으로, 웹 서버가 브라우저에 HTTPS(HTTP Secure) 연결을 강제하도록 지시하는 메커니즘이다.
이를 위해서는 HSTS 하이재킹 기술이 필요하다.

그래서 /usr/local/share/bettercap/caplets/hstshijack/hstshijack.cap 파일을 열어보면 하이재킹이 안되는 사이트(트위터, 페이스북 등)들을 .corn으로 대체하게끔 되어있다.
그럼에도 https로 접속되는 경우, HSTS가 아닌 사이트에서 링크로 접속해야 되는 경우도 있으며, 크롬 브라우저 사용한다면 보안 DNS 사용을 비활성화 해야한다.
참고로 hstshijack.obfuscate, hstshijack.encode 이 두개가 false로 되어 있는 이유는, 파이어폭스 같은 몇몇 브라우저가 차단하기 때문이다.
set dns.spoof.domains 에 자바스크립트 파일 경로를 지정해서 자바스크립트 코드를 주입할 수 도 있다.
예) set hstshijack.payloads *:/usr/local/share/bettercap/caplets/hstshijack/payloads/keylogger.js, *:/root/alert.js
*표시 는 모든 페이지에 대해서 주입한다는 것이며, * 대신에 특정 도메인을 넣을 수도 있다.