DNS欺骗技术原理与安全防范技术

一般而言,你的浏览器将会向DNS服务器发送一个请求,从而要求得到与www.google.com相匹配的IP地址,DNS服务器则会告诉你的浏览器google的IP地址,接着你的浏览器会连接并显示主页内容。

一般而言,你的浏览器将会向DNS服务器发送一个请求,从而要求得到与www.google.com相匹配的IP地址,DNS服务器则会告诉你的浏览器google的IP地址,接着你的浏览器会连接并显示主页内容。哦,等一下,你打开的网页说google因无钱支付网站费用而转让给CSite的消息。你可能会非常吃惊,并打电话告诉你的好朋友。当然你的朋友一定会笑你疯掉了,因为你的朋友是可以登陆google并进行搜索的。还确信正在和你通信的IP地址是友好的吗?说不定你已成圈中之羊。当你在浏览器地址里输入hxxp://66.249.89.99并回车时,你又会发现,其实www.google.com还健在。

其实刚刚就是DNS劫持攻击时目击者可能看到的情形。

试想如果跳转的页面被无声无息地挂着马又会多糟糕

非常急切地相要知道着其中地玄机吧?是不是DNS服务器给了我们一个错误地IP地址?可能是吧。至少,这是我们脑中最符合逻辑地答案。

按此在新窗口打开图片事实上,有两种方法可以实现DNS劫持攻击。让我们来看看第一种,“DNSID欺骗”技术。

A)DNS高速缓冲存储器麻痹(DNSCachePoisoning)

可以想象,DNS服务器不可能将所有现存的域名或IP地址存储在本身的存储空间里。这就是为什么DNS服务器有一个高速缓冲存储器(cache),它使得服务器可以存储DNS记录一一段时间。

事实上,一台DNS服务器只会记录本身所属域中的授权的主机,如果它想要知道其它的,在自身域以外主机的信息,就必须向信息持有者(另一台DNS服务器)发送请求,同时,为了不每次都发送请求,这台DNS服务器会将另一台DNS服务器返回的信息又记录下来。

那么现在,我们就来看看是怎么麻痹DNS的缓存的。

攻击者有自己的域(attacker.net)和一个已被攻陷的DNS服务器(ns.attacker.net)。注意!我说的是被攻陷的DNS服务器,因为攻击者已经自定义了他自己的DNS服务器的记录,比如,记录可以是www.google.com=81.81.81.81

1)攻击者向你的DNS服务器发送请求查询www.attacker.net

2)你的DNS服务器不知道这台主机的IP地址,因为他不属于本身域,所有你的DNS服务器就会问此主机的所属域的DNS服务器。

3)这时被黑DNS服务器就会回复你的DNS服务器,在此同时它也会给出它所有的记录(包括连接www.google.com的记录)

注意,这个过程叫做zonetransfer.

4)这是你的DNS服务器还没有被麻痹。攻击者得到了自己的IP地址,但是他的目标不是得到自己网络服务器的地址,而是逼迫zonetransfer进行以使你的DNS服务器麻痹直到其缓存不会被清楚或更新。

5)现在如果你再问你的DNS服务器关于www.google.com的IP地址,它会告诉你172.50.50.50,这也正是攻击者的服务器所在!现在,攻击者就能为所欲为,例如挂马什么的……当然这也对google造成了相当的损失!

B)DNSID欺骗(DNSIDSpoofing)

我们可以看到,当主机X要与主机Y联系是需要近来的IP地址。然而在绝大多数情况下,X只有Y的名字,这样,DNS协议就是来解决名字到IP地址的问题的。

因此,X就会向它所在域的DNS服务器询问Y的IP地址。其间,主机X分配一个随即数,这个数也将会出现在从DNS服务器返回的信息里。当X收到回复后,X会对比两个数字,如果一致,则收到信息被视为有效。

那这样一个模型是否安全呢?并非十分安全。任何人都可以组织一次攻击来获得这个ID。举例说如果你用LAN,别人就可以利用嗅探器捕获你的请求ID,然后根据这个ID伪造一个回复信息……但是信息里含有攻击者所选的IP地址。然后,不加识别的,X会吧攻击者提供的IP地址当作Y的。

