DNS 터널링이란?
도메인 이름 시스템(Domain Name System), 즉 DNS는 사람이 사용하기 편한 URL(예: paloaltonetworks.com)을 컴퓨터 친화적인 IP 주소(예: 199.167.52.137)로 변환하는 프로토콜입니다.
DNS는 인터넷에 매우 중요한, 기본 프로토콜입니다. 흔히 DNS를 "인터넷의 전화번호부"라고 하는데, 도메일 이름을 IP 주소로 매핑하기 때문입니다(프로토콜 코어 RFC에 설명된 것과 같이, 이외에도 많은 역할 수행).
DNS의 편재성으로 인해(또한, 많은 경우 철저한 조사가 부재하기 때문에) 원래 프로토콜이 의도한 범위를 넘어 통신을 주고받고 데이터를 공유하는 여러 가지 세련되고 미묘한 방법이 출현합니다. 놀랄 일도 아니지만, 사이버 범죄자는 DNS가 널리 사용되고 신뢰받는다는 사실을 잘 알기 때문에 DNS 보안 솔루션을 갖추는 것이 중요합니다.
또한 DNS는 원래 데이터 유출 용도가 아니기 때문에 많은 기업에서는 DNS 트래픽에 악성 활동이 있는지 모니터링하지 않습니다. 따라서 회사 네트워크를 노리고 DNS 기반 유형의 공격을 감행하면 효과를 거둘 수 있는 경우가 많습니다. DNS 터널링도 그런 공격 중 하나입니다.
DNS 터널링의 원리
- DNS 터널링 공격은 DNS 프로토콜을 악용해 멀웨어와 여타 데이터를 클라이언트-서버 모델을 통해 터널링합니다.
- 공격자가 badsite.com과 같이 도메인을 하나 등록합니다. 이 도메인의 이름 서버가 공격자의 서버를 가리키는데, 이 서버에 터널링 멀웨어 프로그램이 설치되어 있습니다.
- 공격자가 컴퓨터를 감염시킵니다. 이 컴퓨터가 표적 회사의 방화벽 뒤에 위치하며, 멀웨어를 포함합니다. DNS 요청은 항상 방화벽을 지나 진입하거나 나가도록 허용되므로, 감염된 컴퓨터도 DNS 리졸버(resolver)로 쿼리를 보낼 수 있습니다. DNS 리졸버란 IP 주소 요청을 루트 및 최상위 도메인 서버로 전달하는 서버를 말합니다.
- DNS 리졸버가 쿼리를 터널링 프로그램이 설치되어 있는 공격자의 C2(Command-and Control) 서버로 라우팅합니다. 이렇게 하면 DNS 리졸버를 통해 피해자와 공격자 사이에 연결이 설정됩니다. 이 터널을 사용해 데이터를 빼낼 수도 있고, 다른 악성 용도로 활용할 수도 있습니다. 공격자와 피해자 사이가 직접적으로 연결된 것이 아니기 때문에, 공격자의 컴퓨터를 추적하기 어렵습니다.
DNS 터널링은 출현한 지 20년이 다 되어 갑니다. Morto와 Feederbot은 둘 다 DNS 터널링에 사용된 멀웨어입니다. 최근 일어난 터널링 공격으로는 위협 그룹 DarkHydrus 사례를 예로 들 수 있습니다. 이 그룹은 지난 2018년 중동 몇몇 국가의 정부 기관을 노렸으며, 2016년부터 활동해 왔고 지금도 건재한 OilRig도 터널링 공격을 애용합니다.
DNS 터널링 예방
DNS는 거의 어디서나 사용하는 강력한 도구입니다. 애플리케이션과 시스템이 상호작용을 주고받을 리소스와 서비스를 검색할 수 있게 해주기 때문입니다. DNS는 통신의 기초 토대를 제공하여 더 높은 수준의 고성능 프로토콜이 제 기능을 하도록 돕지만, 보안 관점에서는 간과될 수 있습니다. 특히 이메일 프로토콜을 통해 전달되거나, HTTP를 사용해 웹에서 다운로드하는 멀웨어가 얼마나 많은지 감안하면 더욱 중요한 사안입니다.
그래서 DNS는 항상 열려 있고, 간과되기 쉽고 과소평가된 프로토콜을 찾아 침해된 호스트와 통신을 주고받는 데 활용하려 대상을 물색하는 공격자에게 완벽한 표적입니다.
기업에서 DNS 터널링에 맞서 자사를 방어하는 방법은 여러 가지가 있습니다. Palo Alto Networks 네트워크 보안 플랫폼을 이용할 수도 있고, 오픈소스 기술을 활용해도 됩니다. 여러 가지 형태의 방어가 존재할 수 있습니다. 그중 다음과 같은 예를 들 수 있으며, 이에 국한하는 것은 아닙니다.
- 알려진 평판이나 인식된 위험을 근거로 도메인 이름(또는 IP나 지리적 위치) 차단.
- "의심스러워 보이는" DNS 쿼리 문자열에 관한 규칙.
- 아웃바운드, 인바운드 DNS 쿼리의 길이, 유형이나 크기에 관한 규칙.
- 고객 운영 체제의 전반적인 강화 및 이름 분석 기능과 각각의 구체적 검색 순서 파악.
- 이상을 자동으로 감지하는 사용자 및/또는 시스템 동작 분석, 예를 들어 특히 액세스 방법과 빈도가 이상할 때를 위주로 새로운 도메인에 액세스하는 경우 분석.
- Palo Alto Networks에서는 최근 악성 도메인 이름에 대한 액세스를 차단하는 데 주력하는 DNS Security 서비스를 선보였습니다.
DNS 보안 모범 사례
- 보안 스태프 교육 및 연수
보안 교육과 인식 프로그램을 시행해 스태프가 악성 위협을 알아볼 수 있도록 교육합니다. 링크를 클릭할 때 각별히 주의해 멀웨어 설치를 피하도록 독려합니다. 피싱 교육을 통해 이메일 기반 공격을 인식, 회피, 신고하는 방법을 배울 수 있습니다.
- 위협 인텔리전스 프로그램 구현
위협 현황을 이해하고 위협 인텔리전스 프로그램을 설치해 공격자가 요즘 사용하는 여러 가지 유형의 위협과 기법을 셋업하도록 합니다. 이러한 지식을 갖추면 네트워크를 안전하게 유지하는 데 도움이 되는 기술 스택을 확보할 수 있습니다.
- DNS 데이터로 알 수 있는 정보 획득
DNS 트래픽을 단순히 관찰만 해서는 안됩니다. DNS 데이터 로그는 사용자가 무엇을 보고 있는지 모르면 아무런 가치가 없는 것이나 마찬가지입니다. 데이터를 이해해야 조직을 처음 출현하는 DNS 레이어 위협으로부터 무사히 보호할 수 있습니다.
- DNS 리졸버 지연 방지
DNS 서버가 손상되면 트래픽을 다른 손상된 시스템으로 유도하거나 중간자 공격(Man-in-the-middle attack)을 지원하는 허위 응답이 제공될 수 있습니다.
- 원격 근무 리스크 대비 계획
원격 인력이 회사 데이터를 위험하게 할 수 있으므로 적절한 전략을 세워야 합니다. 안전하지 않은 무료 또는 공개 Wi-Fi를 사용하면 안 된다고 경고하세요. 이런 네트워크를 사용하면 공격자가 직원과 연결 지점 사이에 끼어들기 쉽습니다. 다단계 인증을 통합하고, 디바이스를 분실하거나 도둑맞을 경우 리스크에 대비합니다.
- 네트워크 보안에 전체론적으로 접근
네트워크 보안에 전체론적 접근 방식을 취하고, 네트워크 내부에 존재하는 다양한 위협 벡터에 대응할 수 있고 보안 스택 전체에 간편하게 통합할 수 있는 적절한 기능을 확보해야 합니다. 공급업체 솔루션을 평가할 때는 개념 증명(PoC)에 따라 직접 비교하는 것이 중요합니다. 모든 환경은 다르고 DNS 계층 보안에 대한 독립적인 공급업체 중립적 테스트가 아직 확립되지 않았습니다.
- 알림뿐만 아니라 대응까지 자동화
조직을 무사히 보호하려면 알림만이 아니라 대응도 자동화해야 합니다. 위협을 수행하는 속도가 너무 빨라 알림과 신호가 소용이 없을 수도 있습니다. 위협이 식별된 순간, 이미 너무 늦었을 수도 있다는 것입니다. 보안 팀은 더 큰 피해가 발생하기 전에 자동으로 위협을 파악하고 부분 감염되었을 가능성이 있는 시스템을 격리할 수 있어야 합니다. 귀사 조직이 모범 사례를 잘 따르고 Palo Alto Networks의 DNS Security 서비스를 최적화하려면 BPA(Best Practice Assessment)를 해보세요.
기업에 불리하게 DNS를 이용하는 공격자를 어떻게 차단해야 할까요? 백서를 통해 DNS 공격 차단 방법을 알아보세요.