通过域名服务器攻击域名

今天分享一篇发布在今年CCS会议上的、与域名相关的一篇论文,题目是《The Wolf of Name Street:
Hijacking Domains Through Their Nameservers》,DOI信息在这里

摘要

所有域名的功能实现和安全都依赖于它们的域名服务器。当这些服务器(或仅仅是发至服务器的请求)受到危害时,依赖它们的域名也会受到影响。这篇论文主要研究了存在于配置错误(如误植域名、过期的WHOIS记录)与硬件错误(位错误,bitsquatting)的漏洞,以取得域名服务器的控制权,并劫持域名。文中对10000个受欢迎的域名服务器进行了分析,并确认了这类攻击的可能性。总体上,超过12000个域名易受到立刻产生影响的感染,52.8M的域名返回异常的IP地址,从而易受域名服务器位错误的影响。此外,1.28M的域名易通过过期域名服务器而受到拒绝服务攻击。

背景简介

DNS(Domain Name System,域名解析服务)是当今Internet的最重要协议之一,它将人类易于记忆的域名转换为机器可路由查找的IP地址。即使新的顶级域名(Top-Level Domain,TLD)不断加入,传统的短小通用的顶级域名仍被高价出售。从安全的角度考虑,域名及其所有权,被用户以及应用程序明确地、绝对地信赖着。

近几年,研究者已经发现,攻击者会注册已经过期的域名,以获取用户对这些域名残留的信任。某些情况下,攻击者甚至不需要等到这些域名过期就可以实施攻击。除了偷取域名所有者的账号与密码之外,研究者还发现,在适当的条件下,攻击者能够通过滥用悬空链接劫持存活的域名(本博客介绍过相关研究成果,参考这里)。

针对域名服务器进行攻击,可以大幅提高攻击者成功的可能性。进一步说,针对域名服务器的攻击效率非常高,因为一次攻击可以影响以其为基础的多个域名。

问题阐述

域名服务器请求劫持

当客户端想要访问一个确定的域名时,这个域名首先被解析为一个IP地址。这个解析过程,一般被一个递归解释器处理,它会首先确认根域名服务器与顶级域名服务器,最后从二级域名服务器获取到IP地址。在这篇文章的研究工作中,作者发现有多种技术可以令敌手获取二级域名服务器的控制。因为实际上任意一种类型的线上应用程序都在使用DNS,但大多数又没有感觉到,所以这些漏洞大范围存在。

以下部分介绍攻击方法的梗概。请注意,在下面的概述中,只考虑攻击者对抗常用软件的情况,因此不可能做到全面。

  • 中间人(Man-in-the-Middle,MITM)。当攻击者控制一台域名的人在域名服务器之后,需要连接受害域名的客户端会将A记录的查询请求发至攻击者的域名服务器。通过回复攻击者控制服务器的IP地址,攻击者可以重新设置(并且有可能改变)客户端与其想要连接服务器的通信。这种攻击产生的后果依赖于被影响的服务。

  • 域名所有权验证(Domain-ownership verification)。在中间人攻击中,攻击者能够实施破坏的时期取决于他控制域名服务器的时间长度。除了这种攻击之外,攻击者还可以采取一些持续时间更长的攻击行为。一些类似的行为与域名所有权验证有关。更明确地说,一些服务需要(网站)管理员认证他事实上控制这个域名,如在指定位置随机生成一个文件进行确认。对于许多认证机构,包括Let’s Encrypt,这个方法是唯一的验证手段。这意味着只要临时控制一个域名的域名服务器,敌手就可以获得一个有效期长达数年的认证。此外,因为这个认证请求是由攻击者申请的,域名所有者不能获取到私钥,因此不能抵抗这个认证。除了SSL认证以外,还有许多服务提供更为持久的敏感服务。例如谷歌的Webmaster工具,对域名所有者给予额外的功能,如从搜索结果中移除特定页面等。

  • 电子邮件。除了上面提到的攻击,攻击者也可以攻击其他类型的DNS记录。例如通过返回虚假的MX记录,敌手可以拦截发至某个域名的电子邮件。通过精心选择TXT记录,他可以模仿该域名发出电子邮件,甚至在SPF、DKIM与DMARC记录都被验证的安全状态下。

研究领域

为评估通过攻击域名服务器来劫持域名的风险,文中选择了常见的二级域名服务器。确切地说,文中分析了前10000个受欢迎的二级域名服务器,它们承担了最大数量的域名验证服务。为决定出这10000个二级域名服务器,文中分析了前5个通用顶级域名服务器(gTLD)的区域文件(zonefile),它们是com,net,org,xyz和info。在区域文件中的每个域名,文章找出它们的NS记录。总体上,文中的工作分析了164M个域名信息。

