합동회사 코무라소프트
DNS201

다이어그램과 연습 문제로 이해하는 DNS 캐시 포이즈닝

DNS101에서 이름 해석의 기초를 잡은 뒤에 이어서 읽으면 쉽게 들어갈 수 있는, DNS 보안의 follow-up 강좌입니다. 「공용 리졸버의 cache에 거짓 답이 남으면 무엇이 일어나는가」를 축으로, transaction ID·source port·bailiwick·TTL·DNSSEC을 순서대로 정리합니다.

방어·관측 시점 전 42 문제 브라우저 내 채점 localStorage 저장
소요 시간
3〜4 시간
문제 수
전 42 문제
형식
7 장 + 연습 문제 + 케이스 연습
비용
무료

주의: 이 강좌는 방어·진단 목적의 지식 강좌입니다. 실제 환경에 대한 공격 절차나 도구 제작은 다루지 않습니다.

가장 먼저 떠올릴 그림

등장인물역할
이용자 / browser이름을 조회하는 쪽. resolver의 답을 믿는다.
shared recursive resolver여기에 cache가 있다. 여러 이용자가 공유한다.
authoritative servers각 존의 정규 데이터를 가진다.

잘못된 RRset이 shared recursive resolver의 cache에 남으면, 그 resolver를 사용하는 이용자 전체에게 같은 오답이 배포됩니다.

이 강좌의 특징

1. 하이 레벨의 구조 이해
실제 환경에 대한 공격 절차가 아니라, 왜 shared cache가 위험한지, 방어 측은 무엇을 봐야 하는지에 초점을 맞춥니다.
2. bailiwick / race를 모형으로 확인
in-bailiwick glue, out-of-bailiwick additional, entropy와 시도 횟수의 관계를 작은 모형으로 만져봅니다.
3. DNSSEC의 수비 범위를 오해하지 않는다
origin authentication과 integrity를 얻는 대신, confidentiality는 별개이며, last hop의 trust 문제가 남는다는 점을 짚어둡니다.
4. 마지막은 케이스 문제
split-horizon, negative caching, NAT, AD bit 등 현장에서 혼동하기 쉬운 논점을 8 문의 케이스로 정리합니다.

이 강좌에서 반복해 사용하는 5 가지 시점

1. 어느 계층의 cache인가
browser / OS / recursive resolver / authoritative를 혼동하지 않는다.
2. 어떤 조건에서 응답을 수락하는가
question, ID, address, port가 일치해야 비로소 같은 transaction으로 간주됩니다.
3. 그 추가 정보는 어디까지 믿어도 되는가
glue / referral / final answer를 구분하고, bailiwick을 의식합니다.
4. 성공 확률에 영향을 주는 것은 무엇인가
entropy의 넓이와 attempts의 많음을 나누어 생각합니다.
5. DNSSEC과 운용의 경계
서명으로 지킬 수 있는 부분과, stub / recursive / channel의 trust 문제를 나누어 생각합니다.

장 구성

수강 요령

  1. 「어느 계층의 cache인가」를 먼저 고정하고 나서 문제를 읽어 주세요.
  2. 수치 문제는 암산으로 건너뛰지 말고, TTL과 경과 시간을 초 단위로 적어 주세요.
  3. 제 2 장의 bailiwick, 제 3 장의 entropy, 제 5 장의 DNSSEC은 식과 숫자로 확인해 주세요.
  4. 종합 연습 뒤에, 미정답만의 복습으로 한 바퀴 더 돌면 정착이 쉽습니다.

시작 전 전제

  • DNS101 수준의 기초 지식(재귀 질의, 권위 서버, TTL)이 있으면 들어가기 쉽습니다.
  • 깊은 암호 이론은 필요 없습니다. 필요한 범위에서만 DNSSEC을 다룹니다.

참고