DNS 스푸핑
- 법적인 부분은 크래킹 참조.
'''DNS Spoofing'''
1. 개요
해킹의 하위 분류 중 하나. DNS 서버로 보내는 질문을 가로채서 변조된 결과를 보내주는 것으로 일종의 중간자 공격이다.
2. 방법
2.1. DNS 요청에 위조된 패킷을 보내주는 기법
- 공격자는 네트워크에 공격용 웹서버를 열어두고 대기하고 있는다.
- 네트워크에 DNS 서버로 보내지는 패킷이 있는지 확인한다.
- 목적지가 자신이 아닌 패킷은 읽지 않고 버려야 하지만 설정을 변경해서 모든 패킷을 읽어오게 한다.
- DNS 서버로 보내지는 패킷이 있다면, 그것을 보낸 PC에게 자신이 원하는 변조된 IP를 전송한다.
- 보통은 공격자가 DNS 서버보다 물리적으로 가까이 있으므로 공격자가 보낸 패킷이 DNS 서버가 보낸 정상적인 패킷보다 먼저 도착한다.
- PC는 먼저 받은 답변이 DNS의 것이라고 믿고 있기 때문에 나중에 온 정상적인 패킷은 버려진다.[1]
- PC는 변조된 IP로 접속을 하게 된다.
네이버에 접속한다고 가정한다면, 피해자는 정상적으로 www.naver.com을 입력했는데 공격자의 웹서버로 접속이 되는 것이다. 만약 이 사이트가 겉보기로는 네이버와 유사한 사이트이고, 사용자가 여기에서 로그인을 시도한다면?[2]
2.2. DHCP 서버를 위조하는 기법
대부분의 PC나 스마트폰 등은 DHCP를 이용하여 자동으로 IP 를 할당받는다. 그리고, IP 를 할당 받을때 자동으로 DNS 서버의 IP 도 할당 받게 되어 있다. 그런데, 해커가 사설 DHCP 서버를 열어 두고, 위조된 DNS 서버 정보를 주는 방법이다.
그 이후는 위와 동일하다.
사실 DHCP 서버를 위조할 수 있을 경우, 게이트웨이 IP 를 해커의 컴퓨터로 지정하게 만드는 방법이 더 널리 사용된다. 그럴 경우, 피해자의 모든 트래픽은 해커의 컴퓨터를 거쳐서 지나가게 되므로, 지나가는 패킷을 확인해서 암호를 비롯한 개인정보를 훔쳐볼 수 있게 된다.
2.3. 여담
2017년에 실시된 고3 2018학년도 6월 평가원 모의고사에 비문학으로 스푸핑 개념이 출제되었는데#, 기술 지문에 약한 수험생들이 생각보다 매우 많이 어려워하였다. 확정 1등급 컷이(상위 4% 커트라인) 89점으로 DNS 스푸핑 지문 문제가 학생들의 점수 하락에 큰 영향을 준 듯하다.
정부의 유해 사이트 차단은 https에는 적용되지 않았지만, 언젠가부터 DNS 스푸핑을 이용한 차단을 적용하고 있다. 이거, 국가가 합법적으로 하는 사실상 해킹이라는 소리다(...) DNS 질의에 사용되는 특정 포트를 감시하고 있는 것으로 판단하는 의견도 있다. 사이트를 우회하고 싶다면 구글 DNS나 클라우드플레어 DNS를 사용하자. 만약 안 되면 DNS over HTTPS를 사용해야 한다.[3]
3. 기타
- 유해 사이트를 차단하여 warning.or.kr 으로 보내기 위해서 사용하는 기본 동작과 사실상 같다. 다만 이는 DNS 서버만 구글 서버(8.8.8.8) 등으로 바꿔주기만 해도 무력화된다.
- 2019년 인터넷 검열 논란 에서 적용된 SNI 를 이용한 차단방법도, 본질적으로 비슷한 방법이다. 다만, 이는 Encrypted SNI 가 정식으로 사용되면 무력화된다.
[1] 일반적으로 UDP라는 프로토콜을 사용하는데, 이 UDP는 패킷이 전송되는 속도를 가속화하기 위해 일방적 통신, 즉 보내기는 하지만 수신에 대한 피드백은 하지 않는 통신을 한다. (이를 TCP와 비교해 비연결형 프로토콜이라고도 한다.) 또, 특정 패킷에 대해서는 처음 도착한 패킷만을 신뢰하고 그 이후에 도착하는 패킷이 있을 경우 그냥 버리기 때문에, 이러한 허점들이 공격에 이용된다.[2] 이러한 이유 때문에 네이버에서는 사용자가 로그인을 시도할 때, 로그인 페이지의 주소 창에서 꼭 자물쇠 표시를 확인할 것을 당부한다.[3] 클라우드플레어 DNS로도 우회가 불가능하여, DNS over HTTPS 로 성공한 사례 및 깔끔하게 우회할 방법이 있다.