AnbyMata의 해킹 노트

[THM] DNS in Detail - EP.2 (Task 4~5). 完 본문

TryHackMe/Web & Networks 기초

[THM] DNS in Detail - EP.2 (Task 4~5). 完

AnbyMata 2026. 1. 7. 22:00

TryHackMe - "DNS in Detail". Task 4~5. Write-up!

출처: https://tryhackme.com/room/dnsindetail

 

DNS in Detail

Learn how DNS works and how it helps you access internet services.

tryhackme.com

 

[4]  Making A Request

DNS Request 과정

DNS Request 과정

 

1)  사용자가 컴퓨터에게 도메인 이름을 request(요청)

[보충 설명]
도메인 이름에 대응되는 IP address를 알려달라고 하는 과정입니다.

예시: "anbymata.com"의 IP address가 뭐야?"

 

2)  컴퓨터는 local cache를 먼저 확인

2-1) 최근에 해당 주소를 조회한 적이 없어서 local cache에 없다면

 → Recursive DNS Server로 request(요청)을 보냄

[보충 설명]
local cache
는 컴퓨터가 이전에 조회한 도메인에 대응되는 IP address들을 임시로 저장해두는 공간입니다.

(불필요한 DNS 요청을 줄여 속도를 올리기 위해 존재합니다)

local cache에서 못 찾아낸다면, 컴퓨터는 현재 내가 원하는 IP address를 모른다는 것입니다.
그래서 원하는 IP address를 얻기 위해 DNS request를 보내는 것입니다.

 

3)  Recursive DNS Server local cache를 확인

 - Google, Facebook, Twitter와 같이 자주 요청되는 서비스에서는 흔한 과정

 - 대부분은 Recursive DNS Server 캐시에 존재함

 

3-1) 결과를 찾는데 성공! (Cache Hit)

 → 해당 결과를 즉시 컴퓨터로 전달 

 → DNS request 종료

 

3-2) 결과를 찾는데 실패! (Cahce Miss)

 → 인테넛의 Root DNS Server부터 차근차근 찾아봄

 

3-3) Recurisve DNS Server란?

 - Client(사용자)를 대신해 DNS 조회를 끝까지 수행하는 서버

 - 보통 ISP가 제공함

 - 사용자가 직접 다른 서버를 선택할 수 있음

[보충 설명]
Google, Facebook
 같은 대형 서비스는 컴퓨터의 local cache에 없는 경우가 많아서 Recursive DNS 서버에 DNS request를 많이 보내지만,

대부분 Recursive DNS 서버의 local cache에 있기 때문에, 어지간하면 Cach Hit이 되어서 이 단계에서 DNS 요청이 종료됩니다.

ISP = 인터넷을 쓰게 해주는 통신사들입니다. SKT, U+, KT 등을 생각하시면 됩니다.

 

4)  Root DNS Server가 request(요청)에 따라 올바른 TLD (Top-Level Domain) Server로 redirect(안내)

 - Root DNS 서버 = 인터넷 DNS 구조의 backbone(뼈대, 중추) 역할을 함

 - Root DNS 서버 IP address를 직접 알려주지는 않음

 - 요청된 도메인의 TLD를 기준으로 다음 서버를 안내 = DNS 조회의 출발점 역할

[보충 설명]
예시
를 들어보면,

1. "www.anbymata.com" 요청
2. TLD가 ".com"임을 인식
3. ".com"의 TLD Server 주소를 반환

즉, TLD Server 주소를 찾아줘, 다음 행선지를 알려주는 것 까지가 Root DNS Server의 역할입니다.

 

5)  TLD Server가 DNS request에 대한 답변을 가진 Authoritative Server (권한 서버)로 redirect(안내)

 - TLD 서버도 IP address를 직접 알려주지 않음

 - 실제 IP address를 포함한 DNS 정보 Authoritative Server가 가지고 있음

 - TLD 서버는 이 Authoritative Server의 위치를 알려줌

 - Authoritative Server = 해당 도메인의 nameserver

 - 도메인에는 보통 여러 개의 nameserver가 설정됨 → 백업 목적

[보충 설명]
Authoritative Server
 Name Server라고도 불립니다.

