AnbyMata의 해킹 노트

[THM] DNS in Detail - EP.1 (Task 1~3) 본문

TryHackMe/Web & Networks 기초

[THM] DNS in Detail - EP.1 (Task 1~3)

AnbyMata 2026. 1. 6. 22:00

TryHackMe - "DNS in Detail". Task 1~3. Write-up!

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

 

DNS in Detail

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

tryhackme.com

 

[1]  What is DNS?

DNS (Domain Name System)

- 사람이 읽기 쉬운 도메인 이름을 IP address로 바꿔주는 시스템

- 덕분에 사람이 복잡한 숫자 IP address를 안 외워도 됨

- IP address 대신 도메인 이름으로 웹사이트 접근(접속) 가능

- 도메인 이름 예시: tryhackme.com

 

IP address (IP 주소)

- 인터넷 상의 장치가 가지는 고유한 숫자 주소

- 0~255 범위의 4개의 digits(숫자)가 마침표(.)로 구분되어 구성됨

- IP address 예시: 109.33.54.238

[보충 설명]
세상의 모든 집이나 건물은 주소를 가지고 있습니다.

이 주소는 중복될 수 없는 고유한 값으로, 정확한 위치를 구분하는 역할을 합니다.

이와 비슷하게 인터넷에 연결된 컴퓨터들이나 장치들은 각각 주소의 역할을 하는 IP address를 가지고 있습니다.
이 IP address를 통해 누가 누구와 통신하는지 데이터가 어디에서 어디로 이동해야 하는지 알 수 있습니다.

근데, IP address는 "101.28.11.227"와 같은 긴 숫자로 이루어져서 사람이 기억하고 사용하기엔 굉장히 불편합니다.
그래서 우리는 naver.com 처럼 우리가 쓰기 편한 도메인 이름을 만들어서 사용합니다.
우리가 도메인 이름을 입력하면, 이 자동으로 IP address로 변환해 인터넷 상에서 우리가 원하는 대상과 통신할 수 있도록 도와주는 시스템이 바로 DNS (Domain Name System)입니다.

 

 


[2]  Domain Hierarchy

- Domain은 Hierarchy(계층) 구조로 이루어짐

- 위에서부터 "Root Domain" - "TLD (Top-Level Domain)" - "SLD (Second-Level Domain)" - "Subdomain" 순으로 이뤄짐

Domain Hierarchy 예시

1. Root Domain

 - 최상위 도메인

 - "." (마침표)로 표시되지만 보통 생략함

 

2. TLD (Top-Level Domain)

 - 도메인 이름에서 가장 오른쪽에 위치한 부분

 - 두 가지 종류가 존재함

 - gTLD (Generic Top Level Domain) : 용도를 알려줌

 - gTLD 예시.com (상업용) / .org (조직) / .edu (교육) / .gov (정부)

 - ccTLD (Country Code Top Level Domain) : 국가를 알려줌

 - ccTLD 예시: .kr (한국) / .eu (유럽연합)

 - 도메인 수요가 늘어나면서 .online, .website, .biz 같은 새로운 gTLD들이 대거 등장함

 

3. SLD (Second-Level Domain)

 - "tryhackme.com" 이라는 예시에서 tryhackme 에 해당되는 부분

 - 최대 63 characters(문자)까지 가능 (63자까지 가능)

 - 0~9의 숫자 + a~z의 알파벳 + hyphens(하이픈) "-" 만 사용가능

 - 연속 하이픈 불가능

 - 시작과 끝에는 하이픈 불가능

 

4. Subdomain

 - 도메인 이름에서 SLD (Second-Level Domain) 왼쪽에 위치한 부분

 - 최대 63 characters(문자)까지 가능 (63자까지 가능)

 - 0~9의 숫자 + a~z의 알파벳 + hyphens(하이픈) "-" 만 사용가능

 - 연속 하이픈 불가능

 - 시작과 끝에는 하이픈 불가능

 - 결과적으로 SLD와 동일한 생성 규칙을 가짐

 - 여러 개의 Subdomain 사용 가능

 - Subdomain 개수 제한 없음 (이론상 무한 생성 가능)

 - 전체 도메인의 길이는 253자 이하

