扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
你有没有遭遇过这样的情况?当你在浏览器中输入正确的URL地址,但是打开的并不是你想要去的网站。或者是114的查询页面,或者是互联星空的网站,或者一个广告页面,或者是一个刷流量的页面,甚至是一个挂马的网站。这样的话,极有可能你遭遇了DNS欺骗。最近闹得沸沸扬扬的“互联星空”事件,是电信在DNS上进行了重定向,本质上就是来自电信对用户的DNS欺骗。并且这种欺骗在笔者本地仍然在继续。下面我们就来解析一下DNS欺骗是如何实现的,并找出应对的措施。
一、欺骗原理
我们以IT专家网为例,看看正常的DNS请求和被劫持的DNS请求的不同
1、正常的DNS请求流程为:
(1).在浏览器输入http://security.ctocio.com.cn;
(2).计算机将会向DNS服务器发出请求;
(3).DNS服务器进行处理分析得到ttp://security.ctocio.com.cn的相应地址为58.xxx.209.xxx;
(4).DNS将把次IP地址58.xxx.209.xxx返回到发出请求的计算机;
(3).你正常登录到http://security.ctocio.com.cn的网站。
2、被DNS欺骗以后的DNS请求为:
(1).在浏览器输入http://security.ctocio.com.cn;
(2).计算机将会向DNS服务器发出请求(这里注意:实际上你发起的请求被发送到了攻击者那里);
(3).攻击者对请求处理进行伪造DNS回复报告,返回给计算机的是攻击者指定的IP地址;
(3).你登录到的网站实际上不是http://security.ctocio.com.cn,而是掉进了攻击者设计好的“陷阱网站”。
二、解析DNS报文
DNS报文是我们了解DNS攻击所必须了解的知识。
1.格式:(图1)
图1
2.DNS报文结构分为
标识(id),用来签证每个DNS报文的印记,由客户端设置,由服务器返回,它可以让客户匹配请求与响应。参数(flag),参数被分成好几步分。(图2)
图2
QR 如果QR位设置为0表示报文是查询,如果为1表示响应
opcode 通常是0,指标准查询,1是反向查询,2是服务器状态查询
AA 如果此位为1,表示服务器对问题部分的回答是权威性的
TC 截断,如果UDP包超过512字节将被截流
RD 表示希望递归,如果它设为1的话,表示递归查询
RA 如果设为1,表示递归可用
Zero 如它的名称一样,总是0
rcode 0表示有错误,3表示名字错误
3.DNS查询报文,图3为DNS报文查询的格式。
图3
4.DNS响应报文,如图4。
图4
响应报文有个共同的格式,我们称之为资源记录---RR响应报文的格式(RR)如下:
域名:域名是与下面的资源数据对应的名字,它的格式同前面讲到的查询一样。
类型:类型标识了RR类型代码号,它同前面查询类值一样。
类:通常为1,表示因特网数据。
生存时间:表示客户方将RR放在高速缓存里的时间,RRs的TTL通常为2天。
资源数据长度:标识资源数据的大小。
概念:说到这里,对于网络基础知识有一定了解的朋友都知道,当客户向一台服务器发送请求服务时,服务器会根据客户的 IP地址反向解析出该IP对应的域名。这种反向城名解析就是一个查DNS(域名解析服务器 ) 的过程。
我们换一下思路,如果服务器在进行DNS查询时能够人为地给它我们自己的应答信息,那么结果会怎样呢?
答案显然不用我说了,这就是所谓的DNS欺编 (dnsspoofing )。说实话,“DNS欺骗”威力巨大,如果被攻击者巧妙利用,在BBS上隐藏IP是轻而易举,人侵局域网更是痛快淋漓。
三、欺骗测试
为了让大家多DNS欺骗有切实的认识,我用虚拟机搭建了一个测试环境:
操作系统:Windows 2003
Web服务器:IIS 6.0
服务器IP地址:192.168.0.5
物理主机的IP地址:192.168.0.6
工具:
dnshack.exe:DNS欺骗的工具
使用方法:
dnshack.exe 你在局城网的IP 你要欺骗的IP
记事本
第一步:打开记事本创建一个简单的html文件,主要是用来看欺骗的效果。把如下的html代码保存为index.html文件:
<HTML>
<HEAD>
<TITLE>★★DNS欺骗测试页面★★</TITLE>
<H1>这是一个DNS的欺骗页面</H1>
<H1>如果你看到这个页面说明欺骗成功了!</H1>
<H4>甘肃 老五</H4>
</BODY></HTML>
提示:攻击者通常把这个页面做成一个挂马页面,那危害非常大!
第二步:把index.html文件拷贝到部署好的web服务器的网站更目录下,并且在IIS管理器中添加网站的默认主页为index.heml,启动为web服务器。
第三步:在虚拟机的命令提示符下输入如下命令并回车:
dnshack 192.168.0.5 192.168.0.6 (图5)
图5
说明:上面命令的意思是:欺骗IP为192.168.0.6的主机,其在浏览器中输入的URL地址打开的都是IP为192.168.0.5的虚拟服务器的index.html页面。
第四步:在192.168.0.6的主机的浏览器中输入http://security.ctocio.com.cn,看看打开了虚拟web服务器的index.heml页面。(图6)
图6
总结:整个测试过程结束,我们了解了DNS欺骗的原理及其过程,那该如何杜绝DNS欺骗呢?
四、解决办法
1.对于个人主机来说,只要及时更新补丁或者使用代理就可以防范到DNS攻击。
2.对高标准的服务器来说,应该做到以下几点:
(1)安装新版软件
(2)关闭服务器的递归功能
(3)限制城名服务器做出反应的地址
(4)限制城名服务器做出递归相应的请求地址
(5)限制发去请求的地址
(5)手动修改本地hosts文件来解
(7)用专用工具,比如AntiARP-DNS
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。
现场直击|2021世界人工智能大会
直击5G创新地带,就在2021MWC上海
5G已至 转型当时——服务提供商如何把握转型的绝佳时机
寻找自己的Flag
华为开发者大会2020(Cloud)- 科技行者