바로 패킷의 SNI부분에 대해 검열을 실시하여 https를 막아버리는 국가 레벨의 크래킹 기법을 도입하였습니다.
https 통신은 기본적으로는 암호화가 되어있지만 취약점이 하나 있는데요. 바로 초기 접속 확립 시에 도메인을 전송하는 과정이 평문이라는 점입니다. 이 평문으로 도메인을 전송하는 부분이 있는 곳이 SNI(Server Name Indication)이구요. 요청 패킷에서 DPI장비를 활용해 해당 부분을 도청한 다음, 도메인이 블랙리스트에 있으면 강제적으로 TCP RST(reset)패킷을 반환하여 연결을 종료시킵니다.
[warning 페이지]
[DNS 차단 개요도, 출처 인벤 - http://m.inven.co.kr/board/powerbbs.php?come_idx=2097&l=1149173]
기존의 검열 방식에서 나타났던 Warning페이지인데요. 기존의 검열 방식은 dns에 blacklist를 넣어, blacklist에 해당하는 요청이 있을 경우 강제적으로 Warning페이지를 반환합니다.
이 방식도 중간자 공격(MITM)에 해당하는 해킹이나, https가 보급되면서 보기 어려워진 페이지입니다.
[19년 2월 11일 이후 검열 방식(SNI 검열 기반)]
2월 11일자 기반의 검열 결과, blacklist에 해당하는 사이트에 접속할 경우 아예 TCP RST를 반환하여 연결을 강제 종료시켜버리더군요. 기존에는 dns에 들어오는 요청에 기반해 차단했다면, 현재의 검열은 DPI를 이용하여 전 국민의 접속결과를 실시간으로 분석해 차단하는 방식이라 그 폐해가 더욱 크다고 볼 수 있겠지요.
[패킷 레벨에서의 SNI검열 방식, 출처 : http://blog.deadcoder.net/221463192946]
위의 패킷그림(18~27)번을 보면 알 수 있지만, blacklist에 있는 사이트에 대한 접속이 확인되면 연결을 강제로 종료시켜버립니다.(TCP RST) 다만 아직은 해당 검열 시스템에 결함이 있어 접속이 가능한 경우도 있는데요. 해당 검열취약점 부분은 28번 패킷에 나와있습니다.
TCP segment of a reassembled PDU, 즉 패킷을 나누어서 client hello(클라이언트 접속 시작)를 서버측에 요청할 경우, 검열 시스템이 두번째 이후에 오는 패킷을 확인하지 못하고 통과시켜주는 거 같네요. 이 때문에 MTU(Max Transmission Unit)크기를 작게 할 경우 검열을 통과하는 경우가 있으나, 조만간 막힐 것으로 보입니다.
[현재까지 나온 여러 검열 우회방법]
확실한 검열 우회 방식은 DNS보호를 포함하고 있는 정규 유료 VPN뿐이며, 다른 차단 회피 수단은 미봉책으로 수개월 이내에 다 막힐 것으로 예상됩니다.
1. MTU기반 우회 방식(혹은 DNS 프록시) : 검열시스템의 취약점을 이용한 것으로서 일시적인 회피만을 제공합니다.
조만간 다 막힐 것으로 보입니다. 다만 현재로서는 유효한 거 같네요.
방법
1. MTU크기를 400kb이하로 줄이기
2. intra등 DNS 프록시 앱 사용
3. Goodbye DPI 프로그램 사용(DPI 장비에서 인식이 안 되도록 패킷 생성 부분을 제어) - 일종의 미봉책입니다.
https://github.com/Include-sys/GUI-for-GoodbyeDPI/releases 에 가서 운영체제에 맞는 버전을 다운로드하면 사용 가능한 거 같네요.
=====================================================
2. Firefox 64버전 이상에서의 ESNI사용 : 차세대 https 표준안?인 ESNI가 적용된 사이트에서만 사용할 수 있습니다.
현재로서는 파이어폭스 브라우저에서만 쓸 수 있는 방식이며, 제한이 많은 방식이에요.
방법
1. 파이어폭스 주소창에 about:config 를 쳐서 고급 설정창에 접속한다.
2. network.trr.mode를 2로 바꾼다.(사실 3으로 해야 더 안전할 수도 있습니다. 2는 가변적인 DNS 사용이며 3은 해당 DNS만을 사용하는 옵션이거든요)
3. network.trr.uri가 비어있다면(신규 설치시에는 안 비어있다), https://mozilla.cloudflare-dns.com/dns-query로 바꾼다.
4. network.security.esni.enabled를 true로 바꾼다.
[출처 - 나무위키, https://blog.bypass.sh/1209]
다만 위 방법의 문제는 ESNI가 적용되지 않은 사이트에는 기존의 SNI 미 암호화된 방식과 동일하게 작동한다는 점이며, 차세대 표준이기에 아직 적용되지 않은 사이트가 많다는 점입니다.
======================================================
3. DNSCrypt, 시크릿DNS : 무용지물이며 ESNI를 제공하지 않습니다. 2개의 KT 회선으로 실험해 보았으나 다 안되더군요.
그리고 많은 분들이
에서의 결과가 잘 나오면 현재의 검열을 피할 수 있다고 생각하시는 분이 있는데, 실제로는 잘 안되는 경우도 꽤 많더군요. 반대로 위의 intra 앱의 경우에는 cloudflare 결과가 안좋게나오지만 11일자 검열을 '아직은' 피할 수 있습니다. 언젠가는 막히겠지만요.
다만 제가 실험해본 결과 위에 있는 방식들은 미봉책이며 불안정한 방식들입니다. 그냥 속 편하게 유료 VPN 결제를 하시는 게 좋을 꺼 같네요.
Express VPN을 추천합니다.
지금 보니 광고처럼 보여서 좀 뭐한데요. 아니면 다른 VPN을 하셔도 괜찮을 듯...
댓글 없음:
댓글 쓰기
글에 대한 의문점이나 요청점, 남기고 싶은 댓글이 있으시면 남겨 주세요. 단 악성 및 스팸성 댓글일 경우 삭제 및 차단될 수 있습니다.
모든 댓글은 검토 후 게시됩니다.