[보충 설명]
"www.google.com" 이라는 예시를 살펴보면,

Root Domain은 생략되고,
"www" = 웹 서비스를 의미하는 Subdomain
"google" = 도메인의 주체가 google임을 나타내는 SLD (Second-Level Domain)
".com" = 상업용 사이트임을 나타내는 TLD (Top-Level Domain)
즉, Subdomain + SLD + TLD로 구성됩니다.

도메인 이름은 period(마침표) (.)로 구분된 여러 label로 구성됩니다.
Subdomain은 사용자가 붙인 이름이고, 기술적으로 의미는 가지지 않습니다.
("www"는 보통 웹 서비스를 의미한다는 관례 정도는 있음)
TLD의 경우에도 현재에는 용도 구분의 의미는 거의 사라졌습니다.

조금 심화적인 내용으로는
"www.google.com"과 "google.com"의 경우,
서로 다른 호스트이기에 서로 다른 IP를 가질 수 있습니다.
웹 서버에서 redirection으로 묶을 뿐, DNS 레벨에서는 분리된 이름입니다.
"www.google.com", "mail.google.com", "api.google.com" 모두 다른 호스트들입니다.
그저 웹 서버 redirection 때문에 동일해 보이는 것입니다.

"www.anbymata.com" 이라는 도메인 이름이 있습니다.
여기에 "test"라는 서브도메인을 추가하여
"test.www.anbymata.com"을 만들 수 있습니다.
이론적으론 서브 도메인의 개수 제한은 없지만,
전체 도메인의 길이가 253자 이하여야 되기에 실제 생성에는 한계가 생기게 됩니다.

 

 


[3]  Record Types

- DNS는 웹사이트에만 사용되는 것이 아님

- DNS는 웹사이트 외에도 메일, 인증, 서비스 식별 등에 사용됨

- 여러 종류의 DNS Record가 존재함

 

1. A Record

 - IPv4 address로 변환 

 - 예시: 11.109.24.214

[보충 설명]
IPv4 address
는 0~255 범위의 4개의 숫자로 이루어집니다.

이때 숫자는 10진수 (0~9)를 사용합니다.

 

 

2. AAAA Record

 - IPv6 address로 변환

 - 예시: 2100:345:11::223a:ec3

[보충 설명]
IPv6 address
는 8개의 블록으로 이루어집니다.

각 블록은 4자리의 16진수로 구성됩니다.
16진수는 (0~9) + (a~f) 를 사용합니다
추가적으로 0000은 숫자를 생략하기도 합니다.

 

 

3. CNAME Record

 - 도메인을 다른 도메인으로 연결 → 도메인 별칭(alias) 만들기

 - 최종 IP를 얻기 위해 추가 DNS 요청이 필요함 

 - 즉, IP 주소를 직접 저장하지 않음

 - 다른 Record와 같이 사용 못 함

[보충 설명]
CNAME Record
는 한 도메인이 다른 도메인을 가리킵니다. 도메인의 별명을 만들어준다고 생각할 수 있습니다.

도메인이 다른 도메인을 가리키기에 IP를 직접 저장하지 않습니다.
다른 도메인을 가리킨다는 것은 여러 도메인들이 하나의 실제 도메인을 가리키도록 설정할 수 있다는 뜻입니다.
하나의 실제 도메인을 공유함으로 관리 편의성을 높이는 활용이 가능합니다.

예시를 들어보면,
1. "www.example.com" 접속
2. CNAME Record에 의해 "example.com"으로 변환
3. "example.com"을 A Record나 AAAA Record로 조회
4. 실제 IP 반환
이런 과정을 거치기에 CNAME은 다른 Record와 같이 사용할 수 없습니다.

 

 

4. MX Record

 - 도메인의 메일을 수신할 서버를 지정함

 - IP가 아닌 메일 서버의 도메인 주소로 연결

 - Priority(우선순위) 값이 존재함

 - Priority 값이 낮을수록 우선순위가 높음 (1순위, 2순위 느낌)

 - 주 서버가 다운될 시, 백업 메일 서버로 연결하여 장애에 대비함

