域名空间治理与域名协议安全的演进

段海新

摘要

域名系统(Domain Name System,DNS)是互联网重要的基础服务,它是几乎所有应用安全可靠运行的基础,可谓是互联网基础设施中的基础设施。因其独特地位,DNS也是网络攻击的重要目标。围绕域名和域名系统的经济、政治和法律问题也是近年来网络空间治理领域关注的焦点。
针对互联网治理领域比较关注的根域名服务器的治理问题,本章梳理DNS早期历史及ICANN成立之后根域名管理情况,希望籍此澄清当前对根域名治理相关的一些误解。此外,域名空间近年来扩展了国际域名(IDN)和新的顶级域名(newTLD),这也带来了一些新的问题。
域名滥用问题也是安全领域研究的重点之一。攻击者或地下产业从业者利用域名控制僵尸网络,注册欺骗性的域名实施欺诈、钓鱼等攻击,或利用域名搜索引擎污染提高黑产网站排名等。本文介绍了常见的域名滥用技术及检测方法。
就域名协议本身而言,其设计或实现漏洞导致DNS缓存污染、DNS注入、幽灵域名等攻击得以可能。作为对策,DNS协议在安全方面多有发展,包括DNSSES、DNS加密等。本文介绍了上述安全措施的制定与部署现状。

一、域名系统的重要性和严重问题

1.1 DNS提供的功能:地址解析、信任和PKI

DNS作为能实现把域名翻译成IP地址的分布式数据库,首先提供了地址解析的功能。然而,作为“互联网基础设施中的基础设施”,DNS所发挥的作用远不限于此;具体而言,DNS为应用层提供了路由、信任、甚至密钥管理的功能。
DNS所提供的应用层路由功能可以以CDN为例。我们今天所访问的热门外部网站,绝大部分都使用了CDN技术;而DNS则是CDN的基础,它帮助你找到离你最近的物理路由器。因此,错误的DNS配置可能会造成极差的上网体验。电子邮件同样应用DNS应用层路由的功能;实际上,邮件服务器正是通过DNS中的MX记录来找到真正的物理邮件服务器。
此外,DNS越来越成为信任的基础。现在主流的邮件服务提供商都支持反垃圾邮件的功能;其实现方式是,在接受邮件之前查询发送邮件的服务器所在域DNS服务器中的SPF记录,以此确认该服务器是否真的被允许以该域的名义发送邮件,未通过这一测试则该邮件可能被当作垃圾邮件处理。通过邮箱找回密码亦是对这一域名系统信任的体现。
在此基础上,DNS逐渐成为了一个重要的公钥基础设施(PKI)。就申请公钥证书而言,为了验证申请者确实拥有其所申请的域,CA会提供一个为它所签名的随机字符串;申请者将该字符串放在自己所在域DNS服务器上,CA因此能通过查询该字符串验证申请者对该域的所有权。就验证公钥证书而言,用户使用浏览器访问外部网站的时候,可以通过DNS服务器查询该网站的TLSA记录,由此验证服务器所拥有的证书是否由经过用户授权的CA签发,以此防止CA签发合法但未经用户授权的证书。

1.2 DNS协议问题和DNS攻击

DNS承载了如此丰富的功能,围绕其而产生的问题同样多而繁杂。以其所依托的UDP协议为例:由于UDP协议的无连接性,该协议非常容易被用作进行拒绝服务放大攻击;特别地,DNS具有回复包大于请求包的特点;如果伪造请求包的源IP地址,将应答包引向被攻击的目标,则受害者的网络会被虚假流量阻塞,导致拒绝服务。在2013年针对反垃圾邮件组织spamhaus的攻击事件中,攻击者就利用了世界上成百万的开放递归解析服务器,对该目标进行拒绝服务攻击。此外,考虑到DNS作为重要基础设施,其服务器本身也可能成为拒绝服务攻击的目标;2016年,美国域名服务提供商Dyn便遭到了大量拒绝服务攻击,导致很多热门的网站——如twitter——长时间无法访问。

1.3 域名滥用问题