顺便提一句,DNS协议的提出请求是依赖于UDP的(只有在zonetransfer时才用TCP),这也就意味着发送一个伪造的包是极其简单的,因为没有SYN/ACK号(不像TCP,UDP没有提供一个小型防IP欺骗的防护)

但是,这样的攻击是被局限的。在我以上的例子中,攻击者用嗅探器拦获ID,回复构造过的包给受害主机。

换句话说,即使攻击者拦截了请求,数据包还是会传去DNS服务器,而DNS服务器也照样会回复(除非攻击者拦截并阻止对网关的请求或实施ARP缓存麻痹才可能在转换网络中攻击)。

这就意味着攻击者必须在真DNS服务器前回复,即为了攻击成功,攻击者必须和被攻击者同一个LAN,只有这样他才可以获得快速的ping并且捕获对方的数据包。

实践举例(仅作测试目的)

看怎么劫持我们本地网络连接:

1、麻痹被攻击者的ARP缓存

2、此时,目标主机的出口数据包将会重定向到你的主机上,但是还必须转发给真正的网关。我们可以用类似WinroutePro的工具来实现。

3、为了实施DNSID欺骗我们用valgasu开发的工具WinDNSSpoof

命令行下输入类似的命令:

wds-nwww.google.com-i123.123.123.123-g00-C0-26-DD-59-CF–v这个命令会使目标主机的www.google.com指向123.123.123.123。

其中00-C0-26-DD-59-CF是网关或DNS服务器的MAC地址。

Tips:在WindowsNT内核下,查询远程IP的MAC地址可以在CMD里用nbtstat-Axxx.xxx.xxx.xxx命令

警告:记住!在未授权的情况下使用这些手段是被禁止的!

C)借助生日悖论的精确攻击

什么是“生日悖论”?

“生日悖论”得名于一个能产生奇怪现象的数学模型,即如果有23人在一起,那么很有可能其中的两人有相同的生日。其实要理解也不是那么困难。

假设现在你在一个派对问某人他的生日,那么他跟你不同生日的几率就是364/365=0.997,则相同的概率就是1-364/365=0.003。

现在,如果你再问另外一个人,他的生日不同于前一人且不同于你的概率就是(364/365)*(363/365)=0.992,所以我们至少可以推得我们中两人有相同生日的概率为1-0.992=0.008。

如果我们继续这样的推算,很快就能算得23人中有两人的生日相同的概率高达50%。我们可以通过以下的C代码看出概率是如何趋近于1的。

#definePOSSIBILITIES365.0

voidmain(void)

{

floatchances;

inti,j;

for(i=1;i

没法编译的朋友可以看下面的结果:

People

2

9

16

23

30

37

44

65

79

Chances

0.0027

0.0946

0.2836

0.5073

0.7063

0.8487

0.9329

0.9977

0.9999

(责任编辑:闫小琪)

顶一下
(1)
100%
踩一下
(0)
0%
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
图片资讯

针锋相对 四招防御APT攻击

针锋相对 四招防御APT攻击

APT即“Adavanced Persistent Threat”,是指针对明确目标的持续的、复杂的网络攻击。...[详细]

浏览器必备的五大安全附加组件

浏览器必备的五大安全附加组件

随着云计算和基于Web的业务应用程序的兴起,尽可能的保证浏览器安全已成为关键。并非...[详细]

未来无线路由需要改进的地方

未来无线路由需要改进的地方

对于一般人来说,现有无线路由器的主要目是让手机和平板等设备连上网络,方便自己在特...[详细]

怎样在不同网络安全需求下创建DMZ区

怎样在不同网络安全需求下创建DMZ区

安全区的定义在建立安全网络过程中起着至关重要的作用。DMZ (Demilitarized Zone)是网...[详细]

教你如何利用Wireshark监测无线网络

教你如何利用Wireshark监测无线网络

计算机安全始终是一个让人揪心的问题,网络安全则有过之而无不及。无线网络是黑客们最...[详细]