본문 바로가기

해킹-보안

HTTPS 차단 우회

반응형

■ 사전지식



  SSL(Secure Socket Layer)

  전송 구간 암호화 통신 기법 


□ 통신 과정


[클라] 생성한 랜덤데이터(Client Hello)를 서버에 보낸다.

[서버] 생성한 랜덤데이터(Server Hello)를 클라이언트로 보낸다.

[클라] CA에서 발급받은 인증서인지 확인한다. 

       랜덤 데이터1,2를 조합해서 pre master secret키를 생성한다.

[클라] secret키를 인증서의 공개키로 암호화해서 서버로 보낸다.

[서버] secret키를 비공개키로 복호화한다.

[클라,서버] master secret 세션키(대칭키) 생성한다.

    세션키를 활용한 대칭키 암호화 방식 통신을 한다.

[클라,서버] 세선종료시 세션키를 폐기한다.



  DPI(Deep Packet Inspection)

  SSL 통신의 도감청이 가능하다.


□ 검사 과정


3-way handshake 연결 후 과정


1. 192.168.0.2가 1.1.1.1(웹서버)에 접속한다. (Client Hello)

   이 때 패킷정보는 아직 암호화되지 않은 상태이므로 

   어디 서버에 접속하는지 다 확인이 된다.


2. 정부라우터나 방화벽솔루션 등이 1.1.1.1을

   불법 서버로 간주하고 해당 IP(1.1.1.1)로 메세지를 위조하여 RST(접속종료)패킷을 보낸다. 

   

3. 실제 1.1.1.1 서버는 응답이 실패했다고 판단하여 재전송 패킷을 보낸다.


한마디로 상위단에서 미리 컷팅하는 방식이다.



   MTU(Maximum Transmission Unit)

   패킷 최대 전송 단위로써 평균 1500이다.


□ 특징

높을수록 속도 ↑

회선 불안정에 따른 손실위험성도 ↑


□ 원리 

패킷 내용을 작게 쪼개어 필터링을 우회하는 방법


mtu가 1500일 때 "jh5202"라는 내용을 한번에 보낸다면 

500인 경우 "jh5" , "202" 처럼 나눠서 보내게되어 내용을 알 수 없어 필터링 불가


 브라우저별 MTU값

크롬 - 400

기타 브라우저 - 220


 적용


□ 네트워크 장치 정보에서 MTU값 확인 

netsh interface ipv4 show interfaces


□ MTU값 변경

netsh interface ipv4 set subinterface "이더넷 색인번호" mtu=400 store=persistent


persistent = 영구적 설정

active = 임시 - 재부팅시 초기화


□ 에러 조치


1. "매개 변수가 틀립니다"


사용가능한 최저 설정값보다 낮은 값을 입력했을 때 생긴다.

※ MTU 최저값 설정 범위 = 352 - 576


netsh interface ip set global minmtu=352


위 명령을 적용 후 다시 400으로 재설정한다.




■ DPI 우회방법


1. 서버에서 돌려주는 RST 패킷을 버린다.

-  파이썬 코드 이용 #밑의 링크 영상참조


2. Client가 웹서버에 요청할 때 Client Hello 패킷을 조각내서 요청한다.

-  MTU값 조정



참고 : 1. https://www.youtube.com/watch?v=C2Y5x3gwzOU - DPI 차단우회

        2. https://rootblog.tistory.com/142  - MTU 조정









반응형