Sea Turtle, 고도의 DNS hijacking과 MItM attack

DNS 하이재킹

DNS(Domain Name System)는 사용자가 입력한 사이트로의 인터넷 트래픽을, 실제 그 사이트의 서버로 인도하는 주소록 같은 것이다. 이와 관련된 데이터를 DNS record(DNS 정보)라 하는데, 여러 단계의 계층 구조로 관리된다.

이러한 체계를 해킹하면 사용자가 원한 사이트가 아닌 악의적인 사이트로 도달하게 할 수 있다. 이것을 DNS hijacking이라 한다. DNS 하이재킹은 인터넷의 근간을 흔드는 심각한 사안이다.

가짜 사이트로 유도한다는 점에서 피싱(phishing)과 비슷한 면도 있다. 다만 피싱은 주소 바와 SSL 인증서를 잘 살피면 알아챌 수 있다. 그러나 DNS hijacking은 주소 바에 정확하게 정상인 것처럼 보인다. 인증서를 가장하거나 탈취하면, 인증서 오류도 나타나지 않는다. 눈치 채기가 아주 어렵다.

DNS 상부 체계에 대한 공격

DNS hijacking은 새로운 수법은 아니다. PC나 공유기, 기업이나 통신사의 라우터에 악성코드를 심어 DNS 관련 설정을 변경하는 사례는 많다. 이런 것은 DNS 체계의 하층부에 대한 공격이라 할 수 있다.

그런데 근래 DNS의 상층부, 핵심적인 부분에 대한 공격이 늘고 있다. 물론 이것은 아무나 할 수 있는 것은 아니고, 국가 차원의 지원을 받는 해커단의 소행이다. 1월에는 미국이 DNS hijacking에 관해 긴급 경보를 발표하기도 했다.

Cisco Talos의 보안팀은 2017년부터 2019년 1분기까지 진행된 고도의 DNS 하이재킹 작전을 발견했다. 13개 국가, 40개 이상의 조직이 희생됐다. 이를 Sea Turtle operation이라고 이름붙였고, 4.17일 상세한 보고서를 발표했다.

주 표적은 국가 기관

바다 거북 작전은 주로 중동과 북아프리카를 겨냥해 이뤄졌다. 그리고 주된 표적은 첩보, 군사, 외교 등을 담당하는 국가 기관과 에너지 기업이었다. 이들에 종사하는 사람들의 각종 credential(자격증명 즉 로그인 정보나 인증 쿠키 등)을 탈취하여 기밀 정보에 접근하는 것이 최종 목적이었다.

주요 표적에 접근하기 위한 수단으로, DNS 관련 업무를 수행하는 조직들이 부차적인 표적이 됐다. 통신사, 인터넷 서비스 회사, IT 기업, DNS Registrar, DNS Registry 등이 그것이다.

DNS Registry를 해킹한 최초의 사례

DNS record는 여러 경로를 통해 접근할 수 있다. 바다 거북 작전의 핵심은, 표적이 된 조직에 대한 DNS 정보를 조작해 해커의 DNS 서버로 설정하여, 결과적으로 해당 사이트 이용자를 중간자 공격용 서버로 유도하는 것이다.

우선 표적 조직의 네트워크 관리자의 자격증명을 탈취했다. 어떤 조직이 도메인을 등록할 때는 registrar를 통해야 한다. 레지스트라는 흔히 도메인 등록 대행업체로 불리는데, 도메인을 판매하고 그 DNS 정보를 관리하는 일을 한다. 가비아가 그 예다. 네트워크 관리자의 계정을 해킹하면, 그 권한으로 레지스트라를 통해 DNS 정보를 맘대로 수정할 수 있다.

registrar를 해킹하기도 했다. 레지스트라는 EPP라는 프로토콜을 이용해 registry의 프로그램에 접속하여 DNS 정보를 관리한다. 따라서 EPP에 사용되는 key를 탈취하면, 그 레지스트라가 관리하는 모든 도메인의 DNS 정보를 수정할 수 있다.

registry를 해킹한 경우도 있었다. 레지스트리는 최상위 도메인(TLD, Top-Level Domain)을 관리하는 고급 조직이다. TLD에는 ccTLD(country code TLD)와 gTLD(general TLD)가 있다. gTLD의 대표적인 예는 .com으로 VeriSign이 레지스트리다. ccTLD의 예는 .kr로 KISA가 레지스트리다.

