R's Hacking Daily Log

DNS in detail 본문

TryHackMe/Walkthroughs

DNS in detail

hanhxx 2023. 3. 19. 11:59

What is DNS

DNS :: Domain Name System의 약자로, 

복잡한 숫자(IP)를 기억할 필요 없이 인터넷상의 모든 장치와 통신할 수 있는 심플한 방법을 제공해 주는 시스템이다.

 

예를 들어 google에 접속하려는 사용자가 있다고 해보자.

이때 사용자는 검색창에 google이라고 입력하지, google의 IP address 8.8.8.8을 입력하지 않는다.

 

엥? 싶을 수도 있다. 왜 IP 주소가 여기서 나오지??

IP address라는 건 간단히 말해 인터넷 상의 주소를 가리킨다. 

그렇기에 인터넷 상의 모든 디바이스는 자신의 고유 IP를 가지고 어딘가로 접속(접근)하고자 할 때도

IP를 사용해 목적지를 찾아간다.

 

하지만 naver, google.. 등에 접속하려고 그들의 IP를 검색창에 입력해 본 사람은 드물 것이다.

이때 등장하는 system이 DNS이다.

 

사람끼리 얘기하는 대상(naver, google)을 컴퓨터가 알아듣는 주소값으로 바꿔주는 역할을 DNS가 수행한다. 

따라서 사용자는 0.0.0.0 ~ 255.255.255.255까지의 해당하는 IP를 외워서 입력하지 않고 

접속하고자 하는 대상의 이름을 입력하는 것만으로 인터넷을 사용할 수 있게 된다.

 

쉽게 말해, 사람에서 컴퓨터 입장으로 알아들을 수 있는 번역을 해주는 것이다.

 

 

Domain Hierarchy

전세계적으로 사용하는 디바이스가 굉장히 많아 IP가 부족해져 IPv6를 사용하는 마당에

도메인과 IP에 대한 모든 정보를 하나의 서버에서 관리한다면 어떻게 될까??

 

서버가 관리해야하는 데이터 량이 굉장히 방대할 것이고

그 서버가 down되면 아마 전 세계적으로 인터넷 이용이 불가해질 것이다.

 

그렇다보니 Domain을 기준으로 데이터를 관리하는 서버들이 나뉘게 되고

서버 간의 관계성을 연결하다 보니 계층적인 모습을 띄게 된다. 

 

 

TLD (Top Level Domain)

:: 가장 오른쪽에 위치한 Domain name  (ex. google.com → .com)

TLD는 두 가지 유형, ccTLD & gTLD로 나눠볼 수 있다.

 

ccTLD는 country code를 나타내며 예를 들어 

canada = .ca / United Kingdom = .co.uk 와 같은 경우를 볼 수 있다.

 

gTLD는 Generic을 의미하며 Domain의 목적을 나타낸다. 

organisation = org  /  education = edu와 같은 예가 여기에 속한다.

 

 

Second Level Domain

:: TLD가 가장 오른쪽에 위치한 Domain이라면 Second level domain은 TLD 왼쪽에 위치한 Domain이다.

ex. tryhackme.com → tryhackme

 

domain name을 등록할 때 Second level domain은 63개 문자 + TLD로 제한되며 

a~z & 0~9 &  - (하이픈)으로만 구성돼야 한다. 

 

 

Subdomain

:: Second level domain 왼쪽에 붙는 Domain (ex. mail.google.com → mail)

subdomain도 등록할 때 Second Level Domain과 동일한 규칙이 적용되며

여러 개의 subdomain을 사용할 수 있다. (ex. jupiter.servers.tryhackme.com)

 

다만, 총길이가 253 문자보다 적거나 같아야 한다.

길이 조건만 만족한다면 몇 개의 subdomain을 붙이든지는 상관없다고 한다.

 

 

DNS Record Types

위에서 "domain을 등록한다"라고 언급한 부분이 있다. 

어떤 Domain에 대해 IP 주소를 얻기 위해선 미리 그 정보를 등록해야 한다.

(IP는 고유한 값이어야 하고 IP가 뭔지 모르면 domain에 대한 IP를 알 수 없는 건 당연한 부분!)

 

그래서 domain과 그에 대한 정보를 저장해 두는 데 이걸 record라고 하며

domain이 web site만을 위해 동작하지는 않기 때문에 서로 다른 유형(Types)의 record가 존재한다.

 

A record 

:: IPv4에 대한 정보를 저장할 때 사용하는 record

 

AAAA record

:: IPv6에 대한 정보를 저장

 

CNAME record 

:: canonical hostname을 뜻하는 record.

흔히 사람들이 사용하는 hostname(google, naver..)은 사실 간단한 형태의 이름이고,

복잡하게 생긴 정식 hostname이 따로 존재한다. 

 

그 정보를 지정하는 record이다. 

 

MX record 

:: 사용자가 요청한 domain의 mail service를 처리하는 서버의 주소 값을 지정하는 record

 

NS record

:: domain에 대한 책임 서버 host name을 지정하는 record.

 

ex. (abcddd.com, 111.222.0.33, A) :: abcddd.com의 IPv4를 111.222.0.33으로 지정한다.

 

 

Making A Request 

DNS도 client - server pair 형태의 구조를 가진다.

client가 어떤 요청(request)을 보냈을 때 server가 그 요청에 대한 응답(response)를 해주는 형태로 

Domain에 대한 IP를 얻어올 수 있다.

 

 

 

1. client - local DNS server

client : "amazon.com" IP 알려줘!!

server :

- local dns server가 이미 처리되었던 정보를 캐싱을 이용해 갖고 있을 경우 local dns server가 해당 요청을 처리.

"너가 이미 방문했던 사이트라 내가 cache로 정보를 갖고 있지"

 

- local dns server가 해당 정보를 갖고 있지 않을 경우

"음.. 이건 나도 몰라. root DNS server한테 물어볼게"

 

 

2. local server - root DNS server

local server : "amazon.com IP 어딨어요??"

root server : "amazon.com이라~ .com에 대한 정보는 이 TLD에게 물어보렴"

 

 

3. local server - .com TLD server

local server : "amazon.com IP 어딨어요??"

TLD server : "amazon.com이면~ 이 책임 server에게 가봐"

 

 

4. local server - amazon.com Authoritative DNS server

local server : "amazon.com IP 알아요?"

Authoritative server : "amazon.com IP? 잠깐만. (뒤적뒤적) 자 여깄다."

 

 

5. local server - client 

server : "amazon.com IP 찾아옴.. 이 IP로 접속해라!"

 

 

Root server : TLD server의 IP를 제공

TLD server : authoritative server의 IP를 제공

authoritative server : 갖고 있는 record를 기반으로 요청된 domain의 IP를 제공

'TryHackMe > Walkthroughs' 카테고리의 다른 글

Passive Reconnaissance (2)  (0) 2023.03.22
Passive Reconnaissance (1)  (0) 2023.03.20
Common Attack (2)  (0) 2023.03.13
Common Attacks (1)  (0) 2023.03.03
Introductory Researching  (0) 2023.02.06
Comments