공시 한 판

정보보호론 개념서 · 네트워크 공격

DNS 구조와 스푸핑

설명 영상 DNS 구조와 스푸핑 · 2:36

핵심 정리

사용자가 URL 주소를 입력하면 컴퓨터는 이를 IP 주소로 바꾸기 위해 등록된 도메인 네임 시스템에 UDP 프로토콜로 질의를 보낸다. 스푸핑은 본래 상대를 속이려고 신원이나 출처를 거짓으로 꾸미는 행위를 뜻하며, DNS 스푸핑은 그중 이름 해석 단계를 겨냥한 공격이다. 이 공격은 사용자를 악의적인 웹 사이트에 접속하도록 하는 것을 목적으로 한다. 구체적으로 DNS 스푸핑은 사용자의 DNS 질의에 위조된 응답을 전달하는 공격이다. 사용자가 정상 사이트 주소를 입력하더라도 이름 해석 단계에서 목적지가 바뀌므로, 피해는 사용자가 주소를 잘못 입력했는지와 무관하게 생긴다. 공격의 승부는 순서에서 갈린다. 공격자는 DNS 서버를 장악하거나 사용자와 DNS 사이의 트래픽을 스니핑하여 질의를 엿본 뒤, DNS 스푸핑은 DNS 질의를 스니핑한 뒤 위조된 응답을 먼저 보내 클라이언트가 이를 올바른 응답으로 받아들이게 하는 순서로 진행된다. 이처럼 먼저 도착한 위조 응답이 받아들여지는 것이 공격의 핵심이다. 위조 응답으로 잘못된 IP 주소를 받은 사용자는 원래 목적지가 아닌 곳으로 이동한다. 피해가 어느 정도 이어질지는 위조 응답이 어디에 머무는지에 따라 달라지므로, 응답이 캐시에 저장되는 경우를 따로 봐야 한다. DNS 스푸핑 방어의 핵심은 응답의 진위 확인이다. 받은 응답이 진짜 DNS 데이터인지 가려낼 장치가 있어야 위조 응답을 걸러낼 수 있다.

자세히

자원 레코드의 역할

DNS는 도메인 이름마다 용도가 다른 자원 레코드를 둔다. NS 레코드는 각 도메인에 한 개 이상 있어야 하며, 해당 도메인의 DNS 서버를 가리킨다. NS 레코드는 질의를 받을 서버가 어디인지 알려 주는 역할을 한다. MX 레코드는 도메인 이름으로 보낸 메일을 받을 호스트 목록을 지정한다. CNAME 레코드는 호스트의 다른 이름, 즉 별칭을 정의하는 데 사용된다. 네 레코드를 방향과 역할로 나누면 아래 표와 같다.

레코드방향과 역할
NS도메인의 DNS 서버를 가리킴
MX도메인 이름으로 보낸 메일을 받을 호스트 목록 지정
CNAME호스트의 다른 이름(별칭) 정의
PTRIP 주소를 도메인 이름으로 역매핑

PTR 레코드는 방향이 반대라서 헷갈리기 쉽다. 이름을 주소로 바꾸는 흐름과 주소를 이름으로 바꾸는 흐름을 나눠서 기억해야 한다.

DNSSEC와 응답 진위 확인

DNS 데이터의 진위를 디지털 서명으로 확인하도록 설계된 기술은 DNSSEC이다. 디지털 서명은 데이터가 서명한 주체에게서 나왔고 중간에 바뀌지 않았는지를 확인하는 수단이므로, 위조 응답을 가려내는 데 맞춰 쓰인다. 이 기술이 겨냥하는 문제는 위조된 응답을 진짜처럼 받아들이는 것이므로 DNS 스푸핑 방어와 직접 맞닿아 있다.

이어지는 내용

로그인하면 하루 5페이지까지 무료로 전체를 읽을 수 있습니다.

앱에서 이 절 읽기