用DNS进行网络度量和安全分析

背景
今天为大家推荐由360网络安全研究院-安全分析资深专家分享的议题《用DNS进行网络度量和安全分析》,本课题简要阐述了DNS协议的历史和发展现状,在此基础上,结合360网络安全研究院的多年分析DNS数据的经验,介绍了我们利用DNS数据做过的一些关于大网方面的度量,并结合公司多维度的海量数据做的安全分析方面的一些工作 。


1
DNS概述
DNS协议对互联网的从业者来说并不陌生,它是互联网的最古老也是最基础和最核心的协议之一 。简单来说的话,它最主要的功能是完成域名和IP地址的映射,即互联网的电话簿 。
但DNS协议能够完成的功能远远不止于完成域名和IP地址的映射,很多现代互联网的基础业务都要基于DNS协议才能够完成,可以认为跟域名相关的业务几乎都和DNS协议有关 。根据dns-camel项目[1]统计,截止到2019年6月,共有150篇标准,建议,最佳实践方面的RFC,共有2637页,非常庞杂的内容 。所以DNS协议实际的复杂度超出了大多数人对其的理解 。
下图显示了DNS协议相关的RFC页数从1984年到2019年的变化量,可以看到从1996年开始,几乎以每四年500页的速度在稳定增加 。

用DNS进行网络度量和安全分析

文章插图
也正因为如此基础和复杂,几乎所有的互联网业务都会在DNS数据中留下痕迹 。使用了DNS服务的恶意行为也不例外,对DNS数据进行安全分析,可以涵盖绝大多数的恶意行为 。
本文从使用DNS数据角度来介绍一下可以做的事情 。主要是两大类,分别为网络(业务的)度量和安全分析 。


2
网络度量


DNS劫持情况
同大多数早期的互联网协议类似,DNS协议在设计之初是以明文形式传输,支持TCP和UDP两种传输协议,并且在实际使用过程中传输协议主要以UDP为主 。
所以到现在,大多数的DNS请求和应答仍然是基于UDP协议的明文形式进行传输,因此DNS劫持是DNS在实际环境中非常普遍的问题,为了对这个问题有个精确的度量 。清华大学网络科学与网络空间研究院和360公司合作,对全球范围内的DNS劫持情况做了一个定量的度量 。测量方案通过请求随机化子域名(避免缓存服务器对请求域名的缓存)在不同的公共DNS服务器,从不同的请求类型,顶级域以及协议等维度的方式来探测DNS劫持的情况 。
用DNS进行网络度量和安全分析

文章插图
测量结果表明:
1. 基于UDP的DNS数据包更容易遭到劫持 。
2. A类型(IPv4地址)的DNS请求比其他类型稍高 。
3. 全球的8.5%的自治域存在DNS劫持,其中包括像中国移动这种较大的ISP 。
4. 推测DNS劫持的主要目的是为了减少财务结算和提高DNS相应的性能 。
具体的测量详细过程和完整结果参见这里[2] 。
小贴士:DNS加密传输的进展
为了解决DNS明文传输所引起的问题,相应的解决方案最近几年在业界已经积极的推动起来了,客户端方面来看,有更好安全意识的浏览器厂商(Firefox,Chrome,360浏览器等)和操作系统厂商(包括windows和macOS)逐步开始支持DoT/DoH;在服务器方面包括360安全DNS[3]在内的公共DNS服务提供商都开始DoT/DoH服务,有条件的用户可以尝试一下,应该可以极大的缓解由于DNS劫持所引起的安全风险 。


用DNS数据来度量NTP pool的使用情况
NTP pool成立于2003年,是由志愿者提供的联网计算机组成的动态虚拟群集,可向全球数百万个系统提供高度准确的时间同步服务 。它是大多数主要Linux发行版和许多联网设备的默认时间服务器 。
由于它的特殊工作方式,在PDNS(参见下面的小贴士)中,它的域名和IP的映射关系在一定程度上是随机的,特别像之前非常流行的僵尸网络躲避攻击检测和防封堵使用的Fastflux[4] 。
为了摸清楚NTP pool的实际工作情况,我们通过DNS数据对NTP pool做了一次度量 。
主要有如下发现:
1. 服务器方面
  • NTP pool服务器在4000左右,其中IPv6的占比在25%,IPv4占75% 。
  • NTP pool服务器遍布全球97个国家,不过主要集中在美、德、法、英、荷、加等发达国家 。
  • 国内的服务器只占总服务器个数的2%,并且主要集中在香港,台湾,广东和北京等这些经济较为发达的地区 。
2. 子域名方面: