Ubuntu/Linux SNI 필드 검사 우회 방법

2020. 5. 8. 00:45NetWork

how to bypass SNI Field Check on linux or ubuntu?

우분투또는 리눅스에서 SNI 필드 검사를 우회 하는 방법?
야동 성인사이트 우회하는법

 

 

필드 검열을 우회하여 pornhub.com을 접속한 화면

 

 

 

 

https://ko.wikipedia.org/wiki/%EC%A0%84%EC%86%A1_%EC%A0%9C%EC%96%B4_%ED%94%84%EB%A1%9C%ED%86%A0%EC%BD%9C

 

벌써 대한민국에서 SNI 필드 차단 정책이 도입된지도 15개월이 다되어 가는 이 시점에

왜 굳이 올리냐면.... 저는 PC에서 사용할일이 없을줄 알았는데(?) 스마트폰이 발달한 이 시점에서...

Windows용과 Android Mac 등의 용도로는 많은데 굳이 안드로이드는 존재하면서 리눅스에는 딱히 소프트웨어가 없는 기이한 현상이 존재하더군요

 

 

 

 

SNI 필드 검열(검사) 우회방법

1. TLS 1.3+ 사용 / Encrypt SNI 사용 / DNSSEC 사용 / Secure DNS 사용

2. MTU(Maximum Transmission Unit) 하향 조정

3. VPN(Virtual Private Network) 사용

4. Proxy 사용

5. 1번 기능을 제공하는 소프트웨어 또는 브라우저(Mozila Firefox) 사용

6. Google 번역기를 이용하는방법(4번과 같습니다.)

7. DPI(Deep Packet Inspection) 사용

8. Reset Packet Drop(재설정 요청 패킷 버림)

 

주의!

* 1번과 5번은 ESNI를 제공하는 사이트에게만 검열 우회가 적용 가능하니 작년에 비해 제공하는 서버가 많이늘어나긴 했으나 이것을 공식 대중적으로 사용하기에는 아직 무리가 있으며, 파이어폭스에서 제공하는 기능또한 수동으로 설정해야 합니다.

 

 

 

사용하기 쉬운 방법

② 그냥 설정 자체가 매우 쉬우며, 명령어 한번이면...

③ 이제는 많은 유저들이 써봤을 그방법... 학창시절에도 한번쯤 사용해보셨을 방법이죠

④ VPN과 원리는 같지만 터널링(암호화)이 없을뿐 대신 접속해준다는 것은 같습니다.

⑥ 막힌것 같은데..?

 

 

 

문제점

MTU 하향 조정의 경우는 한번에 전송할 수 있는 패킷의 양을 제한함으로써 기존 TCP HandShake 과정에서 이루어지는 Client/ServerHello 메시지등을 좀더 쪼개(?) 나누어서 보내게 함으로써 패킷 내용 필터링을 무력화 시키는 방법인데 이러한 방식을 사용할 경우 패킷을 다량으로 보내야해서 네트워크 속도가 좀 떨어지는 현상이 나타날 수 있습니다.

일부 국내 호스팅 업체에서는 MTU가 일부 낮게 설정되어 있어 굉장히 느린 응답속도를 보여주는 현상도 있죠...

 

③, ④ VPN은 무료와 유료가 존재하지만 일단 국내 회선은 사용해봐야 의미가 없으므로 국외선을 사용해야 하며, VPN을 국외에 직접 구축하면 정말 개꿀이겠지만... 그러한 상황을 가진 사람이 많지 않기 때문에, 애초에 VPN을 사용하는게 홉(장비, 라우터)을 한번더 거치는 꼴인데 이렇게되면 속도 유실을 가져올 수 있습니다.

 

 

일거양득(속도와 우회를 모두 해결한 방식)

① 브라우저에서만 설정하는 경우에는 굉장히 쉽다고는 못하겠으나, 인터넷을 검색해보면 많은 블로거분들이 설명해주신 자료가 굉장히 많으며, 따라하기만 하면 됩니다.

세아향님의 Firefox SNI 우회 설정방법

파이어폭스 esni 우회 설정 · 파폭 DNS over https 설정 방법 따라하기

[BY 세아향] 최근 https 관련 키워드로 검색 유입이 꾸준히 증가하고 있다. 이유는 https 차단 이슈 때...

m.post.naver.com

 

⑦ GoodByeDPI 라는 유명 소프트웨어가 존재하며, 러시아의 ValdikSS 라는 개발자가 개발한 검열 우회를 외부의 접속이 아닌 패킷처리 방식으로 모두 관리합니다. 굉장히 대중적이며, 한국어도 Include-sys 라는 터키 개발자가 개량한 GUI 버전에서는 적용되어 있습니다. 뭐 이외에도 안드로이드에서 굉장히 많이 사용하는 유니콘은 Windows 버전과 Mac용으로도 제공하고 있으며, 심지어 광고가 없어서 존경과 선망의 대상입니다.

http://unicorn-adblock.com/%EC%9C%A0%EB%8B%88%EC%BD%98-https-for-windows/

유니콘 HTTPS for Windows

다운로드 사용방법 설치 파일 다운로드 & 실행바탕화면 -> 유니콘 HTTPS 아이콘 실행ON 버튼을 눌러 유니콘 HTTPS 활성화 다운로드 설치 파일: 1.0.2.3 버전 지원 OS Windows 7/8/10(x86/x64) 주요 기능 SNI 필드 검열 우회를 통해 차단된 HTTPS 사이트 접속 가능HTTPS 뿐만 아니라 HTTP 사이트 …

unicorn-adblock.com

 

의 경우 "의지의 한국인들이 자유 민주주의 국가에서 중국 반공산당처럼 인터넷의 자유를 침해하는것이 웬말이냐!"

라며, 패킷이 재설정으로 돌아오는것을 보고 RST(Reset, 재설정) 패킷을 버림으로써 사이트를 정상적으로 접속할 수 있게 하는 발상의 전환 방식!

 

 

 

 

사실 코드로 구현하려고해도 8번이 굉장히 쉬우며, 리눅스에서는 8번의 방식을 채택하면 iptables를 통해 방화벽설정으로 한줄만에 구현할 수 있습니다.

먼저 우리의 그 유명한 pornhub를 그냥 요청해보면

 

curl https://pornhub.com -LI

 

curl pornhub.com 요청

 

SSL 연결 오류가 나타나는 것을 볼 수 있습니다.

 

 

이제 다음과 같이 iptables 명령을 사용하여 443(SSL)으로 요청하는 포트에

패킷 세그먼트 플래그가 RST로 수신될 때 차단 하는 정책을 추가합니다.

 

sudo iptables -A INPUT -p tcp --tcp-flags RST RST --sport 443 -j DROP
curl https://pornhub.com -LI

 

RST 패킷 DROP 정책 추가 후 pornhub.com curl로 재요청

 

정상 결과값을 출력하며 실제로 GUI를 사용중이라면 브라우저를 열어 접속해보면 잘 접속되는 것을 확인 할 수 있습니다!

 

대체로 사용하는 곳이 야동밖에 생각이 안나서... pornhub.com 을 예시로 작성하였습니다.

 

 

 

Windows에서는 Python과 Go 코드로 구현하는 방법을 포스팅할 예정입니다.