此外,域名滥用问题也十分严重。以恶意的搜索引擎优化(Blackhat SEO)为例;我们的研究发现一些地下产业的从业者可以用少量的域名搭建一个所谓的蜘蛛池,实现搜索引擎的污染,以此把一些非法的网站推广到搜索引擎的前几页。其原理为可被理解为:事先创建站群,站群间形成链轮,并通过动态的新闻内容或超链接吸引搜索引擎蜘蛛爬取;想要推广新站点时,只需将该站点以外链形式添加,等待爬取收录即可。
域名滥用的另一种表现形式为钓鱼域名。具体地,钓鱼域名包括但不限于域名误植攻击、域名组合攻击及长域名攻击等数种形式:
1. 域名误植攻击,即Typo Squatting,指将可能的网络使用者的打字错误所作的域名抢先注册,以期在用户输错网址的时候接收其流量。误植域名可被分为如下五类 :
(1) 缺乏“.”。如由www.Southwest.comwwwSouthwest.com。
(2) 字符省略。如由Disney.com变为Diney.com。
(3) 字符错误排列。如由NYTimes.com变为NYTiems.com。
(4) 字符替换。如由DisneyWorld.com变为DidneyWorld.com。
(5) 字符插入。如由Google.com变为Googlle.com。
2.域名组合抢注,即Combo Squatting。组合抢注要求原商标域名无拼写偏差且完整无缺,并且组合抢注域名并非误植域名。如,假设商标为Example,其所注册域名为example.com,则:secure-example.com,myexample.com,及anothercoolexample-here.com是组合抢注的情况;但是,wwwexample.com和examplee.com不是,因为它们违反了前面“并非误植域名的要求 。
3.长域名攻击,即Level Squatting,指攻击者利用浏览器显示长域名时的截断伪装成合法域名,进行钓鱼攻击。如清华邮箱网址为“https://mails.tsinghua.edu.cn”,现有一钓鱼域名(如图1所示):

图1 长域名攻击实例:假冒清华邮件服务器的钓鱼网站

https://mails.tsinghua.edu.cn.locale.rebornplasticsurgery.com,其一级域名为rebornplasticsurgery.com;但浏览器可能将其显示为”https://mails.tsinghua.edu…”。用户检查该域名时,看到“mails.tsinghua.edu”部分拼写无误,且通过了https检验;在不知道此种攻击方式,未检查全域名的情况下,用户可能在此钓鱼网站中输入敏感信息,因而蒙受损失。
此外,域名劫持、恶意样本为绕过域名黑名单检测而利用域名生成算法(Domain Generation Algorithm,通常简称为DGA)所生成的域名,及新通用顶级域名(new Top Level Domain,通常简称为newTLD)所带来的抢注等,这些都是对DNS的滥用或恶意利用的体现。

二、根域名及其治理的演化

DNS的重要性及其对其进行攻击所造成的危害性,这二者结合进一步凸显了对域名解析的基石——根域名的治理的重要性。目前,全球一共有从A到M十三个根服务器,除日本和欧洲的机构各管理一个根服务器外,其余根服务器皆有位于美国的机构来管理。

2.1 DNS早期的历史

互联网成立之初并没有DNS。最早的域名和IP地址的映射是依据美国国防数据网网络中心(NIC)位于斯坦福研究院维护的一个host.txt文件得以完成的;事实上,直到现在我们的主机操作系统里还有这个文件。上世纪八十年代,被后人称为“互联网之神”的Jon Postel和他的同事设计了DNS协议,开发了第一个DNS软件,并运行了第一个根域名服务器。
随后,DNS得到了显著发展。到1985年,世界上共有四个根域名服务器;到1990年的时候扩展到了七个。在上世纪九十年代,互联网经历了爆炸性的发展,DNS的需求也随之增多。随着互联网商业化进程的开始,域名注册的管理工作从斯坦福研究院转到了一个商业公司NSI(Network Solution Inc.)。NSI对域名注册进行了收费,引发了很多冲突,这因此被后人称作“域名的战争”。
在早期DNS治理中,Jon Postel一直在负责DNS的管理,其中包括选择根域名服务器的托管组织及国家域名的分配。就选择托管组织而言,其奉行的原则是:选择内外部互联网连接联通性好,不会对根域名服务收发流量进行过滤,同时能得到互联网社区一致认可的托管组织。就国家域名分配而言,其奉行的原则是:管理员要有技术能力,且人格可信而公正。然而,人格高尚与否其实是主观指标。继续以伊拉克的国家域名分配为例:1997年,伊拉克国家域名被他分配给一家美国公司,然而这家公司其实从来没有在伊拉克推广过该域名;即,在该公司负责人2002年被捕入狱之前,”.iq”的注册和解析工作其实从来没有做过。直到2005年,新成立的伊拉克政府向ICANN申请,并在经过ICANN评估之后得到了这一域名。从这个例子中我们可以看到,其实在”.iq”域名的分配和再分配过程中,美国政府根本没有介入。实际上,互联网成立之初,美国政府对根域名的控制几乎不存在;在域名管理相关的大多数政策问题上,政府相信技术社区,而技术社区完全信任Jon Postel。

