Detecting DNS Root Manipulation

Abstract

我们提出了一些技术,主要使用RIPE Atlas提供的基于终结点的度量来检测Internet中未经授权的DNS根服务器,并辅以RouteViews和RIPE RIS的BGP路由通告。 第一种方法分析到根服务器的延迟,第二种方法查找路由劫持。 我们通过测量使用anycast且没有广泛分布的唯一根服务器(“B”)来证明这些技术的重要性和有效性。 我们的测量确定了多个DNS代理和DNS根镜像的存在。

1 Introduction

许多形式的Internet通信的完整性和可用性取决于DNS根名称服务器的答复。 运行未经授权的根服务器的实体可以完全控制其范围内任何系统的整个Internet名称空间,包括通过破坏其名称解析来阻止对站点的访问,或者通过中间人代理进行重定向来任意干预通信。 在本文中,我们提出了一些评估未经授权的根服务器的普遍性的技术。

我们开发了各种技术来检测客户端无法将查询定向到授权DNS根服务器的几种情况。 不管是否返回正确的DNS结果,我们都将这种现象称为DNS根操作,因为此类服务器可以提供敌意的响应。 中国[3],巴基斯坦[12,18]和土耳其[1]等国家已经在通过DNS实施审查制度,有时会偶然影响其他国家的DNS解析[2,8]。 我们对类似的情况感兴趣,在这种情况下,攻击者可以控制DNS数据包的发送位置,从而阻止对根的访问。 考虑到这种威胁的规模,我们将重点放在操纵所有DNS根服务器副本的攻击者上,而不是只破坏其中一部分的攻击者上。

如今部署的DNS根目录包含由12个组织运行的13个服务器地址,称为a.root-servers.net … m.root-servers.net。 DNS解析器将这13个逻辑上不同的实体的IP地址硬连接到其配置中,成为DNS解析基础。 除了其中一台服务器以外,所有服务器都使用任播功能将相应的IP地址路由到Internet上的多台服务器。 每个任意广播的根服务器在拓扑上不同的副本的数量范围从两个(h.root-servers.net)到150个(l.root-servers.net)。

威胁模型。 图1说明了攻击者可以实施DNS根操作的三种方式。 尽管某些恶意软件直接在终端系统上控制了DNS查找[10],但该方法可能会带来难以扩展的扩展问题,难以以广泛的方式进行。 在本文中,我们专注于基于网络的操作。 第一种方法插入中间盒以拦截绑定到根服务器的DNS通信。 对于较小的网络,透明代理通过缓存查询来实现控制以及潜在的性能改进。 透明代理易于实现,因为DNS通过无连接的UDP操作。 因此,代理不需要广泛的状态。 其次,攻击者可能会观察DNS请求并在合法响应返回之前注入响应。 最后,攻击者可以破坏IP路由,将DNS根服务器的流量重定向到错误的根副本,这类似于用于合法根副本的任播技术。

在这三种情况下,攻击者均可控制DNS响应,从而对DNS进行完全控制。 由于对根服务器的查询操控所需的规模和复杂性,我们假设寻求颠覆DNS根服务器的实体将在所有13个逻辑服务器中这样做以获得明确的控制。 此外,我们的技术假设路径内设备不会选择性地选择要操控的DNS请求???

方法。 如第3节所述。我们的方法通过检查因放置基础设施来处理DNS根查找而引入的副作用,来识别一些未授权的根服务器。具体地说,我们研究了从Internet周围的各个点到一个非anycasted根服务器b.root-servers.net的延迟和路由,在没有未经授权的操作的情况下,这应该反映了它在美国洛杉矶的独特位置。 我们使用大约8,000个节点的RIPE Atlas [23]测量平台进行大规模测量。 我们使用来自RouteViews [26]和RIPE RIS [22]的BGP路由表快照来补充我们的主动探测。

我们开发的方法,广泛撒网,并通过查找DNS根操纵的几个实例证明其有效性。 我们发现一个ISP将IP层上的客户端重定向到未经授权的根副本。 此外,我们发现一些ISP通过在DNS查找中插入代理来阻止直接访问授权的根服务器。 我们的方法使我们充满信心,尽管我们没有涵盖所有AS,并且可能会低估DNS代理,但我们可以从有利的位置检测到最多(甚至不是全部)DNS根镜像。 第2节概述了检查DNS解析保真度的相关工作。 然后,我们在Sect 3中讨论我们的测量方法。并在Sect 4中应用我们的方法。我们讨论了Sect 5中的未来工作。 并在小节6中进行总结。

2 Related Work

