DNS 欺骗原理及其防御方案
2013-11-18董瑞芳
董瑞芳
【摘 要】针对DNS欺骗表现出的危害性大、隐蔽性强的特点,通过对DNS ID欺骗攻击及DNS缓存中毒攻击的原理进行剖析,应用概率学理论证明了“生日攻击”的危害,分别给出相应的防御方案。对于不同类型的用户可以根据自身的条件和对信息安全要求级别的高低,采用适合自己的应对方案。
【关键词】DNS 欺骗;ARP欺骗;DNS ID欺骗;DNS缓存中毒;生日攻击
0.概述
域名系统(Domain Name System,DNS)是一个可以将域名和IP地址相互映射的分布式数据库。目前,针对DNS协议存在的问题,很多专家给出了解决办法。IETF 提出的域名系统的安全协议(Domain NameSystem Security,DNSSEC)旨在解决DNS的安全问题, 但由于需要占用更多的系统开销和网络资源,还要对相应的数据库和系统管理软件进行升级, 并且新的软件尚处于测试阶段,离DNSSEC普及性地应用还有一定的距离。现在,主要的应对办法是升级DNS软件和加强服务器的安全配置,除此之外,尚未发现较有效的防范措施。
以侦听为基础的DNS欺骗(DNS spoofing)和DNS缓存中毒(DNS cache poisoning)对目标主机都具有欺骗性质, 本文把这2种攻击方式都列入DNS欺骗攻击并加以讨论。为了予以区分,把前者称之为 DNS ID欺骗(DNS ID spoofing),并且尝试分别给出2类攻击的应对方案。针对DNS 协议的攻击还有很多,诸如“洪水”攻击和服务器攻陷等其他攻击手段不在本文研究范围之内。
1.DNS服务原理
DNS服务的工作原理:如果某用户需要对域名www.example.com 进行解析,以得到其相应的IP地址;而且假定本地DNS服务器不是目标域名授权DNS服务器和其缓存中没有相应的记录。
2.DNS ID欺骗攻击及其防御方案
2.1 DNS ID欺骗攻击原理
DNS ID欺骗以监听ID和端口号为基础,如果是在交换机搭建的网络环境下,欺骗者首先要向攻击目标实施ARP欺骗。以下是一个 DNS ID欺骗(DNS ID spoofing)的实例。假设用户、欺骗者和DNS服务器同在一个局域网内。
攻击流程如下:
①欺骗者通过向攻击目标以一定的频率发送伪造ARP应答包改写目标机的ARP cache中的内容,并通过IP续传使数据流过欺骗者的主机再流向目的地;欺骗者配合 Sniffer 软件监听DNS请求包,取得 ID和端口号。
②欺骗者取得ID和端口号后,立即向攻击目标发送相应的伪造 DNS应答包,用户收到后确认ID和端口号无误,以为收到正确的 DNS应答包; 而其实际的地址很可能被导向攻击者想让用户访问的恶意网站, 用户的信息安全受到威胁。
③用户再次收到DNS服务器发来的DNS应答包,由于晚于伪造的DNS应答包,因此被用户抛弃;用户的访问被导向攻击者设计的地址,一次完整的 DNS ID欺骗完成。
2.2防御方法
根据此种攻击的特点,有以下的应对方案可以考虑:
(1)对少数信息安全级别要求高的网站避免使用DNS。因为 DNS 欺骗中相当一部分的目的是窃取用户的私密信息, 而对于大部分用户而言,其访问网站中的大多数都不涉及此类信息, 所以在访问涉及个人私密信息的网站时(比如通过网上银行进行交易),可以直接通过 IP地址访问,这样就可以绕开DNS服务,DNS欺骗自然无从谈起,其危害性就大大降低了。因为涉及敏感信息的网站只占很少的一部分,对于绝大多数用户而言, 这种方法几乎不会对其使用产生什么影响;又由于大部分用户受自身条件所限,不足以对所处的网络环境产生什么影响,并且对信息安全要求不是太高,因此该方法不失为一种简单有效的方法, 而且对于所有涉及DNS的攻击均有效。
(2)防范ARP攻击。因为此类攻击需要以ARP欺骗为基础,所以较为直接的方法是谨防受到ARP欺骗攻击。避免了ARP攻击的可能,自然就无法进行DNS ID欺骗。
3.DNS缓存中毒攻击及其防御方案
3.1 DNS缓存中毒原理
在不得到ID和端口号的情况下不可能完成DNS欺骗攻击。原理是,如果在已知端口号的前提下,通过发送大量的DNS应答包来猜测攻击目标的DNS 请求包的ID号,如果所发送的伪造应答包中存在和请求包的 ID一致的情况, 也就是产生了所谓的“碰撞”,则欺骗成功。16位的ID号取值范围为0~65535,共有65536种可能性,想要使其攻击的成功率可以达到 50%,至少需要发送32768个完全不同ID号的应答包。如果不知道端口号,ID和端口号的组合空间比原来扩大了6万多倍,相应的攻击成功率也就极大地降低了。不幸的是,有很多的 DNS服务器的端口都是固定的,只需要一个DNS请求,就可以从反馈当中得知端口号。这样的结果使得DNS缓存中毒攻击成为可能。可是要得到50%的成功率,在短时间内发送32768个包,还要赶在真正的应答包到来之前发生“碰撞”,其操作难度较大。如果很好地利用“生日攻击”就可以只发送较少的数据包,同样能达到欺骗的效果。
如果采用 “生日攻击”,只需要发送很少的数据包,就可以达到很好的效果。随着数据包数量的增加,相对于传统DNS欺骗攻击, “生日攻击”的优势明显。当然,这个概率只是理论上的,并不是攻击成功的概率,攻击者要想成功地使目标机的Cache中毒还需要其他一些因素共同决定,比如:这些伪造的应答包要赶在真的应答包到来之前发送至目标主机。有些攻击者会提前向上层 DNS 服务器发送大量的查询包,以延缓对真正请求的响应,从而为成功地攻击目标赢得足够的时间。还和不同的DNS软件及其设置相关,比如:有些软件会对相同的请求包数量进行限制,这样会增加攻击的难度。即便如此, “生日攻击”的危害仍然不能忽视。可以使DNS服务器Cache中毒的。
3.2防御方案
(1)采用随机端口。如果作为被攻击的服务器在发送DNS请求时使用随机端口,这样可以使ID号和端口号的组合空间扩大6万多倍,大大增加攻击的难度。
(2)为信息安全要求高的网站建立标准IP映射表。作为DNS 服务器, 有能力为少部分网站(比如涉及私密信息的网站或经常访问的网站)制作静态的标准DNS映射表,这样可以保证这种攻击对这部分网站无从下手。
(3)被动检测法。由于此类攻击往往需要在短时间内发送大量的针对同一个域名的请求包,这显然并不合乎常理,因此可以针对这一特点进行DNS欺骗检测, 或者限制发送查询包的数量,其效率较高。
4.结束语
本文针对2种主要的DNS欺骗攻击的原理,给出了多种防范措施,并认为不同的用户可以根据自身的条件和对信息安全要求级别的高低,采用适合自己的应对方案。虽然从理论上要做到百分之百地抵御DNS欺骗难度很高,但是仍然可以通过上述防范措施大大地降低 DNS欺骗攻击成功的概率。在DNS欺骗攻击中, 还有一类较为特殊和复杂的相空间分析欺骗攻击,这将是下一步工作的重点。 [科]