DNS 스푸핑(DNS spoofing) 또는 DNS 캐시 포이즈닝(DNS cache poisoning)은 컴퓨터 보안 해킹의 일종이며, 변질된 도메인 네임 시스템 데이터가 DNS 리졸버(DNS resolver)의 캐시에 유입되어 네임 서버가 유효하지 않은 결과 레코드(예: IP 주소)를 반환한다. 이를 통해 공격자의 컴퓨터(또는 다른 컴퓨터)로 공격 우회를 할 수 있다.

도메인 네임 시스템 개요 편집

도메인 네임 시스템 서버가 사람이 읽을 수 있는 도메인 네임(예: Example.com)을 노드 간 통신 라우팅에 사용되는 숫자 IP 주소로 변환한다. 일반적으로는 서버가 요청 변환을 인지하지 못하는 경우 다른 서버에 질의하여 프로세스를 재귀적으로 계속한다. 성능 개선을 위해 서버는 일반적으로 특정 시간 동안 이러한 변환을 캐시 처리한다. 즉, 같은 변환을 위한 다른 요청을 받으면 캐시 만기가 도래하기 전까지는 다른 모든 서버에 일일이 질의할 필요 없이 응답할 수 있다.

DNS 서버가 성능 최적화를 위해 잘못된 변환과 캐시를 받으면 이는 중독(poisoned)된 것으로 간주되며 유효하지 않은 데이터를 클라이언트에 제공된다. DNS 서버가 중독된 경우 유효하지 않은 IP 주소를 반환할 수 있으며 트래픽을 다른 컴퓨터(종종 공격자의 컴퓨터)로 우회시킬 수 있다.[1]

공격 원리 편집

사용자의 컴퓨터는 보통 컴퓨터가 사용하는 IP 주소 대신 사람들이 쓰기 편한 문자로 구성되어 있는 URL주소를 사용한다. 하지만 컴퓨터는 URL주소를 바로 인식할 수 없기 때문에, 사용자로부터 URL주소를 입력을 받으면 등록된 도메인 네임 시스템의 주소로 UDP프로토콜을 이용하여 질의를 보낸다.

중간자 공격을 이용한 공격 편집

이때 중간자 공격을 받고 있는 경우에는 사용자의 컴퓨터가 보내는 질의의 내용을 수정하여 도메인 네임 시스템 서버에 전송하고, 도메인 네임 시스템 서버는 변경된 질의에 대한 답을 사용자의 컴퓨터로 보내고, 사용자의 컴퓨터는 질의에 나와 있는 IP 주소를 이용하여 접속을 하게 된다. 이때 이미 질의가 중간자 공격으로 인해 원래의 값이 아니기 때문에 의도치 않은 곳으로 접속될 수 있다.

사용자의 컴퓨터에 저장된 도메인 네임 시스템 주소가 변조되어있을 경우의 공격 편집

만약 사용자의 컴퓨터에 등록되어 있는 도메인 네임 시스템IP 주소가 다른 요인으로 인해 이미 변경되어 있을 경우, 사용자의 컴퓨터가 제대로 된 질의를 보내도 이미 공격자가 지정한 서버에 질의를 보내게 되므로 의도치 않은 곳으로 접속될 가능성이 있다.

방어 방법 편집

중간자 공격의 경우 편집

도메인 네임 시스템 주소 변조의 경우 편집

변조되어 있는 주소를 신뢰할 수 있는 도메인 네임 시스템의 주소로 바꿔준다.

같이 보기 편집

각주 편집

  1. Son, Sooel; Shmatikov, Vitaly. “The Hitchhiker’s Guide to DNS Cache Poisoning” (PDF). 코넬 대학교. 2017년 4월 3일에 확인함.