先前的一些工作探索了DNS操作,测量了DNS根服务器,并寻找了前缀劫持。

DNS Manipulation。 Dagon等人通过测量开放的解析器发现了损坏的DNS解析器[10]。 这项工作的重点是查找受感染的主机,而不是DNS根操纵,发现有2%的解析器提供了错误的查询,有0.4%的解析器提供了误导性的答案。 更接近我们的工作,Weaver等。 使用Netalyzr终端系统网络测量平台来探索DNS操纵[28]并表征家庭网络DNS分辨率[13,27]。 在这两者之间,这两项研究从服务器和客户端两方面对DNS操纵进行了表征,但并未将重点放在根副本上。

DNS Root Measurement. DNS根基础结构的多项研究都研究了性能问题,尤其是对于任播。 不幸的是,这些工作通常是过时的(有些已经超过10年了)或仅从几个有利的角度衡量[5,15,16,24,25]。 Ballani等人 探索了使用开放解析器测量的DNS根Anycast部署,但未尝试查找未经授权的根[6]。 梁等。 还探讨了DNS根源,但关注的是典型性能,而不是研究奇怪的低响应时间[14]。 我们也专注于使用这些测量来找到未经授权的根源,Liang等人 提及但不探索。

Prefix Hijacking. 从理论上和实践上,几项研究都探索了前缀劫持。 Ballani等。 研究表明,从理论上讲,AS可以劫持很大一部分IP空间,特别是如果它们是tier-1 ISP [7]。 Nordstr¨om等人。 定义了针对BGP的几种潜在攻击,并提出了需要采取新对策的地方[19]。 在过去的几年中,还对野外劫持攻击进行了一些研究,例如巴基斯坦的配置错误阻止了全世界的用户访问YouTube [20],并保护了重要的基础架构,例如DNS根[9]。 我们使用这些方法来查找针对DNS根的BGP攻击。

3 Measurement Method

为了推断客户端是否从未经授权的根副本而不是从实际的DNS根接收响应,我们同时检查了延迟(根据与B根的距离,响应的返回速度比应有的增长更快),以及服务器身份(从 HOSTNAME.BIND答复,traceroutes和BGP路由)。

我们使用两种不同的方法来观察潜在的DNS根操纵:(1)使用RIPE的Atlas基础架构(在189个国家/地区的2755个不同的AS中约有8000个节点)进行直接的终端系统测量; (2)通过BGP监控进行控制平面分析。 对于每个平台,表1显示了收集了哪些度量,何时收集了度量以及可以从每个度量中检测到的操作类型。 我们分析了2014年7月6日至13日在RIPE Atlas平台上进行的一周测量。我们从6,135个Atlas探针中的每个接收一个HOSTNAME.BIND测量,从6,546个Atlas探针中的每个接收大约2500 ping。 由于我们无法确定的原因,数据集不包括列出为当前部署的所有Atlas探针,但是我们使用来自5929个Atlas探针的数据来提供这两种测量。

3.1 Anomalous Response-Time Latency

为了寻找透明的DNS代理,我们利用正在进行的ICMP ping测量,默认情况下,RIPE Atlas节点每240 s(四分钟)对每个DNS根进行一次[21],特别是分析了独特B的ping时间。 另外,我们对发送到B root的HOSTNAME.BIND DNS查询进行计时。 在没有DNS代理的情况下,我们希望这些响应时间相似。 在存在DNS代理的情况下,我们希望DNS响应时间会大大缩短,因为DNS查询不会一直传递到权威的B根DNS服务器。 延迟差异在DNS注入中很明显,并且攻击者很难掩盖。 能够拦截DNS通信的强攻击者当然可以转换DNS响应,而不是直接应答请求,从而在查询相应的授权根服务器时产生预期的延迟。

3.2 Anomalous Server Identity

接下来,我们将介绍三种方法来确定DNS根服务器的身份及其在网络中的位置。

HOSTNAME.BIND Queries. 为了识别异常的服务器身份,我们通过Atlas探针发出HOSTNAME.BIND查询,即要求DNS服务器标识自己的特殊DNS查询。 来自正确的B根的HOSTNAME.BIND答复遵循模式bx,其中x的范围为0到9。无效或空响应可能表示该答复不是来自实际的根服务器。 我们还使用另一种DNS服务器识别协议EDNS NSID扩展[4]进行了研究,但是该扩展不提供我们所需的其他信息,B根也不支持。 DNS代理很难伪造HOSTNAME.BIND响应,因为要使响应看起来有效,就需要根据原始请求发送到的根来对其进行自定义。 这种操作模式会使代理更加复杂,并且默认软件不支持该代理,因此不太可能使用它。 DNS根镜像可能会伪造单数B的响应,但是我们没有观察到这种情况。

