免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2311 | 回复: 1
打印 上一主题 下一主题

DNS中毒--2008年最轰动的入侵 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-07-23 15:58 |只看该作者 |倒序浏览
只要黑客想这么做,那我可以保证,您访问的Google,绝不是Google,淘宝也不是淘宝,而是一个伪装的网站,2008年,给ISP的DNS缓存服务器投毒是安全界最热门的话题,并且,这个问题仍然无法解决……
通过本文,会看到一些奇妙的事情:
1、您发现在自家电脑的浏览器里输入
www.google.com
,访问的却是chinaunix。
2、随意的给google加个子域名,比如chinaunix.google.com。
他们都基于一个技术 -- 给ISP(如,电信/网通)的DNS缓存服务器投毒,也称作UDP会话劫持
* 投毒原理
首先,您必须大致了解DNS的工作原理:

先看蓝色的线条,这是正常的DNS解析流程
1)终端电脑(您的个人电脑)在用浏览器访问网页时,首先要在浏览器的地址栏中填入一个网址(如,
www.google.com
),可我们的个人电脑必须知道这个网址对应的IP地址,才可以正常浏览网页(如,
www.google.com对应的IP地址是1.1.1.1
)。于是,你的电脑就发送一个解析请求暂存DNS伺服器,这个请求其实就是一句话“您能告诉我
www.google.com
对应的IP地址吗?”
2)如果暂存DNS伺服器上没有
www.google.com
对应的IP地址,则暂存DNS伺服器就会通过迭代的方法最后询问主要DNS伺服器主要DNS伺服器上保存有
www.google.com
对应的IP地址。
3)主要DNS伺服器响应暂存DNS伺服器的请求,其实就是一句话“
www.google.com对应的IP地址是1.1.1.1
”。
4)暂存DNS伺服器收到主要DNS伺服器的应答后,把应答消息转发给一开始询问自己的那台个人电脑。
5)您的浏览器使用这个正确的IP访问Google主页。
这就意味着,黑客只要伪造响应报文给暂存DNS伺服器暂存DNS伺服器上就记录了错误的域名到IP地址的对应关系,然后暂存DNS伺服器把这个错误的对应关系发给先前查询的用户计算机的浏览器,这样,您尽管在浏览器里输入的是
www.google.com
,可访问的确不是真正的IP地址,这个地址是黑客任意指定的。
红色线条是黑客在您DNS解析时的投毒过程
1)用户请求暂存DNS伺服器返回
www.google.com
的IP地址。
2)如果暂存DNS伺服器上没有
www.google.com
对应的IP地址,暂存DNS伺服器就会通过迭代的方法最后询问主要DNS伺服器
3)在主要DNS伺服器还未返回给暂存DNS伺服器时,黑客趁此时间空隙,把错误的对域名到IP的应关系告诉暂存DNS伺服器,这就是给DNS缓存服务器的一次投毒。
4)暂存DNS伺服器回应给用户错误的域名到IP对应关系。
5)用户访问黑客任意指定的IP地址,比如指向chinaunix(chinaunix因此获得了非常高的流量,如果chinaunix想冒充网上银行也是可以的)。
因为暂存DNS伺服器会在一段时间内发送多个DNS查询报文,所以为了使查询报文与响应报文匹配,在DNS的报头中使用了ID字段,响应的报头ID必须与先前发出去的查询报头ID一致才会被暂存DNS伺服器收录,否则丢弃。所以,黑客若想投毒成功,必须猜中查询报文的ID号。DNS报头的ID号是16位2进制,也就是有2的16次方=65536个ID号,这就是说黑客一次投毒的命中率是1/65536,不过只要攻击程序稍微优化一下,这个命中率可以缩小到1/655,几秒钟就可以搞定。
* 攻击测试
测试目的
仅为了引起ISP(比如,电信、网通)对DNS服务器的安全重视,禁止非法使用。
攻击工具
kaminsky-attack
(您也可以通过Google搜索下载源码自己编译)
测试步骤
在命令行下输入(我用的是Linux系统):
[admin@Linux] ./kaminsky-attack q.q.q.q 202.96.209.5 a.a.a.a 1234 www google.com. 8.8.8.8 8192 16

命令说明
q.q.q.q是发送DNS请求的客户机IP地址,可以随意设置
202.96.209.5是上海的DNS缓存服务器(黑客投毒的目标)
a.a.a.a是google.com的权威DNS服务器,可以随便设置
www是主机名
google.com是域名(与www联合起来就是一个完整的FQDN名)
8.8.8.8是毒药,让DNS缓存服务器存储错误的A记录(域名到IP的对应关系)
8192是猜测次数(次数越大命中率越大)
攻击原理
这个程序有双重身份,一个是普通客户端,另一个是黑客,程序先给DNS缓存服务器发送一个DNS解析请求,然后快速给DNS缓存服务器发送8192个伪造的响应包,使其中毒。
重要提示
在测试之前,您应该明白,对于google.com这样知名的网站,几乎时时有用户在请求解析,就是说DNS缓存服务器上总是有google.com的A记录,而这时黑客的投毒是无效的。但这并不防碍黑客伪造2级域名,比如:
[admin@Linux] ./kaminsky-attack q.q.q.q 202.96.209.5 a.a.a.a 1234 chinaunix google.com. 8.8.8.8 8192 16

因为可以肯定DNS缓存服务器上不会有chianunix.google.com的A记录,所以投毒100%成功,与此同时,
www.googl.com
也中毒了,这是为什么?如果您了解DNS响应报文,就会明白,响应报文中不但会有chinaunix.google.com的A记录,还可以捎带名曰附加记录的信息,这里的附加记录是
www.google.com
对应的IP地址。这样,DNS缓存服务器同样更新了
www.google.com
对应的错误IP地址。
另外,您也可以在本地查询DNS缓存服务器上是否存有目标域名的记录。在命令行下输入:
[admin@Linux]nslookup
>set norecurse(norecurse是告诉客户端不使用递归查询,因此,如果DNS缓存服务器上没有目标域名记录,则会返回相关提示。如果显示的是非授权区域提供的信息,则表示DNS缓存服务器已经有了目标域的资源记录)
> google.com

*防止投毒

目前还没有更好办法阻止黑客的这种行为,只有使DNS缓存服务器发出的查询请求使用动态的UDP端口,UDP的端口号也是16位2进制,这样,与DNS的ID号相结合,号码的命中率就是1/4294967296(2的32次方)。
也许您对下列信息感兴趣:
这是一段DNS投毒动画
http://www.infobyte.com.ar/demo/evilgrade.htm
TCP会话劫持

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u3/101492/showart_2004794.html

论坛徽章:
0
2 [报告]
发表于 2014-07-09 11:26 |只看该作者
试问下,我在攻击自己搭建的windows dns 10.10.10.100时,在正确执行完命令行后,程序显示如下:
Chance of success: 1-(1-16/65536)**8192 = 0.86
dns_response overflow
这个overflow是怎么回事?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP