典型的DNS威胁与防御技术研究

2017-11-17 05:04◆魏
网络安全技术与应用 2017年11期
关键词:投毒域名攻击者

◆魏 远 张 平

(信息工程大学 河南 450001)

典型的DNS威胁与防御技术研究

◆魏 远 张 平

(信息工程大学 河南 450001)

DNS是互联网中最重要的基础设施,但由于其自身设计缺陷,针对其安全漏洞的网络攻击事件层出不穷。本文介绍了DNS协议基础框架和其存在的安全漏洞,讨论了基于这些漏洞实现的典型攻击方式,包括反射放大攻击,DNS劫持,缓存投毒攻击,DNS隧道等,在分析攻击实现原理和危害的基础上,给出了相应的抗攻击方法和建议。

DNS;域名系统威胁;反射放大攻击;缓存投毒;DNSSEC

0 引言

互联网已经成为我们生活中必不可少的一部分,而 DNS(Domain Name System,域名系统)[1,2]是互联网运行的最重要的基础设施,在全球互联网的运转中扮演基础性作用。互联网中的任何一个事件几乎都开始于一次 DNS查询,尽管这一切都是无形中完成的。DNS的最主要的功能是将人类更好辨识的域名转换为数字化的IP地址。DNS在设计之初,互联网规模并没有如今这么庞大,但随着计算机和互联网技术的逐步发展,DNS固有的安全缺陷逐步暴漏出来,由此引发越来越多的网络安全问题。DNS最主要问题在于通信双方缺乏来源数据真实性和完整性的认证机制,系统无法确认数据发送方是否是合法的发送方,也无法验证数据报是否被篡改,攻击者很容易实现源地址和数据内容的欺骗。

本文的重点讨论DNS所面临的典型的威胁,包括基于DNS的分布式拒绝服务攻击,DNS劫持,DNS缓存投毒,DNS隧道等,在分析在典型DNS的攻击技术的实现原理和危害程度的基础上,给出了相应的防御措施和缓解措施,如 DNS安全扩展,任拨,响应率限制等。

1 DNS基础概览

DNS是一个全球性的庞大系统,其核心的原件主要包含域名空间(Name Space)、名称服务器(Name Server)、资源记录(Resource Record)、解析器(Resolver)。

DNS域名空间类似于Unix文件系统,是一种自上而下的树状组织方式[3],如图1所示。根节点在最顶层,树状结构的第一层包含有“.com”,“.net”等顶级域名,第二层包含通用域名如“baidu.com”,第三层是子域名或者具体主机,当然也可以有第四层甚至更多的层。需要注意的是,每个域名都可以被划分为多个子域名。

图1 域名空间结构

除了域名空间自身,域名空间所代表的信息需要被存储在某些载体上,名称服务器正是存储这些域名空间的信息的载体。名称服务器通常被划分为权威名称服务器和递归名称服务器。对于一个特定的域名空间,如果一个名称服务器有这个域名空间的所有的信息,则将这个名称服务器称为这个域名空间的权威名称服务器,否则称为递归名称服务器。

在 DNS系统中,解析器也是一个重要的角色,通常用户所直接使用的也是解析器,例如,谷歌的“8.8.8.8”,国内的“114.114.114.114”等都是最常用的解析器。解析器在用户和名称服务器之间扮演桥梁的作用,其最重要的任务是,接受用户的查询请求,向名称服务器查询具体地址,解析来自于名称服务器的响应,然后再返回结果给用户。对于用户来说,解析器是服务器端,对于名称服务器而言,解析器又是客户端。

资源记录包含和域名相关的各项数据,资源记录包含很多种类,但常用的是internet类(IN类),这种类包含多种不同的数据类型,表1给出了最常见的几种IN类资源记录。

表1 常见资源记录

为了更加直观展现DNS工作流程,下面以访问baidu.com为例说明DNS运转过程:

(1)当用户想要接入baidu.com时,问解析器,“请告诉我baidu.com的IP地址?”。

(2)解析器接到用户查询请求后,解析器首先会查询自身的缓存记录是否有baidu.com的地址记录,如果有并且尚未过期,则直接返回给用户,如果没有,则解析器会转向根名称服务器,询问根名称服务器,“请告诉我baidu.com的IP地址?”。