Traceroutes. 通过分析从RIPE Atlas节点每1800 s(30分钟)到B和L根的正在进行的UDP跟踪路由,我们寻找DNS根镜像。[21]。 我们使用跟踪路由来识别潜在的根镜像,方法是:(1)在到达B根之前检查倒数第二跳上的ASN,以及(2)比较从Atlas探针到B根和L根的跟踪路由。 通过检查倒数第二跳上的ASN,我们可以验证流量是否离开了Atlas探针的AS,并且该探针的流量采取了通往B根的有效路由。 我们假设攻击者很难伪造到根服务器的所有路由跟踪跃点。

同样,我们假设攻击者可能使用单个根镜像来服务多个DNS根,以避免复制相同的功能。 为了检测根镜像重用,我们检查到B根和L根的跟踪路由之间有多少跳匹配。 (我们再次假设攻击者很难伪造到根服务器的所有路由跟踪跃点。)

BGP Routing Tables and Updates. 我们还寻找了操纵路由以更改根服务器的拓扑位置的证据。 私人路线有时会泄漏到公共互联网,就像巴基斯坦对YouTube进行审查一样[20]。 布朗等。 发现中国DNS审查制度的传闻证据影响了其他国家的DNS根[8]。

如果被劫持的路由传播到目标网络之外,则该公告可能会出现在公共BGP数据库中。 为了探索这种可能性,我们检查了俄勒冈大学RouteViews项目[26]和RIPE的路由信息服务(RIS)[22]的BGP数据,其时间与RIPE Atlas数据相同。 RouteViews和RIS都通过定期从路由服务器提取数据来从世界各地的交换点收集公共对等数据。 我们通过检查RIB的B根前缀,并检查AS路径或前缀是否与实际通告不同来分析数据。 我们推测,AS可能会通过将自身插入AS路径或声明更具体的前缀来进行劫持攻击(针对其内部BGP网络或其他AS)。

4 Results

我们应用了Sect 3的技术寻找DNS根操纵的证据。 分析异常延迟和HOSTNAME.BIND答复后,发现DNS根操作很少。 路由和跟踪路由数据未产生任何其他此类操纵的证据。

4.1 In-Path DNS Proxies

我们确定了11个HOSTNAME.BIND响应与本节3.2中讨论的预期bx模式不匹配。其中之一与我们在4.2.中讨论的中国的DNS镜像相吻合。 4.2。我们发现来自其他根服务器的其他十个HOSTNAME.BIND响应产生了相同的结果,这表明Atlas探针位于隐藏的DNS代理后面。只有一个具有此类DNS代理的ISP托管了多个Atlas探针,但是该网络上的四个Atlas探针中的三个表现出正确的HOSTNAME.BIND响应,这表明代理可能反映了用户配置而不是ISP部署。对于其他九个实例,DNS代理的使用似乎反映了一个有意的决定,因为几个HOSTNAME.BIND响应与ISP的名称相对应。此操作可用于提高性能。例如,肯尼亚ISP Wananchi托管的Atlas探针据称从B根接收到响应,该响应在14毫秒内标识了服务器dns3.wnanchi.com,而对ping到B根的响应为318毫秒。

使用ping数据,我们寻找的最小ping时间小于从RIPE Atlas节点到B根的最小光速传播延迟。 这些度量不应受到任何隐藏的DNS代理的影响,因为我们将它们基于ICMP ping数据包。 它们也不应反映无关的网络故障(假设我们最终收到答复,这只会增加延迟)。 为了确定是否将ping RTT视为低得不可思议,我们对每个Atlas探针进行了地理位置定位,并将我们的分析限制在北美和南美以外的Atlas探针的低ping时间。 我们将Atlas自身的地理位置信息与MaxMind [17]对Atlas探测器的外部可见IP地址(由Atlas服务器确定)的地理位置进行了比较。 此过程仅产生一个地理定位源,用于1,388个Atlas探针(22.6%); 我们发现另外106个Atlas探针(1.7%)的位置信息不一致,我们没有将其用于分析。

这些测量检测了与我们上面描述的HOSTNAME.BIND相同的十个DNS代理,方法是观察DNS查询和ping到B根之间的响应时间差异。 两种独立技术检测到相同的十个DNS代理这一事实增加了我们对结果的信心。

