본문 바로가기

Web hacking

DNS Record 간단 정리

Subdomain Takeover 취약점을 이해하기 위해서는 DNS Record에 대한 이해가 필요해 간단하게 정리하게 되었다. 

 

우리가 커스텀 도메인을 사용하기 위해서는 DNS Record 설정이 필요하다. 대표적으로 CNAME과 A 레코드와 같은 정보를 설정해줘야 한다. ( DNS Record 의  다른 타입들은 https://en.wikipedia.org/wiki/List_of_DNS_record_types 에서 확인이 가능하다. )

 

먼저 A 레코드에 대한 설명을 하도록 한다. A 레코드는 도메인 주소와 IP 주소를 직접 매핑시키는 방법이다. 아래 그림 1을 예로 살펴본다.

 

그림 1

 

첫 번째 컬럼은 도메인 이름을 나타내고, 두 번째 컬럼은 매핑 주소(IPv4)를 나타낸다. 사용자가 example.com  도메인 대한 해석을 요청하면, DNS 서버는 IP 주소를 반환해 준다.  이번에는 never_giveup.com 도메인을 보면, 매핑 주소가 2개이다. 이렇듯 A 레코드는 반드시 도메인과 아이피 간의 일대일 매칭이 될 필요는 없다. ( 일대다/ 다대일 설정이 가능하다. )

 

다음은 CNMAE Record 알아보도록 한다. 

 

그림 2

 

우리가 example.com을 브라우저에 입력한다면, DNS 서버로 요청이 가고 해석되어 IP 주소가 반환된다. ( 자세한 과정은 다음에 포스팅 해보도록 하겠습니다. ) 그럼 반환된 IP 주소를 통해 통신이 이루어진다. 

 

이번에는 whitehat.example.com 을 요청해 보자! 그러면 DNS 서버는 example.com을 반환해 주고, client는 다시 example.com에 대한 ip 주소를 얻기 위해 DNS 서버에 요청을 한다. 그럼 IP가 반환되고, 해당 주소로 통신을 하게 된다. 

 

위와 같이 설명을 했을 때는 CNAME 설정이 번거롭기만 해 보인다. 이는 A 레코드와 CNAME 과의 장 단점을 비교하면 그 의도를 이해할 수 있다. 

 

A 레코드는 한번의 요청으로 찾아갈 서버의 IP 주소를 알 수 있다. 장점은 빠르지만, 단점은 IP 주소가 자주 바뀌는 환경이라면 번거로운 상황이 만들어질 수 있다는 것이다. 반면에 CNAME 레코드의 장점은 IP 주소가 자주 바뀌는 환경에서 유연하게 대응할 수 있다는 것이다. 단점은 실제 IP 주소를 얻기까지의 과정이 있어, 성능저하를 유발할 수 있게 된다는 점과 Subdomain Takeover 취약점에 노출될 수 있다는 것이다.  

 

 

예제

 

만약 위 그림 2와 같이 도메인 인프라 구성이 되어있다면?

 

실 서버 IP 인 112.xxx.xxx.133 의 IP 주소가 119.yyy.yyy.32와 같이 변경된 상황에서 다른 서브 도메인들 ( whitehat.example.com 등 서브 도메인이 존재한다고 가정 ) 은 따로 작업 할 필요 없이 example.com의 A 레코드 정보만 변경하면 된다. 

 

 

참고