DNS 포이즈닝(DNS 스푸핑): 정의, 기법 및 예방
DNS 포이즈닝(DNS 스푸핑): 정의, 기법 및 예방
DNS 포이즈닝(DNS 스푸핑): 정의, 기법 및 예방
해커는 DNS 포이즈닝 공격에서 유효한 웹사이트 주소를 사칭합니다. 공격에 성공하면 비밀번호, 계정 번호 등 소중한 정보를 탈취할 수 있습니다. 혹은 단순히 스푸핑된 사이트를 로드하지 못하도록 거부할 수도 있습니다.
웹을 탐색하는 사용자는 DNS 스푸핑을 전혀 알아차리지 못할 수도 있습니다. 사이트를 방문하더라도 아무런 이상이 없어 보이고 기능도 다소 정상적으로 실행되기 때문에 모든 것이 안전하다고 생각할 수 있습니다.
혹은 즐겨 찾는 사이트가 단순히 로드되지 않는다고 생각할 수도 있습니다. 한두 차례 더 시도하다 사이트가 응답하지 않는다고 해당 회사에게 비난의 화살을 돌릴 수도 있습니다.
DNS 포이즈닝에 대한 예방은 DNS 스푸핑을 차단하는 것에서 시작됩니다. 지금부터 DNS 스푸핑을 차단하는 방법을 알려드리겠습니다.
DNS 포이즈닝에 대한 정의
DNS 포이즈닝이란 해커가 DNS에서 알려진 취약점을 조작하는 공격 기법을 말합니다. 공격이 성공하면 트래픽을 해당 사이트에서 사칭 사이트로 유도할 수 있습니다. 또한 DNS의 원리에 따라 감염이 확산될 수도 있습니다.
중국 정부는 DNS 포이즈닝을 이용해 유해하다고 판단되는 콘텐츠가 포함된 사이트에 액세스하지 못하도록 차단하고 있습니다. 따라서 중국 사용자들은 자신이 주소(https://www.facebook.com 등)를 올바르게 입력했다고 생각할 수 있습니다. 하지만 주소를 정확히 입력하더라도 스푸핑으로 인해 완전히 다른 서버로 이동하게 됩니다. 결과적으로 서버가 전혀 다른 콘텐츠를 로드합니다.
2014년에 중국의 스푸핑 공격은 더욱 광범위하게 확산되었습니다. 보도에 따르면 한때 전 세계 인터넷 사용자의 1/7 정도가 이 문제로 인해 어려움을 겪었다고 합니다. 이로 Facebook과 Twitter 등 인터넷 사이트가 마비되었습니다.
DNS의 원리
웹 개발자들은 사이트를 개발하면서 짧고 사용자 친화적인 웹 주소를 사용해달라는 요청을 많이 받습니다. 웹 주소가 짧고 사용자 친화적이면 검색 쿼리가 간편해지며 소비자들이 클릭하기 전에 어떤 페이지가 포함되어 있는지 알 수 있기 때문입니다. 하지만 다른 컴퓨터는 인간이 사용하는 주소를 이해하지 못합니다. 이때 DNS가 도움이 될 수 있습니다.
브라우저에 주소를 입력할 때마다 DNS가 다음과 같이 작동합니다.
- DNS 서버에 연결됩니다. 컴퓨터가 자세한 정보를 얻으려면 DNS 서버와 통신해야 합니다.
- DNS가 숫자 주소를 조회합니다. 컴퓨터는 숫자와 점으로 구성된 서버 주소만 이해합니다. 이전에 해당 사이트를 검색한 적이 없다면 컴퓨터가 다른 서버에게 도움을 요청하게 됩니다.
- DNS 리졸버가 쿼리를 완료합니다. 인간에게 최적화된 주소가 숫자 버전으로 전환됩니다.
- 사이트로 이동합니다. 숫자 주소가 정확하면 웹사이트를 호스팅하는 해당 서버로 이동하게 됩니다.
- 데이터가 저장됩니다. 사용하는 인터넷 서버에 DNS 서버가 생성되고, 사람이 사용하는 주소를 숫자 형태로 전환한 데이터와 함께 검색 결과가 여기에 저장됩니다.
이러한 작업은 몇 초 동안 일어나기 때문에 사용자는 지연 시간을 알아차리지 못합니다. 하지만 컴퓨터는 백그라운드에서 다음에 어디로 가서 무엇을 해야 하는지 알아내기 위해 다른 서버와 계속 통신합니다.
DNS 시스템은 1983년에 개발되었습니다. 당시 인터넷에는 웹사이트와 서버 수가 지금보다 훨씬 적었습니다. 개발자들은 누군가가 시스템을 조작하거나 사용자들에게 사기를 칠 것이라고는 상상도 하지 못했기 때문에 보안 기능이 구축되지 않았습니다.
DNS 캐시 포이즈닝 기법
사용자가 사이트 방문을 요청하면 서버가 해커의 응답을 선택합니다. 결과적으로 변조된 데이터가 저장되면서 DNS 캐시 포이즈닝이 성공적으로 완료됩니다.
해커가 이러한 공격을 시도할 수 있는 방법은 다음과 같습니다.
- 서버 위장. DNS 서버가 변환을 위한 쿼리를 제출하면 해당 서버가 응답하기 훨씬 전에 해커가 잘못된 정보로 빠르게 응답합니다.
- 서버 마비. 2008년 조사 결과, 해커들은 수천 개의 쿼리를 캐싱 서버에 전송할 수 있는 것으로 나타났습니다. 그런 다음 수천 개의 거짓 응답을 전송하고, 얼마 지나지 않아 루트 도메인을 비롯한 전체 사이트를 장악합니다.
- 열린 포트의 취약