2.2 ICANN成立之后的根域名管理

1996年Jon Postel去世之后,ICANN(互联网名称与数字地址分配机构,The Internet Corporation for Assigned Names and Numbers)成立,原先负责根区管理的部门也成了ICANN的一部分。该部门向美国商务部负责,并接受美国商务部监管。
在2013年爆发斯诺登事件后,ICANN和其他重要互联网组织共同发表了《蒙得维的亚声明》。这一声明“强调了全球互联网一致运营的重要性,并警告应反对互联网在国家层面上出现的分离化。……对近期普遍出现的监督和管制对全球互联网用户的信任和信心的践踏表示由衷地担忧”。事实上,该事件加快了IANA(网络已分配号码管理组,Internet Assigned Numbers Authority)和ICANN国际化的步伐。2016年,监督权移交,根区数据的管理已经不再需要美国政府的批准。
此外,得益于2002年提出的根域名镜像技术,根域名服务器数量大规模增加;目前,全球大概有一千多个根域名服务器镜像,中国大陆至少有八个。在2015年,IETF还发布了一个新的RFC,推荐域名服务器的管理员下载根区服务器的根区文件,在本地配置一个本地的根镜像,这样可以大大降低DNS解析的延迟并减少劫持风险。
就IPv6而言,13个根域名服务器从2008年开始部署IPv6服务,现已支持IPv6访问;全球顶级的服务器顶级域有98%支持IPv6;根据谷歌的统计,世界上IPV6流量已经超过了15%。

2.3 域名空间的扩展和新问题

根域名数量扩展的同时,域名空间也进行了扩展,主要是以非ASCII字符集注册的国际化域名(Internationalized Domain Name,即IDN)。根据奇安信对2018年国际化域名的测量和分析,在1.5亿个域名中,国际域名约140万个,约占1%;国际化域名使用量最多的前四个国家是中国、日本、韩国和德国。将这些国际化域名与现有的威胁情报黑名单进行比对,发现很多国际化域名已被加入黑名单;其中以中文注册的域名被加入黑名单的比例是最高的。
国际化域名带来了被称作“同形异义”的全新威胁,这种非ASCII字符的域名在浏览器中渲染出来的视觉效果与ASCII字符域名非常相似,可能被用作钓鱼攻击。如,英语的字母“n”和俄语的字母“п”看上去几乎一摸一样,如果使用“п”代替域名中的“n”,用户可能无法识别。

图2 利用国际化域名的编码方式进行的钓鱼攻击

三、DNS协议攻击和DNS协议安全的演进

3.1 针对DNS协议的典型攻击

除了域名空间的扩展,近年来DNS协议的安全机制也发生了很大变化,用以防范现有的拒绝服务、缓存污染、链路劫持、流量注入及隐私泄露等攻击。

图3 针对DNS系统进行的攻击

缓存污染攻击在2008年有DNS研究人员Dan Kaminsky首次提出。攻击者向受害者的递归服务器发送欲攻击的域名,如果该域名不存在于该递归服务器的缓存中,则该递归服务器会向根域名服务器至所查询域名的权威服务器,进行迭代查询,攻击者同时伪造响应;由于DNS协议是无连接甚至是“抢答的”,如果攻击者返回的伪造响应匹配到了递归服务器所发出的查询请求,且先于权威服务器被递归服务器接受,则攻击便可成功实施。
上述攻击并非如想象般因随机因素过多而难以实现。可以通过查询欲攻击域名的随机子域名来保证触发递归服务器的迭代查询。虽然成功匹配请求要求伪造响应包发送至请求端口,且响应的TXID字段和该请求必须匹配;但,由于实现原因,通常情况下递归服务器的请求端口仅仅是65535个,TXID字段也只有16比特。攻击者通过查询不存在的域名消除缓存的影响,可以很快污染掉递归服务器的DNS缓存。
另一种缓存污染的方法是分片攻击。服务器和网络设备都可能对报文进行分片,只有在第一个分片中含有端口号和序列号等类似随机数的值,第二个IP分片中没有UDP的头和DNS的报文头信息。攻击者需要设法让服务器产生分片,然后构造第二个分片,让受害的服务器接受合法的第一个分片和攻击者构造的第二个分片,从而覆盖受害递归服务器中欲攻击域名的DNS缓存。2018年有研究者证实,这种攻击可以攻击许多公钥证书的签发机构CA的DNS解析服务器,从而申请一个假的公钥证书。

