1. DNS에 대한 이해


DNS는 숫자로 구성된 네트워크 주소인 IP주소를 사람이 이해하기 쉬운 명칭인 도메인 이름으로 상호 매칭시켜주는 시스템이다.

DNS는 인터넷을 사용하는 동안 항상 사용하는 서비스로, 계층 구조를 이용한다. DNS에서 가장 상위 개체는 '.'이다. 이를 루트( Root )라고 한다. 두 번째 개체로는 국가와 조직체의 특성이 있다.


* DNS의 두 번째 개체에 대한 내용


 항목

 내용

 

 항목 

 내용 

 com 

 영리기관 

 

 mil 

 군사기관 

 net 

 네트워크기관 

 

 edu 

 교육기관 

 org 

 비영리기관 

 

 int 

 국제기관 

 gov 

 정부기관 

 

 kr( korea ), jp( japan ) 

 국가 이름 


두 번째 개체가 국가 이름이면 세 번째 개체가 조직의 특성이 된다. 예를 들면, co( Company ), ac( Academy ) 등이다. 그렇지 않은 경우에는 고유한 조직 이름이 오며, 보통 맨 앞에 자신의 DNS 서버에서 지정해 놓은 www, ftp와 같은 특정 서버의 이름이 온다. DNS는 전체적으로 다음과 같은 계층 구조를 이룬다.


* DNS 계층 구조



2. DNS의 동작 원리


DNS를 사용하려면 클라이언트에서 사용할 DNS 서버를 직접 입력하거나 DHCP를 통해 자동으로 할당받아 설정할 수 있다. 리눅스에서는 /etc/resolv.conf 파일에 DNS 서버를 입력할 수 있다.



윈도우에서는 [제어판]-[네트워크 및 공유센터]-어댑터 설정 변경]의 '로컬 영역 연결'에서 마우스 오른쪽 버튼을 누른다. 메뉴가 나타나면 [속성]을 누르고 인터넷 프로토콜(TCP/IP)의 속성을 선택한다. 다음 그림에서 DNS 서버를 두 개까지 입력할 수 있지만, <고급> 버튼을 누르면 좀 더 다양한 설정도 가능하다.



현재 이용 중인 DNS 서버는 명령 창에서 'ipconfig /all' 명령어를 입력하면 다음과 같이 확인할 수 있다.



* DNS 이름 해석 순서



클라이언트가 www.wishfree.com에 접속하기 위해 이 사이트의 IP 주소가 캐시에 존재하는지 확인한다. 과거에 접속한 적이 있는 사이트는 캐시에 정보가 남아 바로 접속할 수 있다.


① hosts 파일에 정보가 없으면 시스템에 설정된 DNS 서버인 로컬 DNS 서버에 질의한다.

② 로컬 DNS 서버에도 해당 정보가 없으면 루트 DNS 서버에 질의를 보낸다.

③ 루트 DNS 서버에 www.wishfree.com에 대한 정보가 없으면 com을 관리하는 DNS 서버에 대한 정보를 보내준다.

④ 로컬 DNS 서버는 com DNS 서버에 www.wishfree.com에 대해 다시 질의한다.

⑤ 해당 정보가 없을 경우 com DNS 서버는 다시 wishfree.com에 질의하도록 로컬 DNS 서버에 보낸다.

⑥ 로컬 DNS 서버는 마지막으로 wishfree.com의 DNS 서버에 질의한다.

⑦ wishfree.com의 DNS서버로부터 www.wishfree.com에 대한 IP 주소를 얻는다

⑧ 해당 IP 주소를 클라이언트에 전달한다.


그러나 이는 일반적인 과정이 아니라 최악의 경우라 할 수 있다. 대부분 자신이 설정해 놓은 로컬 DNS 서버에서 최초 요청한 도메인의 IP 주소를 바로 얻을 수 있다. 그리고 윈도우에서는 이미 조회한 DNS 정보를 메모리에 저장해두는데, 시스템에 캐시된 DNS 정보는 'ipconfig /displaydns' 명령으로 볼 수 있다.