[보충 설명]
정리하면, MX Record는 도메인의 메일을 받은 서버들의 우선 순위를 지정해줍니다.

1. priority가 낮은 서버부터 도메인 메일 수신을 시도합니다.
2. 우선 순위의 서버에서 수신을 실패하면 다음 우선 순위의 서버로 넘어갑니다.
priority가 낮다는걸 1순위, 2순위 느낌으로 이해하면 편합니다. (숫자가 작은수록 우선!)

예시를 들어보면,
1. "anbymata.com"이라는 도메인이 있습니다.
2. 메일 서버가 "anbymata.com"의 MX Record를 확인합니다.
3. "anbymata.com"은 priority = 10의 "first.anbymata.com"과 priority = 20의 "second.anbymata.com"이라는 MX Record 값을 가지고 있습니다.
4. priority가 가장 낮은 "first.anbymata.com"으로 메일 전송을 시도합니다.
5. 만약 "first.anbymata.com"이 다운되어 실패한다면,
6. 다음 우선 순위인 "second.anbymata.com"으로 메일을 전송합니다.

 

 

5. TXT Record

 - 텍스트 형태의 데이터를 자유롭게 저장할 수 있는 field

 - 여러 용도로 사용됨

  + 1. 메일을 보낼 수 있는 서버 목록 명시 → 스팸 메일, 이메일 스푸핑 방지

  + 2. 도메인 소유권 확인 (= 도메인 소유자임을 증명)

 - 사람보다는 시스템을 읽는 설정 정보들

 - 하나의 도메인의 여러 TXT Record 존재 가능

[보충 설명]
TXT Record
는 도메인에 대한 설명서, 증명서 역할을 주로 합니다.

그렇기 때문에 사람을 위한 정보가 아닌 시스템을 위한 정보들이 주를 이룹니다.

(굳이 알 필요는 없는 참고 내용들)
이메일 발신 서버 지정 예시
1. 도메인 "anbymata.com"으로 누가 메일을 보낼 수 있는지 지정합니다,
2. "v=spf1v=spf1 ip4:203.0.113.10 include:_spf.google.com ~all" TXT Record 값을 가집니다.
 - "203.0.113.10" = 허용된 메일 서버
 - "include:_spf.google.com ~all" = Google 메일 서버도 허용
 - 그 외 서버들은 허가되지 않음
3. 허가되지 않은 서버가 '@anbymata.com'으로 메일을 보내면 스팸 또는 위조 메일로 판단합니다.

도메인 소유권 인증 예시
1. 사용자가 서비스에게 "anbymata.com" 도메인을 사용하겠다고 말합니다.
2. 서비스가 주인이 맞는지 확인하기 위해 "anbymata.com" 도메인의 DNS에 "verification=alpha1323x"라는 TXT Record 값을 추가해보라고 합니다. 
3. 랜덤한 TXT Record 값을 주기에 예측이 불가능합니다.
4. DNS에 TXT Record를 추가합니다.
5. DNS 수정할 수 있다는 것이 주인이라는 증거가 됩니다.
6. 서비스가 DNS를 조회해서 "anbymata.com" DNS에 올바른 TXT Record 값이 있는지 확인합니다.
7. 올바른 값이 있는지 확인하면, 사용자는 "anbymata.com"의 소유자임을 인증해줍니다.
여기서 서비스는 Google / Github / Cloudflare 등이 있습니다.

 

 


[TryHackMe] DNS in Detail - EP.1 (Task 1~3). END.

 

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

https://anbymata.tistory.com/34

 

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

TryHackMe - "DNS in Detail". Task 4~5. Write-up!출처: https://tryhackme.com/room/dnsindetail DNS in DetailLearn how DNS works and how it helps you access internet services.tryhackme.com [4] Making A RequestDNS Request 과정 1. 사용자가 컴퓨터에

anbymata.tistory.com