RSS订阅
RSS订阅TT安全

解密:互联网DNS结构漏洞分析

2008-7-30  选择字号:  | |
打印本文章

导读:本文将介绍针对DNS漏洞攻击的工作原理(DNS查询的进行会提交给另一台DNS服务器)以及我们可以可以做的应对措施(除了需要打补丁之外,还需要考虑部署DNSsec)。

关键词:DNS漏洞 DNS查询 打补丁 部署DNSsec

正在加载数据...

  最近炒的比较火的一个漏洞是DNS协议本身发现的一个严重问题(CERT VU#800113)。国内媒体对此的报道多数都语焉不详,因此我想有必要说说这个漏洞到底是怎么回事。

  首先我们要明确的第一个问题是,DNS查询是如何进行的?对于绝大多数桌面系统来说,DNS的查询并不是由自己的机器完成的,DNS查询会提交给另一台DNS服务器(这台服务器通常是由ISP或者公司提供),然后这台服务器再去进行真正的查询操作。这样做的好处是DNS的查询结果可以由这台机器给缓 存下来,从而提高查询效率并降低由DNS带来的流量开销(当然,在今天这种开销已经是可以忽略不计的了)。

  我们可以看到的一个情况是,一台缓存DNS服务器(与权威DNS相对,这类系统提供的)下面的桌面系统可能有几百、几千、几万甚至几十万台,从攻击的有效性而言,如果能够影响这台服务器的话,相比攻陷其下的桌面系统而言,成本便会降低很多,这种攻击我们通常称之为杠杆式攻击。

  针对缓存DNS服务器的杠杆式攻击其实从很早就有研究,除了希望通过劫持网站流量来牟利的骇客之外,还有一些人使用这种方法达到一些其他的目的,例如屏蔽存在安全问题的网站,以及在一些国家存在的互联网内容净化处理等等。

  本次VU# 800113是一个足以引起人们重视的问题,尽管它采用的仍然是"Cache 投毒"(cache poisoning)的方法,但这种方法采用了一些新的技巧来使其更加有效。具体来说,DNS的查询过程是由客户端(无论是桌面计算机,或是缓存DNS服 务器发起的查询)发出一个到权威DNS服务器(可能是根DNS,也可能是具体域名的权威DNS)一个UDP请求,然后等待其回应。

  UDP是一种无连接的协议,为了能够识别来自不同服务器的回应,DNS协议利用端口和一个称为TXID的识别符(类似TCP的序号)来区分它们。事 实上,早期的DNS协议实现甚至会使用固定的端口来发起DNS请求,这样一来,TXID就成了识别回应的唯一标识。由于DNS协议是在上世纪70年代设计 的,因此TXID序号只有16个bit宽,而另一方面,伪造UDP包的来源地址又很容易(因为UDP并没有提供类似TCP那样内建的防止此类攻击的机 制),因此,攻击者只需设法让DNS缓存服务器相信自己伪造的来自权威DNS的回应是真实的,就可以达到目的了。

  具体地说这种攻击包括两个部分,其一是设法让缓存DNS服务器发起新的DNS查询请求(有很多方法),其二则是发出大量的伪造包并期待其命中,也就是在真实的权威DNS回应之前,将伪造的,但端口和TXID均能匹配的UDP回应发到缓存DNS服务器。

  对于一些以线性递增方式来产生TXID的DNS客户端而言,攻击者可以自行架设一台DNS服务器、诱使对方发出DNS请求,从而大大提高攻击的效 率。对于采用固定端口的DNS客户端来说,攻击者可以通过类似的手段来获取他关心的信息。攻击者可以用各种方式来达到这种目的,包括钓鱼邮件,也包括直接 发起查询等等。

  本次VU #800113所描述的问题是,多数DNS缓存服务器实现都存在这两种弱点之一或全部。

  说完攻击的原理,我想更多的人关心的问题会是:我们能够做点什么?

  如果你是一名桌面用户,那么最好的办法是等待公司或ISP的工作人员修正问题,通过安装适当的补丁,能够消除以上两种弱点。对于 FreeBSD 用户,减轻这类问题影响的办法是在 /etc/rc.conf 中加入 named_enable="YES",执行 /etc/rc.d/named restart 并在 /etc/resolv.conf 中将 127.0.0.1 配置为域名服务器,这样一来攻击缓存服务器一点便变成了攻击所有的桌面系统,从而大大提高攻击的成本,但缺点是这样做意味着无法利用上游 DNS 的缓存。

  如果你是缓存DNS服务器的管理员,那么除了需要打补丁之外(如果你的系统中存在这个漏洞),还需要考虑部署DNSsec。DNS协议的漏洞通过随机化查询端口和TXID只能部分缓解,而DNSsec才是解决问题的根本。

  如果你是权威DNS服务器的管理员,那么事实上你做不了什么,因为缓存DNS服务器并不受你控制。唯一可以做的事情就只剩下为自己的权威域名配置DNSsec了。遗憾的是,目前并不是所有的顶级域名,以及域名注册服务提供商都支持DNSsec。

  一些常见的误解:

误解A:靠,又是那个破烂BIND的漏洞,我不用BIND所以没事。

错。除了BIND之外,也有很多其他DNS服务器作为缓存DNS使用时会遇到同样的问题。

误解B:我的Ubuntu系统第一时间修补了这个问题,所以我不受影响。

错。除非你在本地运行DNS缓存服务,并只使用它作为DNS。

误解C:我是打酱油的,DNS被攻击跟我没关系,顶多给人家增加点流量而已,不碍事。

错。通过DNS Cache投毒攻击可以将你引导到一些伪造的钓鱼站点来骗取敏感数据。

误解D:我的权威DNS服务器配置了DNSsec,所以客户一定会访问到正确的网站。

错。事实是,许多早期的DNSsec实现都引入了其他安全漏洞;另一方面,多数缓存DNS服务器并不进行DNSsec校验,因此你仍然需要其他一些手段来减轻这个问题的影响。

  全球DNS系统需要来一次DNSsec俯卧撑。


DNS漏洞风云
 如何修补Kaminsky提出的DNS漏洞
 DNS攻击代码编写者自食其果:被自己代码攻击
 Kaminsky对DNS漏洞处理感到欣慰
 Metasploit公布DNS漏洞代码
 .org域名将首先使用DNS安全扩展协议
 DNS漏洞细节被泄露攻击即将开始
 DNS攻击对抗骇客略胜一筹 严重性遭忽视
 研究人员称DNS漏洞被过分宣扬
 微软:互联网DNS结构漏洞 Vista不受影响
 MSRC:DNS服务器更新指导
 DNS爆漏洞 可致黑客控制网络
 微软发布DNS和SQL Server更新
 解密:互联网DNS结构漏洞分析
 DNS漏洞更易威胁小型ISP安全
 DNS漏洞攻击愈演愈烈 安全形势严峻

原文出处:http://www.ithome.com.tw/itadm/article.php?c=50097
来源:iThome    作者:胡钊源    
一家安全软件公司近期向通过BT网站下载Windows 7 Beta的用户发出了警告,称该版本中包含一个严重漏洞,很有可能导致计算机感染恶意软件。
有报道称,微软Windows媒体播放器存在一个安全漏洞,能够让攻击者远程执行代码。微软本周一在该公司安全漏洞研究与防御的博客中称,这些报道是虚假的。
熊猫安全对超过300项面向国外的商业转账进行评估。其中超过1500台电脑的调查结果是惊人的:其30%的防毒软件已经过期,60%已经被恶意软件感染……
微软周一发布了公告,警告说有些可以公开获取的代码可以被用于攻击SQL Server中没有打补丁的漏洞。这个问题可以引起错误参数检查,对攻击者开放漏洞……
上周微软紧急发布Bug补丁,而这个Bug已经在IE中至少存在9年了。微软的开发员漏掉了这个关键的IE bug是因为什么呢?

当身份窃取猖獗的时候,有力地用户认证、客户认证和合作伙伴认证是至关重要的措施。有了用户名和密码就足够了吗?双因素认证是有效的方法吗?还是无力应对新出现的威胁呢?本专题将提供全面的信息,帮助理解目前的认证方式和面临的挑战,并且介绍如何采用安全的认证系统。

本专题将介绍一款免费的、开源的、可移动的适用于笔记本电脑的加密软件TrueCrypt。TrueCrypt适用于个人或者小型企业和团队,可以在任何系统上运行而不需要安装。TrueCrypt可以采用多种加密算法,有效地保护机密数据。
本专题可以帮助理解在无线网络中,无线入侵检测/防御系统(WIDS/WIPS)的价值,及时您所在的公司不支持无线局域网。此外,本专题还将介绍如何为公司环境选择合适的WIDS,以及如何防御无线拒绝服务攻击。
最新更新
专家答疑
技巧
Michael Cobb
渗透测试的目标不仅是要评估电脑系统或者网络的安全性,还要决定成功攻击的可行性和商业影响。那么如果选择合适的渗透测试人员呢?
Mike Chapple
渗透测试可以提供安全防御的有价值的信息,但是成本很高。为了渗透测试的可信性,通常必须要有独立的外部公司进行。如果使用内部人员和测试示范漏洞……
Ed Skoudis
问:社会工程应该是渗透测试的一部分吗?这样做是道德的吗?   答:这个问题的答案还在争论之中。