之后,文章获取了每个域名服务器的域名(nameserver domain,下文简称NSDOM)。例如,在NS记录表中的ns2.dnspod.net,得到的域名是dnspod.net。之后确定出有最多NS记录指向的NSDOM。最后,选择了10000个NSDOM作为分析的起点。

域名服务器依赖

本研究的一个重要部分是存在于域名服务器之间的依赖。当一个NSDOM自己的NS记录在辖区内(in-bailiwick)时,我们称它是独立的。如hichina.com的NS记录是ns1.hichina.com。这时,顶级域名服务器会直接给出IP地址(叫做glue record)。相反,当NSDOM自己的NS记录在辖区外(out-of-bailiwick)时,称它是不独立的。例如,在查询ns1.hostgator.sg时,发现这个域名服务器的NS记录指向的是dynect.net下的主机。也就是说,ns1.hostgator.sg完全依赖于另一个二级域名服务器,依赖在ns1.hostgator.sg上面的域名也是如此。

这样的依赖很常见。事实上,在前10000个NSDOM中,有34.4%依赖至少一个辖区外的域名服务器。文中找到了一些辖区外的域名服务器,它们依赖的又是辖区外的域名服务器,紧接也如此。文中将其称为域名服务器依赖链(nameserver dependency chains)。如果在链中的一台域名服务器受到攻击,它之下的其他域名服务器也会受到影响。攻击者因此具有控制依赖于这台服务器的全部域名服务器的可能性。

域名服务器的误植域名

攻击模型

误植域名是对于权威域名的拼写错误。攻击者注册这些域名,企图在用户错误拼写域名时进行攻击。例如,一个误植域名攻击者注册域名twittre.com,企图分享twitter.com的大量流量。

误植域名已经被大量分析,但仅局限于用户在浏览器中产生的拼写错误。在这篇文章中,作者提出了一种未被大量分析的现象:域名服务器误植域名(nameserver typosquatting)。概述为管理员在进行DNS配置时输错了NS记录,通过Web页面或注册商提供的API进行配置时经常出现此类错误。例如,polishop.com是巴西一家著名的网上商城,它有一个错误配置的NS记录。其记录原本应为ns-566.awsdns-06.net,但配置时错将net输成了ne。虽然这个记录是错误的,但域名仍然是有效域名。因为存在冗余的域名服务器,管理员通常不会注意到这类错误。

流量影响

在传统的误植域名中,仅在访问者错误输入域名时产生影响。也就是说,这类错误仅影响访问者一次。相反来说,域名服务器的误植域名造成的影响,能够一直持续到错误被纠正。因此,很难估计攻击者成功利用这个漏洞后产生的流量影响。但可以看出,相比传统误植域名,域名服务器误植域名造成的流量影响要严重得多。

域名服务器位错误

文中介绍的第二种攻击叫做域名服务器位错误(nameserver bitsquatting)。它与上面的误植域名类似,但不是人为产生的错误,而是硬件的机能失常。

攻击模型

位错误是由设备或计算机的内存产生的随机位翻转(bit-flip)导致的。位翻转主要由硬件错误导致,例如温度、射线影响,是难以预测的。然而,位翻转是一种有文献证明的现象,许多已出版的研究成果报告了它的影响、原因。在DRAM中,位错误通常可由错误校验码(Error Correcting Codes,ECCs)进行纠正。即使这些技术比较普遍,在消费级产品中(甚至商业级产品,如NIC或硬盘等)中,这些技术仍然经常不被使用。

如果位翻转影响了内存中存储的域名,那么就很容易导致错误的域名访问。例如,位翻转可能将twitter.com变成twitte2.com,因为字符“2”的二进制ASCII码是00110010,而“r”是01110010,仅需产生一位翻转。VeriSign的研究显示,大约每$10^7$至$10^8$次DNS查询中,就有一次出现这样的位翻转错误。

文章主要讨论了发至域名服务器的DNS请求出现的位翻转。因为NSDOM在域名解析中相较普通域名出现次数较多,因此在统计上更易出现错误。

流量影响

早期的研究主要针对于Web服务器的域名位翻转,但NSDOM位翻转产生的影响更大,因为其影响的不仅是一个域名。首先来说,NSDOM通常被多个域名共享,因此会产生更多的查询量,由此会加大位翻转出现的可能性;其次,NSDOM的错误会影响该服务器托管的所有域名。

结语

这篇文章着眼点较大,将DNS攻击点放在了服务器上。同时,也引入了位翻转这一有些“异想天开”但又确实存在的攻击方式,值得学习。对于位翻转的研究,也说明了科研过程是需要想象力与证实想象的魄力。