(3)根名称服务器收到请求后,会根据域名的顶级名称空间判断,发现 baidu.com的顶级名称空间是.com,则会通知解析器,“请询问.com名称服务器”。

(4)解析器再次转向.com名称服务器,然后问同样的问题。

(5).com名称服务器会根据域名判断,发现baidu.com这个域名的权威名称服务器是ns.baidu.com,它会给解析器回答,“请询问ns.baidu.com名称服务器”。

(6)解析器再次转向ns.baidu.com名称服务器,然后问同样的问题,ns.baidu.com属于 baidu.com的权威服务器,它拥有baidu.com的所有的信息,当然也知道baidu.com的地址,直接回答出baidu.com的IP地址。

(7)最终,解析器得到了baidu.com的IP地址,转发给用户,在自身缓存表中存入或更新,以便下次查询。

图2 DNS工作流程

值得一提的是,一定要注意到缓存记录,当解析器中有对应域名的缓存记录,并且缓存没有过期时,它会直接将缓存记录中的域名返回给用户,而无需再向其他名称服务器询问,缓存记录可以增强整个系统的可扩展性和减少解析延迟,但同时由于缺乏安全保护,也隐藏着其他安全问题。

2 DNS面临的典型威胁

DNS在设计之初的核心关注点在于系统的稳定性,容错性,可扩展性等,并没有考虑安全的问题,这种固有的设计缺陷滋生了多种安全漏洞,概括而言,DNS主要存在以下几个问题:

(1)无论是查询请求还是查询响应,数据都是通过既没有签名,也没有加密的 UDP协议来传送的,很容易遭到窃听和篡改。

(2)对通信双方而言,都没有办法验证对方数据来源的真实性和完整性。

(3)DNS使用缓存来加快解析进度,但同时也因为缓存没有足够保护机制,导致缓存数据成为重点攻击对象。

DNS的这些安全漏洞,致使它面临的威胁主要集中在两大方向:拒绝服务攻击,数据欺骗攻击。

拒绝服务攻击(DOS:Denial Of Service),是一种使合法的用户不能正常接入系统或者网络资源,或者使得系统或者网络自身无法正常提供服务的攻击手段。分布式拒绝服务攻击(Distributed Denial Of Service:DDoS)是大规模分布式实现DOS的一种方式。DDoS攻击可能会涉及到成千上万台设备,通常来自于僵尸网络,或者机器人网络等。DNS协议是DDoS攻击最常用的一种UDP协议,它几乎具备发动DDoS攻击所需要的所有条件,因此也最为DDoS攻击者青睐。数据欺骗攻击通常指以某种方式篡改 DNS数据,获取域名的解析控制权,以达到欺骗接收者的目的,包括缓存投毒,DNS劫持等方式,下面讨论几种最为典型的DNS威胁。

2.1 DNS反射放大攻击

DNS反射攻击是最常见的一种利用DNS的攻击方式,实现这种攻击需要具备两个条件,一个是攻击者要伪造 DNS查询的源地址,第二是有开放的递归解析服务器。DNS是典型的 UDP传输协议,源地址可以轻易伪造,并且缺乏源地址真实性的认证机制,现实中也存在大量的开放的递归解析服务器,恰好满足上述两个条件。攻击者通过向开放的递归解析服务器发送大量的伪造源地址的DNS查询请求,以此将DNS响应流量导向攻击者伪造的源地址,也就是受害者,当响应流量足够大时,这种攻击会对受害者造成拒绝服务攻击,致使受害者系统瘫痪。

反射放大攻击是在反射攻击的基础上再增加一个条件:查询响应流量成倍的大于查询请求流量,DNS正好具备这个能力,例如,可以通过查询仅有 64字节的“ANY”资源记录,就可以得到512字节的查询响应,以此来实现响应流量放大,典型的反射放大攻击如图3所示。

图3 DNS反射放大攻击

