DNS는 인터넷의 핵심 기능 중 하나로, 단순히 웹 주소를 IP 주소로 변환하는 것을 넘어서 각종 네트워크 서비스와 애플리케이션의 연결 고리를 제공한다.
이런 중요한 기능을 수행함에도 불구하고, DNS의 구조적 특성과 복잡성은 다양한 보안 취약점을 내포하고 있으며, 이는 곧 해커들에게 매력적인 공격 대상이 되기도 한다.
흔히 'google.com으로의 여정'과 같은 간단한 DNS 조회를 통해 이메일이나 웹사이트 접속 과정에서 DNS의 역할을 가볍게 넘겨짚곤 한다.(...)
이번 DNS 해킹 1편에서는 DNS의 개념에 대해 짚어보고,
DNS 해킹 2편에서 여러 도구들과 해킹 기법에 대해 알아볼 예정이다.
DNS : Domain Name System 도메인 이름 시스템.
도메인 네임은 숫자로만 되어 있는 IP주소를 사용자가 기억하기 쉽게 도입되었다.
DNS는 이러한 도메인 네임을 IP 주소로 변환하여 브라우저에 전달하는 역할을 수행한다. DNS(Domain Name System) 는 인터넷의 전화번호부라고 봐도 무방하다.
name server 는 www.google.com 의 IP주소가 무엇이지? 와 같은 질문에 대한 답을 제공한다. IP주소 대신 도메인 이름으로 기업이나 조직의 네트워크에 접근할 수 있는 것은 바로 이 name server 덕분이다. 이 시스템은 사람이 읽을 수 있는 도메인 이름을 컴퓨터나 다른 장비들이 이해할 수 있는 IP 주소로 변환하는 역할을 한다.
그러나 설계 및 구현 방식 때문에 DNS는 분산 서비스 거부 공격의 대상이 된다.
특히, 인터넷 초기에 개발된 DNS는 설계당시 보안성을 충분히 고려하지 못해, DNS정보의 위-변조가 가능하다는 문제가 있었다.

2.1. 루트 도메인 (Root Domain)
2.2. 최상위 도메인 (Top-Level Domains, TLDs)
.com, .org, .net, .info, .biz 등과 같이 일반적인 목적으로 사용되는 도메인이다..uk (영국), .de (독일), .kr (한국) 등이 있다.2.3. 세컨드 레벨 도메인 (Second-Level Domains)
example.com에서 example이 세컨드 레벨 도메인에 해당한다. 이 레벨의 도메인은 개인, 회사, 조직 등이 등록할 수 있으며, 도메인 이름을 통해 해당 엔티티의 식별이 가능하다.2.4. 서브 도메인 (Subdomains)
mail.example.com에서 mail은 example.com의 서브 도메인이다. 서브 도메인은 특정 서버(예: 메일 서버)나 서비스(예: 고객 지원)를 구분하는 데 사용될 수 있다.기본적인 DNS 질의 과정은 이전 글에서도 일부 확인할 수 있다.
다시 한번 기본적인 DNS Lookup 과정을 살펴보자.
웹 페이지가 로드되기까지 : www.google.com의 여정
1. 브라우저 캐시 확인
사용자가 웹 브라우저에 www.google.com을 입력하면, 브라우저는 먼저 자신의 캐시를 확인하여 이전에 방문한 적이 있는지 확인한다. 만약 캐시에 www.google.com의 IP 주소가 있다면, 이 주소를 사용하여 서버에 접속한다.
2. 시스템 캐시 확인
브라우저 캐시에 정보가 없는 경우, 운영 시스템의 DNS 캐시를 확인한다.
3. 로컬 DNS 서버 요청
시스템 캐시에도 정보가 없다면, 요청은 사용자의 네트워크에 설정된 로컬 DNS 서버로 전송된다.
4. 재귀적 및 반복적 조회
재귀적 조회: 로컬 DNS 서버가 캐시에 www.google.com의 IP 주소를 가지고 있지 않다면, 이 서버는 다른 DNS 서버들로부터 필요한 정보를 얻기 위해 자동으로 요청을 연속적으로 전송한다.
반복적 조회: 로컬 DNS 서버가 다른 서버에 요청을 전달하지 않고, 대신 클라이언트에게 다음 조회를 위한 서버의 주소를 알려준다.
5. 루트 DNS 서버
로컬 DNS 서버는 루트 DNS 서버에 요청을 보내서 시작할 수 있으며, 루트 서버는 요청받은 최상위 도메인 .com 의 서버를 가리킨다.
TLD(Top Level Domain) 서버
루트 서버는 .com 도메인의 TLD 서버 주소를 로컬 DNS 서버에 알려주며, 로컬 DNS 서버는 이 주소로 질의를 계속한다.
6. 권한 있는 네임 서버
TLD 서버는 google.com 도메인의 권한 있는 네임 서버 주소를 로컬 DNS 서버에 제공한다. 로컬 DNS 서버는 이 네임 서버에 www.google.com의 IP 주소를 요청한다.
7. 응답 저장 및 전송
권한 있는 네임 서버는 www.google.com의 IP 주소를 로컬 DNS 서버에 보낸다. 로컬 DNS 서버는 이 IP 주소를 캐시에 저장하고, 사용자의 시스템으로 응답을 전송한다. 사용자의 브라우저는 이제 이 IP 주소를 사용하여 Google 서버에 접속하고 웹 페이지를 로드할 수 있다.
이러한 과정을 통해 DNS는 뒷단에서 인터넷의 기능적인 부분에서 매우 핵심적인 역할을 하며, 사용자가 IP 주소를 직접 기억할 필요 없이 웹 사이트에 접속할 수 있게 해 준다.