이 서버에는 IP, MX, TXT 등의 최종 DNS 정보가 담겨 있습니다.

예시를 들어보면,
"tryhackme.com"의 nameserver는 "kip.ns.cloudflare.com"과 "uma.ns.cloudflare.com"으로 여러개가 존재합니다.
하나가 장애가 발생하더라도 다른 쪽을 사용하여 서비스가 중단되는 것을 예방할 수 있습니다.

 

6)  Authoritative DNS Server에서 특정 도메인의 DNS Record를 조회하여 Recursive DNS Server에 전달

 

7)  Recursive DNS Server Authoritative 서버의 응답을 받아 cache에 저장

 - 모든 DNS Record에는 TTL (Time To Live) 값이 있음

 - TTL = 해당 DNS 응답을 다시 조회하기 전까지 cache에 저장해 둘수 있는 시간 (= 캐시 유지 시간)

[보충 설명]
TTL
 초 단위의 시간값입니다.

Recursive DNS 서버는 Authoritative DNS 서버로부터 받은 DNS 응답을 TTL 시간 동안 cache에 저장할 수 있습니다.
그래서 TTL 시간 동안은 DNS 응답을 저장하고 있습니다.
TTL 시간이 만료되면 Authoritative DNS 서버에 다시 조회를 해서 DNS 응답을 다시 가져옵니다.
즉, TTL 시간 동안은 DNS 응답이 변경되더라도 변경되지 않은 값을 계속 가지고 있는 것이고,
TTL 시간이 만료되어야 새로 업데이트 된 DNS 응답을 받을 수 있습니다.

TTL이 길수록 DNS 조회 횟수가 적어 속도가 빠르고 트래픽이 적습니다. = IP 변경의 반영이 느립니다
TTL이 짧을수록 IP 변경의 반영이 빠릅니다. = DNS 요청 횟수가 증가해 트래픽이 많습니다.

 

8)  이후 Recursive DNS Server는 최초 DNS request에 대한 최종결과를 Client(사용자)에게 전달

 

정리하면,

- 컴퓨터(사용자)  Recursive DNS  찾음  IP 반환  컴퓨터(사용자)

- 컴퓨터(사용자)  Recursive DNS  못 찾음  Root DNS  TLD DNS  Authoritative DNS  IP 반환  Recursive DNS  컴퓨터(사용자)

 

 

 


[5]  Practical

DNS Query request를 시각적으로 생성해봅니다!

 

0. 사용법

 - 터미널에서 nslookup 명령어를 사용해 "website.thm" 도메인의 DNS 정보를 조회합니다.

 - 1) 조회하려는 DNS Type을 지정

 - 2) 조회할 subdomain 입력

 - 3) "Send DNS Request" 버튼으로 DNS request 전송

[보충 설명]
아시다시피 subdomain SLD의 왼쪽에 위치합니다.

여기서 SLD는 "website"입니다.
"website.thm" 도메인에 대해 조회하고 싶다면, subdomain을 비우고 전송하면 되고,
"alpha.website.thm" 같이 subdomain이 있는 도메인을 조회하려면, subdomain에 "alpha" 입력 후, 전송하면 됩니다.

아래 내용을 보기 전, TryHackMe 사이트에서 실습해보세요! 

 

 

1. "shop.website.thm" 의 CNAME Record 조회

 - CNAME = 도메인이 가리키는 다른 도메인 (도메인 별칭)

'nslookup --type=CNAME shop.website.thm'

 

 

2. "website.thm"의 TXT Record 조회

- TXT = 텍스트 형태의 데이터

'nslookup --type=TXT website.thm

 

 

3. "website.thm"의 MX Record 조회

 - MX = priority 값 (우선순위) + 도메인의 메일을 수신할 서버

'nslookup --type=MX website.thm'

 

 

4. "www.website.thm"의 A Record 조회

 - A = IPv4 address (IP 주소의 버전 = IPv4)

'nslookup --type=A www.website.thm'

 

 


[TryHackMe] DNS in Detail - EP.2 (Task 4~5). END.

 

[TryHackMe] DNS in Detail. Finish!!