近年来,利用 DNS实现反射放大攻击案例比比皆是,2013年,反垃圾邮件组织Spamhaus遭遇了一次峰值为300Gbps的DNS反射放大攻击[4],攻击者发出长为36字节的DNS查询数据包,却得到了长为3000字节的响应数据包,直接导致大量合法用户不能访问该机构网站,这也是最具影响力的一次反射放大攻击。另据Arbor Networks记录,2016年里约奥运会期间,攻击者利用DNS及其他协议,针对巴西政府发动了峰值为540Gbps的DDoS攻击[5]。

2.2 随机子域/非存在域名攻击

随机子域(Random Subdomain)攻击,在这种攻击中,攻击者通过向开放递归解析服务器查询合法域名的随机子域名或者根本就不存在的子域名来实现攻击,例如,查询xxxxx.google.com,这种域名不会得到正确的响应,攻击者可以通过控制僵尸网络来自动大量发送这些查询请求,以此来耗尽 DNS权威服务器的带宽和资源,造成这些权威服务器无法向合法用户提供正常的服务。

非存在域名(NXDomain Name),是指由攻击者设置和控制的一些解析非常缓慢或者根本得不到正确解析的域名。非存在域名攻击类似于随机子域名攻击,攻击者向开放递归服务器发送大量非存在域名的查询请求,但这些域名解析缓慢或者不能解析,以此来让 DNS解析服务器一直在等待解析响应,以达到消耗解析服务器资源,实现拒绝服务攻击的目的。

2.3 DNS缓存投毒攻击

缓存投毒是最流行的 DNS欺骗方式,尽管缓存投毒的攻击理论早已存在[6],但由于实施困难,成功率低并没有得到足够重视,2008年,Dan Kaminsky在Black Hat的演讲让缓存投毒攻击成为一种切实可行的攻击方式[7]。

缓存投毒攻击是指攻击者将“污染”的缓存记录插入到正常的DNS名称服务器的缓存记录中,所谓污染的缓存记录指DNS解析服务器中域名所对应的 IP地址不是真实的地址,而是由攻击者篡改的地址,这些地址通常对应着由攻击者控制的服务器,下面详述缓存投毒实现方式:

用户A向解析器R请求查询xxxxx.google.com的IP地址,R中并不会缓存 xxxxx.google.com的资源记录,R将会转向google.com的权威名称服务器,假设 R合法解析得来的地址是IP1,但是攻击者会在该响应到达前,伪造大量解析地址为 IP2响应包发送给R(其中要在TTL内成功猜测transaction ID,若猜测不成功,则更换随机域名重新发动,详见文献[8]),而IP2是攻击者控制的服务器,通常为钓鱼网站等,由于R很难检测来源响应的真实性,并且根据 DNS接收策略,当接收到第一个响应包后会丢弃随后的响应,随后 R会将该条记录存入到自身缓存中,这样就完成了缓存投毒的过程。当其他合法用户查询时,R由于缓存中已经存入IP2且尚未过期,会直接将IP2响应给用户,致使用户访问攻击者控制的站点,结合社会工程学,攻击者利用伪造的网站页面诱使受害者下载病毒和木马,以此达到控制受害者机器,盗取受害者敏感信息的目的。

缓存投毒攻击是最危险的一种 DNS攻击方式,利用它可以实现中间人攻击和拒绝服务攻击,导致用户隐私泄露和财产损失,使合法用户不能正常接入站点,站点不能为用户提供正常服务。

2.4 DNS劫持

DNS劫持是另外一种常见的DNS欺骗攻击,从攻击结果来看,DNS劫持(重定向)和缓存投毒很相似,攻击想要实现的目的都是控制特定域名的解析记录,导致域名对应的 IP地址被篡改为由攻击者控制的假的站点。攻击者通常会通过两种方式实现DNS劫持,一种是直接攻击域名注册商或者域名站点获取控制域名的账户口令,这样可以修改域名对应的 IP地址,另外一种方式是攻击权威名称服务器,直接修改区域文件内的资源记录。

对于企业和机构客户而言,遭遇 DNS劫持是非常严重的问题,它会导致机构失去对域名的控制,一旦攻击实现,机构的站点将不能访问,或者用户可能会访问到伪造的站点。当用户接入如支付宝,银行等合法站点时遭遇域名劫持,用户将面临个人账户和敏感信息泄露,财产损失等风险。

