본문 바로가기
정보보안기사&CISSP관련/Application Security

[Day 71] DNS Cache Poisoning Attack

by minimalist_2022 2020. 10. 20.

DNS Cache Poisoning Attack

  • DNS Server의 Cache정보를 조작하는 공격
  • DNS 서버는 상위  DNS  서버(최상위 root DNS Server로부터 계층 구조에 따른  DNS 서버)에 빈번하게 반복적 질의(Iterative Query)를 요청하여 부하가 발생하는 것을 막기 위해 Cache를 사용하고 TTL(Time To Live)동안 이를 유지함
  • DNS 서버 자체를 공격하기 때문에 DNS 서버의 캐시정보가 일정시간(TTL) 유지되는 동안 해당 서버에 접근하는 다수의 사용자들이 조작된 DNS 응답을 수신하여 대규모의 보안 사고가 발생할 수 있음

 

공격방식

  • 스니핑이 불가능한 상황에서 공격자는 공격대상 DNS 서버(Recursive Server)에 조작할 도메인 질의를 다수 보냄
  • 공격대상 DNS 서버가 반복적 질의를 수행하는 동안에 다수의 조작된 DNS 응답을 보냄. 스니핑이 불가능한 상황이므로 실제 Transaction ID와 출발지 Port 를 모르기 때문에 랜덤하게 조작한 Tracsaction ID와 목적지 Port를 다수 생성하여 응답함
  • 공격자의 조작된 응답 중 정상 응답보다 먼저 일치하는 응답이 있으면 조작된 주소정보가 DNS 서버의 캐시에 저장되고 이를 질의 하는 사용자는 조작된 주소의 사이트로 접속하게 됨

 

대응책

  • 도메인 관리용 DNS Server(Authoritative 네임 서버)는 재귀적 질의(Recursive Query)를 허용하지 않도록 설정
  • 제한된 사용자가 사용하는 Recursive DNS Server는 해당 사용자로 제한하여 허용(사내 DNS 서버 등)
  • DNSSEC(DNS Security Extention) 기술 활용
    • DNSSEC은 DNS를 대체하는 것이 아니라, 기존의 DNS에 공개키 암호화 방식의 보안기능을 추가 부여하여 DNS의 보안성을 대폭 강화하는 역할을 함