如果你访问大型知名网站打开的却是病毒网站,如果你访问网银的官方网站打开的却是假冒网银页面,如果访问的是正规网站打开的却是色情网站……这些情况听起来不可思议,输入的网址是正确的为什么打开的却是其他网站呢?想知道这个黑客圈中的秘密吗?
本次曝光的DNS漏洞危害性非常大,该漏洞能够让黑客在10 秒之内发起一个“缓存毒药攻击”,轻松地伪造任何网站,比如当你输入一个正确的银行网站域名时,你可能访问到的是一个黑客伪造的站点。
小知识:DNS 是域名系统 (Domain Name System) 的缩写。在Internet上域名与IP地址之间是一一对应的,域名虽然便于人们记忆,但机器之间只能互相认识IP地址,它们之间的转换工作称为域名解析,域名解析需要由专门的域名解析服务器来完成,DNS就是进行域名解析的服务器。
博弈主题:DNS 0DAY攻击
技术难度:★★★★
重点知识:DNS 0DAY攻击和威胁
由于该漏洞的利用细节被一名提前知情的黑客“意外”的写在了自己的博客上,因此很快就有黑客根据这些细节找到了漏洞并编写可以利用的攻击代码.由于该漏洞公布出来还不到一个月的时间,因此仍然有部分受到该漏洞威胁的设备和软件厂商没有发布补丁,这也将许多用户置于了危险的黑客攻击范围之中,因为从今以后没有人知道自己输入网址之后出现的网站是否是真实的,DNS突然让网络变得不可信起来。
此次的DNS漏洞并不是针对某一个操作系统或者软件的,而是可以广泛的应用于所有的DNS服务器中,不受操作系统等限制,因此包括Cisco、Apple、Linux等许多知名厂商的产品都或多或少会受到影响。
当DNS喝下“毒药”
在互联网中,DNS负责转换主机名为IP地址,是Internet连接系统中重要的操作,网络中每一个域名都对应一个惟一的IP地址,这一命名的方法或这样管理域名的系统叫做域名管理系统。
通常我们在浏览网站的时候会直接输入网站的域名,但是互联网中的计算机并不能够依靠域名来实现链接,他们仍然需要IP地址来互相识别,因此DNS服务器就承担了将域名解析为IP地址的工作。
由于针对DNS请求的时序和带宽考虑,多数DNS服务器本地存储从其他DNS服务器接收到的应答,这些存储应答的区域成为缓存,一旦应答存储在缓存中,DNS服务器就可以在一段时间里(称为存活时间)使用本地存储的响应,直至下次查询DNS服务器重刷新应答拷贝。
DNS缓存毒药攻击就是更改DNS服务器的DNS缓存中的条目,导致缓存中与主机名相关的IP地址不匹配正确的位置。如www. antiy.com映射到IP地址192.168.0.1,成功进行DNS缓存毒药攻击后就可以将www. antiy.com映射到10.0.0.1。
此次的DNS漏洞主要是因为验证DNS响应的DNS事件ID和源端口号随机性不强,导致攻击者创建匹配的DNS请求伪造响应的难度下降,从而实现了可缓存攻击。
通常在DNS协议规定中包含一个16位的事务ID字段,如果正确实现这个规定并使用加强的随机数生成器使用事务ID,攻击者就需要平均32,768次尝试才能成功猜测到这个ID。但由于协议实现的缺陷,黑客可使用比较小的位数来处理这个事务ID,也就表示猜测数值将大大减少。
模拟DNS缓存毒药攻击
第一步:创建DNS服务器。在Windows 2003 Server中,依次单击“开始→管理工具→配置您的服务器向导”,在打开的向导页中依次单击“下一步”按钮。配置向导自动检测所有网络连接的设置情况,若没有发现问题则进入“服务器角色”向导页。
然后在“服务器角色”列表中单击“DNS服务器”选项(图1),并单击“下一步”按钮。打开“选择总结”向导页,如果列表中出现“安装DNS服务器”和“运行配置 DNS 服务器向导来配置DNS”,则直接单击“下一步”按钮。
图1
DNS服务器安装完成以后会自动打开“配置DNS服务器向导”对话框。在“配置DNS服务器向导”的欢迎页面中单击“下一步”按钮,打开“选择配置操作”向导页。在默认情况下不用更改选择,一路点击“下一步”进入“区域名称”向导页,在“区域名称”编辑框中键入一个任意的区域域名,例如hacker.com,单击“下一步”按钮。
这时跳转到“转发器”向导页,在IP地址编辑框中键入ISP(或上级DNS服务器)提供的DNS服务器IP地址(图2),单击“下一步”按钮后依次单击“完成”按钮即可结束“hacker.com”区域的创建过程和DNS服务器的安装配置过程。
图2
第二步:DNS服务配置好后,还需要创建一个用来访问Web站点的域名“www.hacker.com”。依次单击“开始→管理工具→“DNS”菜单命令,打开“dnsmagt”控制台窗口。
在左窗格中依次展开“ServerName→正向查找区域”目录。然后用鼠标右键单击“hacker.com”区域,执行快捷菜单中的“新建主机”命令。然后打开“新建主机”对话框,在“名称”编辑框中键入一个能代表该主机所提供服务的名称,例如www。在“IP地址”编辑框中键入该主机的IP地址(如192.168.0.198),单击“添加主机”按钮,很快就会提示已经成功创建了主机记录。
此时DNS服务器已经创建成功,并且创建了合适的域名,但在客户机的浏览器中仍然无法开始测试,主要因为客户机并不知道我们配置的DNS服务器在哪里,因此不能识别用户输入的域名。此时你必须手动设置DNS服务器的IP地址才行。
在Windows控制面板网络连接打开“Internet协议(TCP/IP)属性”对话框,然后在“首选DMS服务器”编辑框中设置刚刚部署的DNS服务器的IP地址(图3),此时我们就完成了DNS服务器环境的模拟。
图3
第三步:环境搭设完成后,现在我们就可以开始模拟攻击,目前主要有C语言和Ruby语言两种编译的攻击程序。下面我们以C语言编译的Exp攻击程序为例,攻击我们搭设的www.hacker.com域名服务器,窜改它的真正IP地址指向。我们首先将www.hacker.com域名指向新浪网的IP地址,然后在CMD命令窗口中运行攻击程序。输入攻击命令:$ kaminsky-attack q.q.q.q r.r.r.r a.a.a.a 1234 www.hacker.com 220.181.69.235 8192 16此时,我们再次打开浏览器输入 www.hacker.com 后,域名已经由新浪被解析到搜狐的网页中(图4)。
图4
如果用Ruby攻击程序,需要先安装Ruby的解释器(代码下载地址:http://www.shudoo.com/bzsoft),然后将代码(代码下载地址:http://www.shudoo.com/bzsoft)下载另存为“test.rb”。再打开CMD窗口,输入“ruby test.rb”运行即可。
如何避开DNS缓存毒药攻击
目前,已经有了针对这个DNS漏洞的升级补丁包了(下载地址:http://www.shudoo.com/bzsoft),及时升级可以避免DNS服务器被黑。对于个人用户而言,可以通过修改Windows中的HOSTS文件,将网站的域名和IP地址强行制定,来达到预防攻击的目的。