【DNS安全】Kaminsky攻击

最近有时间,有精力,继续开展研究。

按照计划,把DNS相关理论、协议漏洞、攻击方法和防护手段,研究并总结。

今天的Kaminsky攻击时Dan Kaminsky研究员于2008年发布的DNS协议漏洞,据报道当时因此产生轩然大波,所以我收录一下。

下面这段是转载,因为原理就是这样的:

 

一年多前,安全研究员Dan Kaminsky披露DNS存在严重漏洞曾经轰动了整个IT世界。由于Kaminsky的发现,在过去一年多里,为了加强DNS安全所做的工作已经超过了前十年的总和。
何谓Kaminsky漏洞?实质上是DNS协议的一个安全漏洞,利用的是DNS响应包additional region的信息。举例而言:
为缓存www.google.com为攻击IP,需要向dns cache server发送www.google.com解析请求发送,而dns cache server向google.com授权DNS发送请求。攻击者fake了google.com授权DNS的回复包,以便可能的污染缓存。
这里的问题是,等候在dns cache server的www.google.com请求包如何可信接收来自fake的回复包,主要难点是transaction id握手。因为dns cache server向google.com授权DNS发送请求时使用的transaction id对于远程攻击者是不可知的,需要进行(2^16)guess。这个fake要成功有三个约束:
(1)TTL约束: www.google.com不能够已经在dns cache server的缓存中
(2) guess约束:transaction id能够成功guess
(3) window time约束:fake包比real server(ns.google.com)返回包快
其中race window time是非常重要的约束,导致了flooding packets低的guess率。特别是加上TTL约束,使得攻击可用的时间成非连续的跃迁模式,因而,缓存中毒成功率较低,攻击风险相对小得多。
Kaminsky主要技术是bypass TTL的约束,将攻击成为一种高成功率的漏洞攻击,引起业界震动。而且,kaminsky并不只是中毒一个域名,而是成为被攻击域名的faked name server(伪造的授权服务器),从而具有最大的危害性。
Dan Kaminsky注意到缓存中毒成功中的一个关键问题是如何绕过TTL约束。什么域名不存在TTL约束呢?主动访问不存在的随机化域名,这种域名在dns cache server没有缓存,从而不存在TTL约束。但访问不存在的域名不能够有多少价值,因为需要缓存的是存在的域名才有价值。Kaminsky注意到了additional region的可利用性。因为additional region有ns的glue记录,即使是查询不存在的域名,也会返回这些additional region记录,并且是能够缓存在dns cache server的。从而,Kaminsky把焦点转移到了将不存在域名与additonal region漏洞的结合。从而推出exloit方法:攻击者在查询随机化的域名同时针对性伪造ns的IP包返回。这种攻击尽管仍然受window time约束和guess约束,但由于有足够大的可用的连续攻击时间,使得guess的低概率在足够多次的重复攻击下成为高可能(经验测试是10秒左右可缓存中毒成功)。

这是一个非常严重的漏洞问题,黑客们可利用这个漏洞发起缓存中毒攻击,在无人察觉的情况下,将网络流量从一个合法的网站重定向到虚假的网站。值得注意的是,1997年kasphureff攻击也注意到了additional region的一方面的问题,并导致最终推出的bailywick约束。

Kaminsky攻击可将一个域名如baidu.com的请求转向伪造的ns服务器,这与1月12号的百度域名劫持类似效果。不同的是,百度域名劫持事件是针对域名注册商的注册域名篡改,而Kaminsky是针对缓存漏洞。

目前对Kaminsky漏洞解决方法是:Source Port Randomization和0x20技术。最终解决的办法是DNSSEC和IPV6。目前DNSSEC在Kaminsky漏洞推出后步伐已走得越来越快了,而IPV6也在高速发展中。在若干年后,缓存中毒也许成为历史。

有两个细节,我觉得值得研究:

1.attacker在发送大量响应包去尝试匹配中真实的响应时,可能用到两种方法:

1)发送ID不变的大量响应包,而另一台attacker去不停地向victim server请求不存在的域名。这样总有一个ID与伪造响应包的ID匹配,但是还需要考虑域名的匹配问题。我还要再细琢磨.

2.)只发送一个不存在域名的递归请求,然后attacker变换ID,大量发送对同一域名的响应包,只要attacker发送的速度够快,肯定会抢先在正常响应包到达前,让server接收他的fake包。

2.假设server真的接受了attacker发送的响应包,得到了authoritative+additional字段,但是如果server上已经有了这个字段域名的缓存呢?

实验证明,如果server上已经有了这个字段域名的缓存,也会被authoritative+additional更新掉。这也是Kaminsky攻击比较狠的地方。

 

从nsfocus的同事那里聊天得知,现在DNS攻击的类型仍然是ddos居多,投毒不多,可能因为实现难度。

 

ps:

经过研究,认为应该是:

攻击者先向Cache Server请求解析bogus12345.

www.paypal.com/

同时伪造响应报文进行缓存污染,需要穷举猜测Transaction ID、源PORT;如果攻击未得手,由于缓存”否定”响应([RFC 1034 4.3.4])机制会直接丢弃掉bogus12345.

www.paypal.com/

 的所有回应包,攻击者接着向Cache Server请求解析bogus12346.

www.paypal.com/

,如此不断尝试直至攻击成功。

另外,单纯的投毒成功率较低,应该想办法让正常响应包多点延迟,所以如果配合FLOOD先堵住authorith的流量,成功几率就高多了。

 Kaminsky attack的视频:http://www.infobyte.com.ar/demo/evilgrade.htm

                                                                                                                              —–2011.1.26 14:13

原文链接:https://www.cnblogs.com/yd1227/archive/2011/01/26/1945377.html

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/21197

(0)
上一篇 2024年4月18日
下一篇 2024年4月18日

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml