본문 바로가기

교육/Security

Day 72 (DNS spoofing)

반응형

<목차>

1. 목적

2. 사용 툴 & 구성 환경

3. 실습 과정

4. 결과 확인


1. 목적

DNS spoofing은 피해자가 특정 도메인에 접속하기 위해 IP를 DNS에 질의할때 이에 대한 응답을 정상적인 DNS서버보다 빠르게 하여 공격자가 피해자의 정보를 얻는 방식이다. 공격자는 로컬에 존재해야 하며, DNS서버보다 반드시 거리가 가까워야 한다. 그렇지 않으면 원격지의 DNS서버가 먼저 응답패킷을 보내 공격자의 응답패킷을 무시하는 경우가 발생한다. 정상적인 외부 DNS서버를 이용하는 경우와 내부 DNS서버를 이용하는 경우를 실습한다.

 

2. 사용 툴 & 구성 환경

1) bind : 공격자가 DNS서버를 구축하는데 사용한다.

 

2) apache : 공격자가 위조 web서버를 구축하는데 사용한다.

 

3) dnsspoof : 특정 도메인에 대해 위조 web서버로 접속을 유도하기위한 IP주소응답을 송신한다.

 

4) arpspoof : 피해자의 기본 Gateway로 보내는 패킷을 공격자의 DNS서버로 보내기 위해 사용한다.

 

5) fragrouter : 공격자의 위조된 web서버 외에 다른 web서버에 접속시 접속이 원할하게 하기 위해 사용한다. 공격자의 DNS서버에 오는 패킷을 정상적인 DNS서버에도 송신하는 것이다. 공격하고 있음을 모르게 하기 위해 사용한다.

 

6) 구성 환경

  IP(web서버는 도메인주소) OS
공격자의 DNS서버 192.168.111.26 Cent OS 6
공격자의 Web서버 192.168.111.154 Cent OS 7
피해자 192.168.111.29 Windows XP
정상적인 외부의 DNS서버 203.248.252.2 알 수 없음
정상적인 내부의 DNS서버 192.168.111.27 Cent OS 7
정상적인 Web서버 www.naver.com 알 수 없음

 7) 참고 명령어

> ipconfig /flushdns       // Cache된 DNS정보를 지운다.

 

3. 실습 과정

  1) 외부의 DNS서버를 이용하는 네트워크에서의 DNS spoofing

외부의 DNS를 사용하고 있다.
정상적인 Web서버의 화면을 출력한다.
공격자의 Web서버에서 보여줄 스크립트이다.
정상적으로 출력되는것을 볼 수 있다.

[root@6-32 ~]# vi /etc/dsniff/dnsspoof.hosts
# $Id: dnsspoof.hosts,v 1.2 2000/08/28 13:28:21 dugsong Exp $
#
# Sample hosts file for dnsspoof - kill web banner ads for Niels. :-)
#
192.168.111.154 *.naver.com // naver.com이라는 도메인의 IP가 192.168.111.154라고 알려준다.
...

 

arpspoof를 이용하여 Gateway로 가는 패킷을 공격자가 수신하게 한다.

[root@6-32 ~]# dnsspoof -i eth0 -f /etc/dsniff/dnsspoof.hosts  //dns spoofing을 실행한다.
dnsspoof: listening on eth0 [udp dst port 53 and not src 192.168.111.26]

 

naver.com도메인을 입력하면 공격자의 Web서버로 접속이 이루어진다.

 

2) 내부의 DNS서버를 이용하는 네트워크에서의 DNS spoofing

부의 DNS서버를 이용하는 네트워크에서의 DNS spoofing을 실습하기 위해 DNS주소를 변경하고, 공격자의 툴들을 종료했다. 하지만 그럼에도 도메인에 접속이되거나 연결이 되지 않았다. 시스템을 재시작하고 나서 해당 문제가 해결되었다.

원 상태의 Web서버에 접속한 화면이다.

부의 DNS서버를 이용하는 네트워크에서의 DNS spoofing에서 실습한 순서를 동일하게 적용하여 공격에 성공했음을 확인한다.

 

4. 결과 확인

 

실습에서는 육안으로 확인하기 위해 실제 Web페이지와 동일한 페이지를 사용하지 않았다. 하지만 실제로는 공격자의 Web서버에 있는 Web페이지는 정상 Web페이지는 매우 유사한 양식 및 구성을 하고있다. 따라서 도메인에 Ping을 해보았을때 DNS spoofing이 이루어 지지 않았다면 도메인과 IP주소가 다른 네트워크를 가지고 있음을 알 수 있다. 하지만 DNS spoofing 공격은 동일한 네트워크에서 이루어 지기 때문에 응답 IP가 달라짐을 알 수 있다.

 

공격 받은 상태의 패킷을 보게 되면 ARP spoofing공격을 통해 Gateway로 가는 패킷이 공격자의 MAC주소로 되어있기 때문에 공격자가 응답한다. 외부 DNS를 이용해 도메인의 IP를 질의하기 위해서 공격자에게 패킷을 송신한다. 공격자를 통해 얻은 IP와 연결된 MAC주소를 질의하기 위해 ARP 요청 패킷을 송신한다. 이렇게 얻어진 정보를 토대로 통신이 이루어 진다.

 

DNS spoofing을 방지하기 위해서는 원격지의 DNS서버를 이용하지 말고 반드시 로컬 DNS 서버를 이용하며 DNS 서버의 루트네임 서버 mac 주소를 고정 방식으로 할당한다. 또는 운영중인 DNS서버의 버전을 최신으로 유지하거나 2차 DNS서버보다는 정적으로 등록된 캐시 DNS 서버를 운영하는 것도 방법이다. 그리고 가능한 피해자의 IP를 동적으로 할당한다.

반응형

'교육 > Security' 카테고리의 다른 글

Day 73 (Hidden Channel)  (0) 2020.03.11
Day 73 (Tunneling)  (0) 2020.03.11
Day 72 (ARP spoofing)  (0) 2020.03.10
Day 71 (icmp redirect)  (0) 2020.03.09
Day 71 (ARP Spoofing)  (0) 2020.03.09