DNS Spoofing

    DNS 스푸핑이란 웹브라우저에 도메인을 입력해서 접속할 떄 DNS서버에 도메인에 대한 IP를 물어보는데, 공격자가 잘못된 IP를 DNS서버보다 먼저 알려주어서 잘못된 주소로 접속하게 하는 공격입니다. 간단히 말하자면 http://www.daum.net/ 똑바로 쳤는데도 불구하고 전혀 엉뚱한 웹사이트로 가지는 거죠.

    이것이 가능한 이유는 클라이언트가 DNS 서버에게 접속하고자 하는 IP 주소를 물어 볼 때 보내는 패킷은 DNS Query 패킷입니다. DNS 패킷은 UDP패킷이므로 세션이 존재하지 않습니다. 또한 먼저 도착한 패킷을 신뢰하며, 다음에 도착한 정보는 버립니다. 때문에 해커에게 스니핑등을 당하고 있다면 DNS스푸핑에 쉽게 당할 수 있습니다.

DNS 스푸핑은 이런 DNS서비스의 특징을 이용한 것입니다.

 

 

DNS 스푸핑 실습

스위칭 환경일 경우에는 클라이언트가 DNS Query 패킷을 보내면 이를 알아야 하므로 ARP 스푸핑과 같은 선행 작업이 필요합니다.

만약 허브만 쓰고 있다면 모든 패킷이 자신에게도 전달되므로 클라이언트가 DNS Query 패킷을 보내는 것을 쉽게 확인할 수 있을 것입니다.

 

ARP스푸핑

ARP스푸핑에 관해서는 http://dolma.tistory.com/28 참조

DNS Query 패킷을 받기 위해 스위치와 클라이언트에 ARP 스푸핑 공격을 합니다.

공격자 IP 192.168.1.5

클라이언트 IP 192.168.1.3

스위치 IP 192.168.1.2

공격자(Linux), 클라이언트(Window)

ARP 스푸핑 공격 당하기 전 클라이언트의 ARP

 

공격자 PC에서 ARP공격을 함(dsniff 설치 필요)

 

 

공격 후 클라이언트 ARP

공격자의 MAC주소가 게이트웨이의 MAC주소와 동일해 졌다.

때문에 클라이언트는 게이트웨이로 가야할 모든 패킷을 공격자에게 보낸다.

 

공격자가 스니핑을 하는 상태에서도 클라이언트의 인터넷 연결에 문제가 없게 공격자에게 오는 패킷을 원래 게이트웨이로 릴레이 시켜준다.

 

이제 DNS 스푸핑을 하기 위한 선행작업이 끝났으므로 hosts파일을 하나 만들고 DNS Query 패킷를 Listen한다.

이제 DNS Query패킷이 오면 Hosts파일에 따라 응답을 해준다.

네이버나 구글을 치면 공격자의 IP를 알려주어 공격자의 웹 서버로 접속하게 한다.

 

 

 

 

 

www.naver.com를 쳤는데 이상한 웹서버로 접속됨.

 

 

DNS 스푸핑 예방법

    이러한 DNS 스푸핑을 막으려면 중요 서버에 대해서 DNS Query를 보내지 않으면 된다.

윈도우와 유닉스 모두 URL에 대한 IP를 확인할 떄 , 처음부터 DNS Query를 보내는 것이 아니라 먼저 시스템 메모리 정보를 확인하고, 그 다음에 hosts 파일에 등록된 정보를 확인한다.

그러므로 미리 hosts파일에 중요 서버에 대한 IP를 등록해 놓으면 위와 같은 피해를 막을 수 있다.

 

+ Recent posts