바다 거북 작전에서는 Netnod라는 레지스트리가 해킹됐는데, 레지스트리가 해킹된 것은 이번이 처음이다. 넷노드는 또한 DNS 루트 서버를 관리하는 12개 조직의 하나로, 사우디의 국가 도메인도 관리하므로, .sa 사이트들과 방문자들은 모두 잠재적으로 위험에 노출됐다.

TLD들은 13개의 그룹으로 통합되어 12개의 조직에서 관리하고 있다. 이 데이터를 저장하는 곳을 DNS root server라고 한다. DNS의 핵심부에 해당한다. DNS 루트 서버는 계속 늘어나게 돼 있는데, 4.25일 기준으로 13개 서버군, 980대의 서버로 이루어져 있다. 세계 각국에 흩어져 있다.

DNS root server를 직접 해킹하는 것도 가능한 시나리오 중의 하나다. 그러나 아직까지 루트 서버가 해킹된 기록은 없다고 탈로스 팀은 강조했다.

시작은 흔한 수법

주요 표적에 대한 공격이든 부차적 표적에 대한 공격이든, 그 시작은 일반적인 해킹 사건과 다를 바 없었다. 스피어 피싱과 취약점 이용이 그것이다. 취약점 중에는 CVE-2009-1151처럼 10년 가까이 된 것도 있었고, CVE-2018-7600 일명 드루팔겟돈이라 불리는 근래 핫한 것도 있었다.

직원 교육이나 시스템 패치 같은 기본적인 사항의 준수가 얼마나 중요한지 새삼 알려준다.

가장된 인증서로 중간자 공격

이상의 방법으로 표적의 DNS 정보를 조작해, 해당 사이트로의 트래픽을 해커의 서버로 유도했다. 해커의 서버는 중간자 공격(MItM, Man-In-the-Middle attack)의 도구로 사용됐다. [방문자 - 진짜 페이지]로 이어져야 할 구조를 [방문자 - MItM framework - 진짜 페이지]의 구조로 바꾼 것이다.

DNS 정보를 조작했기 때문에, 중간자 공격용 서버는 방문자에게 전혀 보이지 않는다. 주소 바에도 진짜 페이지 주소로 정확히 표시된다. 다만 이대로는 SSL 인증서가 없기 때문에 자물쇠 아이콘이 표시되지 않는다.

이 문제는 certificate impersonation 수법으로 해결했다. 예를 들어 진짜 사이트가 VeriSign의 인증서로 보증된다면, 해커는 MItM 서버에 동일한 도메인 용으로 Comodo의 인증서를 발급받아 설치하는 것이다. 이렇게 하면 자물쇠 아이콘까지 표시된다. 이 작전에서는 Let's Encrypts, Comodo, Sectigo의 인증서가 동원됐다.

해커의 MItM 서버 즉 가짜 페이지에 입력한 로그인 정보는 고스란히 해커의 수중에 들어간다. 해커는 이를 이용해 표적의 각종 데이터를 빼내갈 수 있다. 크리덴셜을 탈취한 후에는, 정상 페이지로 이동시켜 피해자가 눈치채지 못한다. 약간의 시간 지연이 있을 뿐이다.

인증서 탈취

일단 표적의 내부 네트워크에 침투한 후에는, SSL 인증서 자체를 훔쳐내서 중간자 공격에 이용했다. 이로써 좀더 광범위한 자격증명을 탈취했다. 또한 VPN 접근 권한도 탈취해서 VPN 앱으로 가장하기도 했다. 이때는 자체 서명 인증서를 사용했다.

2단계 인증으로 방어

탈로스 팀은 이런 공격을 방어하기 위해, registrar가 제공하는 registry lock 서비스를 이용하라고 권고했다. 그리고 DNS 정보에 접근하기 위해서는 2단계 인증을 거치도록 하라고 했다.

사용자를 위해 덧붙이자면, SSL 인증서를 잘 살피는 것이 중요하다. 자물쇠나 녹색 표시만으로는 안전을 보장하지 않는다. 인증서 발급 대상과 사이트 주소가 일치하는지, 인증서가 어떤 오류 경고를 나타내지 않는지 확인한다. 물론 바다 거북 작전 같은 고도의 해킹에는 소용이 없을 수도 있지만, 이런 경우는 흔한 것이 아니다.


관련 자료
  1. 미국은 DNS 하이재킹으로 비상
  2. 공유기 해킹하여 DNS 하이재킹하는 Roaming Mantis 악성코드

참고 자료

댓글

이 블로그의 인기 게시물

엑셀 필터 상태에서 복사와 잘라내기

가정에서도 망 분리를 해보자

잉크젯 프린터 전원은 항상 켜 놓아야 좋다