图2显示了非洲国家的代表性样本在DNS查询和ping到B根之间的响应时间差异。 除了先前在肯尼亚讨论的DNS代理外,我们观察到的ping响应时间略短。 这些结果代表了我们数据集的其余部分; 仅11个Atlas探针的DNS响应时间比其ping快50毫秒以上,而这11个Atlas探针中的10个落后于DNS代理。 由于ping和DNS查询响应时间均超过350毫秒,因此其余的Atlas设备(不在根镜像之后)似乎反映了ping和DNS测量之间的网络变化。 我们的结果在质量上与Weaver等人的结果一致。 [27],它发现1.4%的Netalyzr客户端位于隐藏的DNS代理之后,尽管我们观察到的是以前观察到的十分之一。

4.2 Rogue DNS Root Mirrors

一个HOSTNAME.BIND响应与B根的预期格式不匹配,但似乎不是DNS代理。 我们将该响应标识为中国的未经授权DNS根副本,并通过ping和traceroute确认了该响应的存在。

我们按大陆探索了对B根的最小响应时间,突出了四个清晰的异常值,其中一个如图3所示。如上所述,一个异常值是DNS根镜像,而其他三个异常值是测量误差。 尽管有这些异常值,但我们对时序数据充满信心,因为图3证明即使地理定位存在问题,响应时间也基本一致(该图还包括因地理定位不正确而丢弃的响应)。 我们通过使用跟踪路线验证地理位置信息来继续探索异常值。 验证的结果是,我们丢弃了在纽约误装到瑞士的Atlas探测器。 (traceroute显示第一跳距离只有几毫秒,并且将“ us”作为路由器名称的一部分。)

在进一步分析其余异常值的ping响应时,我们发现,除了DNS根镜像本身之外,其他两个异常值是由于对ICMP错误消息的处理不当而导致的测量错误。 例如,比利时的阿特拉斯(Atlas)探针收到许多ping响应,其中TTL为255,响应时间约为5 ms,随后重复出现重复的响应,其TTL为44,响应时间约为168 ms。 TTL 255表示第一跳路由器发送了ICMP错误消息,RIPE Atlas平台将其解释为ICMP ECHO答复。

我们确定第四个异常点是中国教育研究网络的未经授权的根镜像。 Atlas探针可以在1.2毫秒内对B根执行ping操作,并且HOSTNAME.BIND查询产生无效的响应,响应时间为16毫秒。 Atlas探针在100毫秒内很少出现8次ping(0.11%)的网络问题,但是图4证明了ping的一致性。 RIPE Atlas和MaxMind都将Atlas设备定位到中国,并且到B根的路由上的所有跃点都在同一ASN中。 此外,Atlas探针可以直接与我们控制下的(非根)权威DNS服务器通信,因此Atlas探针似乎没有位于DNS代理后面。 如此众多的测量结果使此RIPE Atlas探针更有可能位于DNS根镜像之后。

4.3 Traceroutes

我们分析了到B和L根的跟踪路由,但没有发现DNS根镜像的任何证据。 我们通过注意到B根的路径上的倒数第二跳并比较B和L根之间的跟踪路由来分析这些跟踪路由。

Validating Paths to B Root. 为了了解通往B根路径的倒数第二个路由器,我们探索了从1,948个Atlas探针到B根的4,333条跟踪路由。 这些总计不包括未成功完成或包含任何错误或数据包丢弃的跟踪路由。 我们发现B根的倒数第二个路由器是在AS 226(Los Nettos)中用于1,647个Atlas探针(3,488条跟踪路由),在AS 2153/2152(加利福尼亚州立大学)中对于295个Atlas探针(814条跟踪路由),在AS 4(ISI)中 )用于两个Atlas探针(22条跟踪路由),在AS 8121(第42层)中用于1个Atlas探针(5条跟踪路由),在AS 34168(Rostelecom)中用于一个Atlas探针(2条跟踪路由),以及在AS 2914(NTT通信)中 一个Atlas探针(1条traceroute)。 数据集包括来自五个Atlas探测器的跟踪路由,这些探测器被确定为上方的DNS代理,并且在每种情况下,Atlas探测器都通过Los Nettos传输。
洛斯内托斯(Los Nettos)和加利福尼亚州立大学(California State University)是最流行的路由,并且很容易验证为合法,因为洛斯内托斯(Los Nettos)是ISI(B根管理员)的广告BGP邻居,并且ISI位于南加利福尼亚大学。 也可以验证第42层和NTT通信案例,因为它们是与承载探针的AS不同的AS。 最后,用于Rostelecom的Atlas探针也托管在Rostelecom中,但是traceroute具有230 ms的延迟,这表明Atlas探针正在与真实的根进行通信。