2.5 DNS隧道

DNS查询请求通常被视为安全的数据类型,防火墙和入侵检测设备一般不会拦截。DNS隧道正是利用这一特点,将其他的数据和协议(如 shellcode)编码为 DNS查询请求,以此方式来躲避防火墙和入侵检测设备。

DNS隧道最初被设计用来绕过WIFI Web认证,但是,在攻击者眼里,DNS隧道被视为实现远程控制的一种方式,也就是说,通过DNS隧道,攻击者可以通过DNS服务器去远程执行命令和控制数据传输。

攻击者想要实现 DNS隧道,必须控制一个内网的客户端,客户端不需要连接外网,能够向内部的 DNS服务器发送和接收外部站点的 DNS请求和响应即可。由于防火墙和入侵检测设备很少拦截 DNS查询和响应,因此,被控客户端可以将数据编码为DNS请求,通过DNS服务器发送给攻击者,攻击者同样可以将控制命令编码为 DNS响应发送给被控客户端,这样就可以在被控客户端和攻击者之间安全传输命令和数据[9,10]。多种工具可以轻易实现DNS隧道,比如DNSCat[11],Iodine,DNS2TCP等。

3 防御及缓解措施

针对 DNS所暴露的问题,相关研究人员已提出很多安全建议,工业界也引入了大量的对抗 DNS攻击的安全产品,但所采用的防御和缓解措施大致有以下几种。

3.1 DNSSEC

DNSSEC (Domain Name System Security Extensions,DNS 安全扩展)[12],目前来看,最有希望解决DNS安全问题的安全措施就是DNSSEC。简而言之,DNSSEC依赖于数字签名和公钥系统去保护 DNS数据的可信性和完整性。权威名称服务器用自身的私钥来签名资源记录,然后解析服务器用权威名称服务器的公钥来认证来自权威名称服务器的数据,如果认证成功,则表明接收到的数据确实来自权威名称服务器,则解析服务器接收数据,如果认证失败,则表明接收到的数据很可能是伪造的,则解析服务器抛弃数据。文献[13]提供了DNSSEC的具体的相关的概念和安全特色。

DNSSEC确实也存在一些问题,由于认证过程涉及到公钥运算的加解密过程,它会增加系统的消耗,延长 DNS解析时间,并且要完成认证的话,需要部署从根域名服务器到站点域名服务器的信任链,正因如此,很多机构不愿部署DNSSEC。此外,由于DNSSEC的响应包放大倍数显著大于正常DNS响应包,如果部署不当,恰好为放大攻击所滥用[14]。

3.2 Anycast

Anycast(任拨)[15]是一种网络路由方式,通过部署Anycast,提供相同服务的一组服务器可以使用相同的 IP地址, 客户端的请求数据将会被转发到这组服务器中路由拓扑结构最近的一台主机上。不难发现,Anycast可以用来抵抗DDoS攻击[16],当攻击者通过僵尸网络发动DDoS攻击时候,由于僵尸网络的主机具有不同的 IP地址和地理位置,这些来自僵尸网络的流量会被发送到的不同的主机,正因如此,几乎所有的根域名服务器都已经部署了 Anycast,这种方式可以理解为用分布式防御对抗分布式攻击。

3.3 响应率限制

响应率限制是指允许权威服务器可以统计自身所发送的来源于相同的DNS查询所对应的DNS响应的频次,权威服务器可以设置一个发送次数的阈值,规定在某一段时间内,若发送响应的频次超过设定的阈值,权威名称服务器会停止发送响应,并且持续一段时间,若在这段时间内,权威名称服务器没有收到同样频次的查询,则取消限制。因此,权威名称服务器将不会发送高于这个阈值的DNS响应,这样将有效保护DNS权威名称服务器原理 DDoS攻击。响应率限制可以缓解DNS 放大攻击的影响,但是同样存在几点问题,它仅仅对于权威名称服务器有效,对于公开递归服务器无效,攻击者也可以通过发送一组不同的查询而不是一个查询发送多次来绕过,另外,响应率限制也可能会影响合法用法使用。