DNS 자원 레코드(Resource Records, RR)는 도메인 이름과 관련된 데이터를 저장하며, 각 레코드는 특정 유형의 정보를 나타낸다. 데이터가 하나의 서버에 저장되어 있는 것이 아니라 지구 전역의 수많은 서버에 분산되어 있기 때문에 공격자가 특정 이름 서버 하나를 장악해서 DNS 전체를 장악할 수 없다.
여러 가지 유형의 DNS 자원 레코드가 있으며, 각각은 특정 목적으로 사용된다.
example.com. IN A 192.0.2.1example.com. IN AAAA 2001:0db8:85a3:0000:0000:8a2e:0370:7334example.com. IN MX 10 mail.example.com.example.com. IN NS ns1.example.com.example.com. IN SOA ns1.example.com. hostmaster.example.com. ( 2020091001 7200 3600 1209600 86400 )이와 같은 DNS 자원 레코드는 인터넷 인프라의 기본 구성 요소로, 올바른 DNS 설정은 네트워크의 안정성과 보안에 직접적인 영향을 미친다. 그러나 복잡한 DNS 아키텍처는 종종 취약점을 가질 수 있으며, 이는 보안 위협으로 이어질 수 있다. 따라서 이러한 자원 레코드의 정보를 확보하는 것은 해킹과 보안에서 모두 중요한 역할을 한다.

e-스포츠를 시청할 때 간간히 보이던 해킹 기법이다. 올해 역시 LCK에서 해당 공격으로 인해 게임 진행이 중단되는 현상이 있었다.
e스포츠 덮친 '디도스 공격'...게임업계 시름
디도스란, 공격자가 여러 컴퓨터를 사용하여 대상 DNS 서버에 대량의 요청을 보내 서비스를 마비시키는 공격이다.
이로 인해 정상적인 요청도 처리할 수 없게 된다.
공격자가 DNS 캐시에 잘못된 주소 정보를 삽입하여 사용자가 의도치 않은 사이트로 유도되도록 만드는 기법이다. 이를 통해 사용자를 악성 사이트로 유도하거나 데이터를 가로챌 수 있다.
공격자는 DNS 서버에 잘못된 정보를 삽입하여, 서버의 캐시가 오염되도록 만든다. 그 결과, 그 DNS 서버를 사용하는 모든 사용자의 요청이 잘못된 주소로 리디렉션될 수 있다.
DNSSEC은 DNS 응답의 진위를 검증하기 위한 기술. 다시 말해 도메인 네임 시스템(DNS)의 보안을 강화하기 위해 설계된 일련의 확장 기능이다.
그러나 구성 오류나 구현상의 허점을 이용하여 이 보안 기능을 우회하는 공격도 존재한다.
DNS Spoofing이란 공격자가 가짜 DNS 응답을 생성하여 사용자의 DNS 요청을 가로채고, 사용자를 악성 사이트로 유도한다. 이는 캐시 독살과 유사하지만, 직접적으로 사용자의 세션을 가로채어 이루어진다.
공격자는 네트워크 트래픽을 가로채거나 감청하여, 사용자가 보낸 정상적인 DNS 요청에 대해 가짜 DNS 응답을 보내 사용자를 속인다. 이 과정에서 공격자는 중간자 공격(Man-in-the-Middle) 방식을 이용한다.
예시로는 사용자가 은행 웹사이트에 접속하려고 할 때, 공격자는 가짜 DNS 응답을 통해 사용자를 피싱 사이트로 유도할 수 있다.

그렇다면 DNS Cache Poisoning과 DNS Spoofing은 어떤 차이가 있을까?
DNS Spoofing은 주로 특정 사용자의 요청을 가로채어 조작하는 방식이고, DNS Cache Poisoning은 DNS 서버의 캐시 자체를 오염시켜 다수의 사용자에게 영향을 미치는 방식이라는 차이가 있다.
또한 DNS 캐시 독살(DNS Cache Poisoning)이나 DNS Spoofing은 파밍(pharming) 공격 유형에 속할까 피싱(Phishing) 공격 유형에 속할까?
이는 파밍 공격 유형에 속한다.
사용자가 정상적인 URL을 입력하더라도 독살된 DNS 캐시로 인해 자동적으로 사기성 사이트로 리디렉션되어 개인 정보가 탈취될 수 있다. 반면, 피싱(phishing)은 주로 속임수를 사용하여 사용자로부터 직접적으로 개인 정보를 요구하는 이메일이나 메시지를 통해 이루어진다. 피싱은 사용자를 속여 정보를 얻는 반면, 파밍은 사용자의 의지와는 무관하게 기술적인 방법으로 사용자를 조작하여 악성 사이트로 유도한다.
이제 이 개념들을 가지고 다음 시간부터 실습에 적용을 해보자!