캐시된 DNS 정보를 모두 지우려면 'ipconfig /flushdns' 라고 입력한다.



DNS 서버는 도메인별로 주 DNS 서버, 부 DNS 서버, 캐시 DNS 서버로 나눌 수 있다. 주 DNS 서버는 도메인의 중심 DNS 서버며, 부 DNS 서버는 주 DNS 서버의 백업 서버라 생각할 수 있다. 캐시 DNS 서버는 주 DNS 서버와 부 DNS 서버에 대한 접속이 불가능 할 때를 대비한 임시 DNS 서버와 비슷하다.



3. DNS를 이용한 정보 습득


DNS를 사용하기 전에 많이 이용되었던 hosts 파일은 아직도 어려가지 목적으로 시스템 운영에 널리 사용되고 있다. hosts 파일에는 여러 시스템에 대한 IP 주소와 URL이 기록되어 있다. hosts 파일은 사용자가 각 시스템에 접근하는데 도움을 주었던 만큼 해커에게도 똑같은 이점을 제공한다.


DNS에도 hosts 파일이 노출되는 것과 비슷한 형태의 정보노출이 있다. 바로 DNS 영역 정보의 접근 허용이다. 부 DNS서버는 주 DNS 서버로부터 영역에 대한 정보를 전송받아 도메인에 대한 정보를 유지한다. DNS 서버의 기본적인 보안 문제는 영역이 전송되는 대상을 부 DNS 서버로 제한하지 않은데서 발생한다. 부 DNS 서버로 전달되어야 할 영역 정보를 해커가 획득하는 것이다.


DNS에 관한 정보를 얻어오는 툴로는 nslookup, dig 등이 있다. 여기서는 가장 일반적인 툴인 nslookup을 사용해본다. nslookup은 윈도우와 리눅스에 기본으로 설치되어 있다.


- 도메인 정보 수집하기

특정 도메인에 관한 정보를 알고 싶을 때는 다음과 같이 해당 도메인 이름을 입력한다.



검색하고자 하는 서버의 종류를 설정할 때는 'set type' 명령을 이용한다. 'set type=ns'라고 입력한 뒤 검색하고자 하는 도메인을 입력한다.



set type 명령으로 출력되는 DNS 정보를 DNS 레코드라고 한다. set type 명령으로 확인할 수 있는 DNS 레코드는 다음과 같다.


종류 

내용 

 A( Address )

 호스트 이름 하나에 IP 주소가 여러 개 있을 수 있고 IP 주소 하나에 

 호스트 이름이 여러개 있을 수도 있다. 이를 정의하는 레코드 유형이 

 A이며, 다음과 같이 정의한다.

 - www        A        200.200.200.20

 - ftp            A        200.200.200.20

 PTR( Pointer )

 A 레코드와 상반된 개념이다. A 레코드는 도메인에 대해 IP 주소를

 부여 하지만 PTR 레코드는 IP 주소에 대해 도메인명을 맵핑한다.

 NS( Name Server )

 DNS 서버를 가리키며, 각 도메인에 적어도 한 개 이상 있어야 한다.

 MX( Mail Exchanger )

 도메인 이름으로 보낸 메일을 받는 호스트 목록을 지정한다.

 CNAME( Canonical Name )

 호스트의 다른 이름을 정의하는 데 사용한다.

 SOA( Start of Authority )

 도메인에 대한 권한이 있는 서버를 표시한다.

 HINFO( Hardware Info )

 해당 호스트의 하드웨어 사양을 표시한다.

 ANY( ALL )

 DNS 레코드를 모두 표시한다.



'NCS보안3기 > 네트워크 해킹' 카테고리의 다른 글

[Network Hacking] 스푸핑 공격  (0) 2017.04.30
[Network Hacking] 스니핑  (0) 2017.04.30
[Network Hacking] TCP 스캔  (0) 2017.04.30
[Network Hacking] ICMP스캔  (0) 2017.04.30
[Network Hacking] OSI 7계층  (0) 2017.04.23
Posted by Imp3rio