본문 바로가기

사이버보안공부

DNS Spoofing?

오늘은 DNS Spoofing에 대해서 알아보려고한다.

먼저 DNS Spoofing을 이해하기 위해서는 정상적인 DNS의 원리부터 이해해야한다.

 

DNS 서비스

 

① 클라이언트가 DNS서버에 접속하고자하는 IP를 물어본다. (DNS Query)

② DNS서버가 해당 Domain Name에 대한 IP 주소를 클라이언트에 보내준다. (DNS Response)

③ 클라이언트는 DNS 서버에서 받은 IP주소를 바탕으로 웹 서버를 찾아간다. (Web Login)

 

그럼 이제 DNS Spoofing에 대해 알아보자!!

 

DNS Spoofing?

DNS 패킷은 UDP패킷이기 때문에 세션이 존재하지 않아서, 먼저 도착한 패킷을 신뢰하고, 다음에 도착하는 패킷의 정보는 버린다.

위와 같은 UDP의 Connectionless이 가지는 특성이 가지는 취약점과 DNS 서비스의 특징을 이용하면

DNS Spoofing을 할 수 있다.

 

그럼 공격 절차를 알아보자!

클라이언트가 DNS 서버로 DNS Query 패킷을 보내는 것을 Attacker가 확인한다.

이때 ARP Spoofing 같은 선행 작업이 필요하다.

Attacker는 Client와 지리적으로 가깝고 Client, DNS Server, Attacker는 모두 로컬에 존재하므로

DNS Server가 올바른 DNS Response 패킷을 보내기 전에

Attacker의 위조된 DNS Response 패킷을 Client 에게 먼저 보낼 수 있다.

💡 최근에는 DNS 서버성능이 대부분 좋아서 로컬에 존재하는 공격자의 Response 패킷보다 DNS Server의 Response 패킷이 빨리 도착하는게 대다수이다. 따라서 현재로서는 DNS Spoofing의 공격률은 매우 낮다.

Client는 Attacker가 보낸 패킷이 올바른 패킷이라고 판단하고, 공격자의 Web Server에 접속을 한다.

이때 늦게 도착한 DNS Server의 패킷은 버린다.

끝!