3.4 设置递归服务器查询权限

利用DNS来实现DDoS攻击之所以能够轻易成功的关键原因之一是,大部分的开放式递归服务器可以让任何人执行 DNS查询请求,而一个安全的 DNS递归服务器不应该向任何人开放查询权限,DNS服务器管理者应当控制接入权限,保证授权的用户可以执行DNS查询。

4 结语

DNS是互联网正常运转的基石,但是它的自身安全被大部分用户忽视。近年来,由于它先天的设计缺陷,DNS被攻击者利用发动各种类型攻击。本文研究了 DNS面临的典型威胁,讨论了这些威胁的实现原理和方式,并且给出了一些有效的防御和缓解措施。

[1] Mockapetris P.V.Domain names: Concepts and Facilities RFC1034[S],1987.

[2] Mockapetris P.V.Domain names: Implementation and Specification RFC1035[S],1987.

[3] Liu Cricket and Albitz Paul.DNS and BIND[M]. 5th. CA.O'Reilly Media Inc,2006.

[4] Matthew Prince.The DDoS That Knocked Spamhaus Offline.2013.https://blog.cloudflare.com/the-ddos-that-knocke d-spamhaus-offline-and-ho/.

[5] Cimpanu Catalin.ddos attacks during rio olympics peaked at 540 gbps,2016.

[6] Jiang Jian,Liang Jinjin,Li Kang,Li Jun,Duan Haixinand Wu Jianping.Ghost Domain Names: Revoked Yet Still Resolvable [C]//Network and Distributed System Security Symposium,2012.

[7] Tom Olzak.DNS Cache Poisoning: Definition and Prevention,2006.

[8] Kaminsky D.Black ops 2008-it’s the end of the cache as we know it [C]//BlackHat, 2008.

[9] Sooel Son and Vitaly Shmatikov.The Hitchhiker’s Guide to DNS Cache Poisoning [C]//Security and Privacy in Communication Networks - Iternational ICST Conference,SECURECOMM 2010, Singapore, September 7-9, 2010.Proceedings,2010.

[10] Cian Lynch,Dimiter Andonov and Claudiu Teodorescu.MULTIGRAIN-Point of Sale Attackers Make an Unhealthy Addition to the Pantry.2016.https:// www.fireeye.com/blog/threat-research/2016/04/multigrain_pointo.html.

[11] E.Skoudis.The six most dangerous new attack techniques and what’s coming next 2012. https://blogs.sans.org/pentesting/files/2012/03/ RSA-2012-EXP-108-Skoudis-Ullrich.pdf.

[12] Bowes Ron.Weaponizing dnscat with shellcode and Metasploit.2010.https://blog.skullsecurity.org/2010/weaponizingdnscat-with-shellcode-and-metasploit.

[13] Giuseppe Ateniese and Stefan Mangard.A new approach to DNS security (DNSSEC) [C]//In Proceedings of the 8th acm conference on Computer and Communications Security,2001.

[14] NIST.DNS Security Introduction and Requirem ents RFC 4033[S],2005.

[15] Rijswijk-Deij Roland Van,Sperotto Anna and Pras Aiko.DNSSEC and its potential for DDoS attacks:a comprehensive measurement study [C]//Conference on Internet Measurement Conference,ACM,2014.

[16] Abley J,Canada Afilias and Lindqvist K.Operation of anycast services [J].RFC 4786,2006.

[17] Giovane C. M. Moura,Ricardo O.Schmidt De,John Heidemann,Wouter B.Vries De,Moritz Müller,Lan Wei and Cristian Hesselman.Anycast vs.DDoS:Evaluating the November 2015 Root DNS Event,2016.

猜你喜欢
投毒域名攻击者
食物中毒案
机动能力受限的目标-攻击-防御定性微分对策
Combosquatting域名抢注的测量研究
正面迎接批判
如何购买WordPress网站域名及绑定域名
因妒成恨“投毒” 女博士悲产畸子
有限次重复博弈下的网络攻击行为研究
投毒凶手
顶级域名争夺战:ICANN放出1930个通用顶级域名,申请者有上千家