Comparing Paths Between B and L Roots. 我们假设,如果攻击者操纵DNS根,则他们可能会将多个根重定向到单个实例,以避免重复。 为了评估该假设,我们分析了来自1,292个Atlas探针的B和L根的4,342条路径对。 我们删除了所有未成功完成的跟踪路由或包含错误或丢弃的跟踪路由,然后在30分钟内匹配了源自同一Atlas探针的B和L根跟踪路由。
我们通过遍历L根跟踪路由中的每个跃点,然后检查该跃点上是否有IP出现在L根跟踪路由中的任何跃点上,来比较跟踪路由。 如果L根跟踪路由IP出现在B根跟踪路由中,则我们将该跃点标记为匹配。 完成测量后,通过除以L根跟踪路由中的跃点数,计算出匹配跃点的分数。
这些方法没有发现根系操纵的证据。 最接近的跟踪路由对的匹配跳数分数为0.85(匹配的12/14跳数)。 如果进行操纵,我们会期望跟踪路由完全匹配。 数据集还包括5个以前标记为DNS代理的Atlas探针,它们的最高匹配跳数分数为0.8(12/15个匹配跳数)。 这些结果与没有DNS根镜像一致。

4.4 BGP Routing Table Manipulation

我们分析了B根的BGP路由表快照,没有发现被劫持路由的迹象。 我们分析了来自伦敦和日本等地域不同的13个RIPE RIS路由服务器Internet交换点(IXP)的BGP数据。 我们用来自俄勒冈大学RouteView的路由服务器的数据补充了这些数据,这些数据来自世界各地另外九个IXP。 我们没有观察到B根的任何前缀劫持。 我们的分析与普遍期望一致,即即使我们不能保证看到B根的前缀劫持,未经授权的根副本也很少见。

5 Future Work

我们已经列举了一些测量DNS根操作的方法,但是未来的工作可以扩展这些测量,如下所示。

Anomalous Response Times. 我们可以采用开放式解析器作为我们的边缘网络的有利位置致以异常响应时间的测量,以及准确的地理位置信息来将这些技术扩展到B根以外。 我们可以使用提供的地理位置信息[11](精确到城市级别)为每个DNS根副本确定可能最接近的任意播实例,但是我们还需要准确地定位开放的解析器。 然后,我们可以通过查询不存在的顶级域(TLD)并测量响应时间来强制每个开放的解析器与根联系。 如果客户端在比对最接近的根实例的光速传播延迟更短的时间内收到响应,则我们知道正在使用根镜像或DNS代理。 不幸的是,我们已经证明收集此类地理位置数据非常困难,并且将是扩展我们的工作的主要挑战。

Anomalous Server Identity. 我们还可以扩展通过服务器端分析来识别异常服务器身份的技术。 通过发送对我们控制的DNS区域的查询并确保(1)权威服务器接收查询,以及(2)客户端接收正确的响应,我们可以更好地标识DNS代理。 我们可以通过包含nonce并始终返回相同的值(例如,1.1.1.1的A记录或SERVFAIL)来确保查询始终命中服务器,并且永远不会被缓存。 理想情况下,我们还将从根的有利位置收集数据,并从Atlas探针和开放式解析器查询随机生成的,不存在的TLD。 这样的配置将揭示我们的测量机器是否到达根目录,从而提供有关DNS根目录操纵的有力结论。

6 Summary

我们扩展了对隐藏DNS代理[27]和潜在的根服务器操纵[8]的早期发现,以开发出一种检测DNS根操纵的方法。 为此,我们使用了两种测量技术。 首先,我们使用RIPE Atlas探针进行ping,HOSTNAME.BIND查询和traceroute测量。 其次,我们检查BGP路由表快照以获取路由劫持的证据。

我们使用了广泛的网络来验证我们的方法(在189个国家和22个IXP中使用了2755个访问网络),但是我们发现篡改访问B根的方式很少。 我们的测量结果找到了10个隐藏的DNS代理,它们很可能是出于性能目的而部署的,并可以向相关的ISP进行自我标识,以及中国的一个根副本。 甚至后者也没有得到广泛部署:在中国的24个RIPE Atlas探针中,只有一个遇到了它。 尽管DNS根操作很少见,但在发生时进行检测显然很重要。 我们已经证明我们的方法可以检测到这种操纵。 考虑到中国愿意篡改DNS根目录[8],我们希望这些方法将继续对检测根目录操纵有用。

你可能感兴趣的:(dns服务器,安全)