3.2 DNS安全协议:DNSSEC、DNS加密与EDNS

最初的DNS协议设计是没有采用任何密码机制的,DNS数据传输的保密性、完整性和可用性都没有任何保障,上面的缓存污染是数据完整性攻击的典型实例。近年来DNS协议安全最重要的措施是在DNS协议中引入密码机制。
首先是保证DNS数据完整性和源发认证的DNSSEC(域名系统安全扩展,Domain Name System Security Extensions),他允许域名所有者对DNS记录进行数字签名,以此防止未经授权的第三方修改DNS条目。这一协议诞生于1997年,已经列入互联网标准化文档(参考RFC 4033、RFC 4034、RFC 4035),是最早大规模部署的DNS安全协议,所有的根域名服务器都已经部署了DNSSEC。这一协议要求区域管理员通过使用与DNSSEC相关的资源记录类型将签名信息添加进其DNS服务器文件中,是一种对DNS协议的扩展,并不改变DNS数据包本身的传输方式。
DNS over TLS(简称DoT)和DNS over HTTPS(简称DoH)对DNS数据包进行加密后传输,二者均形成标准化文档(RFC 7858,RFC 8310,及RFC 8484等)。DoT使用TCP作为基本的连接协议,而DoH使用HTTPS和HTTP/2进行连接。DoT使用853端口,DoH则使用HTTPS标准端口443,这意味着后者能够更好地将DNS流量隐匿于其他上网流量之中。


图4 加密DNS发展历史

根据今年(2019年)对全球加密DNS进行了大规模分析和测量,整体而言DNS加密部署比例还是较少;加密DNS中DoH占比相对较高,但主要集中在几个比较大的DNS服务提供商里面,如Google的8.8.8.8。相对于DoH,奇安信在全球只检测出了大概1000到2000个DoT的服务器,并且很多服务器的证书配置是无效的。就中国而言,在全国范围内检出的DoT服务器大概不超过50个 。
尽管DNS加密技术已经形成了标准化文档,但围绕其所产生的争议仍然不小。内容服务提供商或应用服务提供商——比如google——非常喜欢DNS加密,因为籍此用户可以通过加密隧道直接访问它所提供的DNS服务,从而有效防止路径上DNS劫持导致的广告注入等。但运营商或者政府部门可能对DNS加密心存疑虑,加密通道意味着运营商流量优化措施可能失效,而对加密流量的监管未也非常困难。
根据1987年所公布的DNS协议标准RFC1035,仅仅512个字节大小的DNS数据包其实对增加功能限制颇多,现在DNS数据包的可供利用的控制位已非常有限。因此,1999年RFC2671中提出了一种扩展DNS机制(Extension Mechanisms for DNS,简称EDNS),能够更好的支持IPv6、安全等机制。尽管有很多软件支持了EDNS,但仍有一些软件——如部分防火墙——会将超过512字节的DNS数据包直接丢弃,这可能导致DNS的解析会变得辛苦而异常缓慢。为了推广新的DNS协议和促使软件更新换代,包括Google在内的很多DNS服务器提供商在近期推出了DNS flag day活动:在2019年2月1号以后,如果域名DNS服务器不能实现标准的EDNS,在上述服务提供商发送EDNS请求的时候没有响应,则上述提供商不会再做进一步尝试——这可能会导致一些域名解析失败。在下面列出的不支持DNS的前十个服务提供商中,我们可以看到,很多是来自中国的域名服务提供商 ;这意味着我们的域名服务系统和国际的最佳实践仍有一定距离。当然,部署缓慢某种程度上意味着对稳定性的保障,但考虑到DNS flag day这种活动,如果因放弃尝试而域名解析失败的话,这有可能造成互联网的隔离甚至是分裂。


图5 截至2018年10月不支持EDNS的主要DNS服务提供商

四、总结

DNS之所以重要,不仅在于其能提供域名到IP地址解析的功能,还在于其能为应用层提供路由、信任、甚至密钥管理的功能。虽然DNS相关的安全问题很多,但DNS安全技术也在不断发展。进一步地,考虑经济政治社会领域DNS治理的历史与现状,如果学术界和工业界大能共同努力,同步国际标准及最佳实现,则能共同提高互联网基础设施的内生安全能力。

段海新教授《域名空间治理与域名协议安全的演进》PPT下载