네트워크/네트워크 보안

DNS Spoofing

비니화이팅 2018. 1. 30. 16:07

* DNS Soofing

-> 원리

- ARP Spoofing이 선행되어서 스니핑이 가능한 상태에서 Attacker는 클라이언트가 DNS 서버로 DNS Query를 보내는 패킷 을 볼 수 있는데, 이 Query에 대해서 Attacker가 위조된 DNS Response패킷을 보낸다. Attacker는 Victim과 같은 네트워크에 존재하므로 Attacker의 DNS Response가 DNS 서버의 Response보다 먼저 도착하므로 Victim은 Attacker의 DNS Response를 받아들이고 늦게 도착한 DNS 서버의 Response패킷은 버린다.


[실습]

- 일단 아래와 같은 토폴로지를 구성해준다.

- Attacker는 Victim이 www.google.com으로 접속하면 Attacker자신의 Web Server 주소를 알려줘 자신의 Web Server로 접속하도록 하게 할 것이다.

 -> 실습 환경

 - Victim : WindowsXP ( IP : 10.10.10.10, MAC : 00-0C-29-9A-9E-2E)

 - Victim : Gateway (IP : 10.10.10.254, MAC : 00-0C-29-F0-BD-A1)

 - Attacker : BackTrack ( IP: 10.10.10.30, MAC : C4-01-0F-98-00-00)

 -> 실습 도구

 - arpspoof

 - dnsspoof 


- DNS Spoofing공격을 진행하기 전에 ARP SPoofing이 선행되어야 한다.

 ARP Spoofing공격은 http://itlearner.tistory.com/265<-을 참고한다.


- 10.10.10.10에게 Attacker자신이 10.10.10.254라고 속인다.

  그러면 외부로 나가는 패킷은 모두 Attacker에게 올 것이다.

  아직 포워딩을 안해줬기 때문에 통신하는데 문제가 있을 것이다.


- 포워딩 해준다.


- 백트랙에는 기본적으로 웹서버가 설치되어 있으므로 start만 해주면 된다.


- 정상적으로 동작하는지 localhost로 접속해본다.


- DNS Spoofing을 진행하기에 앞서 아래와 같이 파일을 만들어 준다.

  www.google.com의 주소는 Attacker의 주소라고 적어준다.


- 아래와 같이 DNS Spoofing을 진행한다.


- Victim의 PC에서 DNS 캐시를 지워 준다.


- 웹 브라우저를 킨 후 www.google.com에 접속하면 Attacker가 구동한 웹 사이트가 뜬다.


- 이 때의 패킷을 확인해본다.

  Attacker의 응답이 진짜 DNS 서버의 응답보다 빠르게 전달 되어서 진짜 DNS서버의 응답은 무시된다.

  DNS 패킷 분석은 http://itlearner.tistory.com/241<-을 참고한다.


- 여기서 특이한 점을 발견할 수 있었는데 진짜 DNS서버가 알려준 주소를 Victim의 PC에서 입력하면 Attacker의 Web 사이트로 들어가진다. 처음에는 정상적인 주소로 통신을 하지만 Attacker가 다시 자신의 주소로 리다이렉트 시킨다.


* DNS Soofing 대응책

1. DNS Spoofing은 ARP Spoofing의 선행이 필요하기 때문에 ARP Spoofing 공격을 방어하는 것이 대응책이다.

2. PC는 DNS Server에 Query하기 전에 자신의 hosts파일을 참조하기 때문에 중요한 사이트는 hosts파일에 등록해준다.