DNS污染和劫持

 2023-09-05 阅读 65 评论 0

摘要:2014年1月21日全国DNS污染始末以及分析-51CTO.COM http://netsecurity.51cto.com/art/201401/428331.htm 什么事DNS污染!域名遭遇DNS污染怎么解决_建站经验_网站运营_脚本之家 http://www.jb51.net/yunying/58597.html DNS污染_百度百科 http://baike.baidu.com/link?url




2014121日全国DNS污染始末以及分析 - 51CTO.COM  

http://netsecurity.51cto.com/art/201401/428331.htm

 

 

什么事DNS污染!域名遭遇DNS污染怎么解决_建站经验_网站运营_脚本之家  

http://www.jb51.net/yunying/58597.html

 

 

DNS污染_百度百科  

http://baike.baidu.com/link?url=YVDdrGf3EMcxgEncIvXHK3__KQe-wJ71JLjjPvcx_LTwNAuv45NhX_yNbigoUXW-DK5FceZpWBjOrkDKdm970a





费劲九牛二虎之力,终于将在万网注册的wangyueblog.com这个域名转移到godaddy,然而舒心的日子没有几天,麻烦又来了,由于日益严重的DNS污染,域名常常出现解析错误,真是屋漏偏逢连夜雨,不过,blogging还得继续,所以还是得想办法,在这里将想法和办法分享,仅供参考。

什么是DNS污染?

按照百度百科的解释就是:某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址。某些国家或地区为出于某些目的防止某网站被访问,而且其又掌握部分国际DNS根目录服务器或镜像,也可以利用此方法进行屏蔽。

(盗用可能吧的一张图片)和某些流氓运营商利用DNS劫持域名发些小广告不同,DNS污染则让域名直接无法访问了,非得修改DNS服务器不可。

怎么验证是否遭遇DNS污染?

1.点“开始”-“运行”-输入CMD,再输入 ipconfig /all ,在下“DNS SERVER”里找到你使用的DNS服务器地址。

2.再输入 nslookup wangyueblog.com(你的域名) 你的DNS服务器IP ,来查看是否能解析。

3.再输入 nslookup wangyueblog.com 8.8.8.8 使用Google的DNS服务器验证。

域名遭遇DNS污染怎么解决?

1.更换DNS解析服务器。一般来说,域名注册商家都是提供免费的DNS解析服务的,以我所实用的Godaddy为例,就提供了许多免费的DNS解析服务,而且解析速度很快,比之前实用的什么万网之流要快得多,不可能全部被污染,所以更换两个DNS服务器即可。

2.使用第三方DNS解析服务。目前有很多第三方网站提供DNS解析服务,不少都是免费的,国内也有免费提供DNS解析服务的,使用第三方DNS服务可以部分解决问题,比如望月正在使用的DNSpod服务,就是国内还算比较稳定的DNS解析服务。

注意事项一:在换用第三方解析服务的时候,应该先到DNSPOD之类的解析服务商那里将域名解析,过几个小时再到godaddy之类的域名注册商那里去修改DNS服务器,这样可以避免博客出现因解析时间造成的空白期。

注意事项二:Godaddy目前本身域名就被DNS污染了,即使挂VPN也访问不了,只有更改自己电脑的DNS(比如改成google的8.8.8.8)才能访问。

3.搭建自己的DNS服务器。这样子最保险,当然也最是费时废财,有条件的朋友可以尝试。





///

///

///


DNS污染

 编辑
DNS污染,又称为域名服务器缓存污染(DNS cache pollution)或者域名服务器快照侵害(DNS cache poisoning)。
DNS污染是指一些刻意制造或无意中制造出来的域名服务器分组,把域名指往不正确的IP地址。
一般来说,外间在互联网上一般都有可信赖的域名服务器,但为减免网络上的交通,一般的域名都会把外间的域名服务器数据暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有相关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。
中文名
DNS污染
外文名
DNS cache poisoningDNS cache pollution
名    称
DNS污染
别名1
域名服务器缓存污染
别名2
域名服务器快取侵害
类似手段
DNS劫持
污染源
旁路路由器

目录

  1. 1 定义
  2. 2 常用污染方法
  3.  从一个正常的DNS查询说起
  1.  一个奇怪的查询
  2.  原理解析
  3. 3 防除方法
  4. 4 验证方法
  1. 5 解决方案

定义编辑

某些网络运营商为了某些目的,对DNS进行了某些操作,导致使用ISP的正常上网设置无法通过域名取得正确的IP地址。
某些国家或地区出于某些目的为了防止某网站被访问,而且其又掌握部分国际DNS根目录服务器或镜像,也会利用此方法进行屏蔽。
常用的手段有:DNS劫持和DNS污染。

常用污染方法编辑

对于运营商,网络管理员等人,尤其是在办公室等地方,管理员希望网络使用者无法浏览某些与工作无关的网站,通常采用DNS抢答机制。机器查询DNS时,采用的是UDP协议进行通讯,队列的每个查询有一个id进行标识。

从一个正常的DNS查询说起

源IP 目的IP 内容
192.168.2.2 8.8.8.8 Standard query 0x0001 PTR 8.8.8.8.in-addr.arpa
8.8.8.8 192.168.2.2 Standard query response 0x0001 PTR google-public-dns-a.google.com
192.168.2.2 8.8.8.8 Standard query 0x0002 A baidu.com
8.8.8.8 192.168.2.2 Standard query response 0x0002 A 220.181.57.217 A 123.125.114.144 A 180.149.132.47
192.168.2.2 8.8.8.8 Standard query 0x0003 AAAA baidu.com
8.8.8.8 192.168.2.2
Standard query response 0x0003
我们对一次正常的DNS请求进行抓包,结果如下表:
这里我们查询了百度的A记录(ipv4)以及AAAA记录(ipv6)每一个请求都有一个回应。

一个奇怪的查询

源IP 目的IP 内容
192.168.2.2 8.8.8.8 Standard query 0x0001 PTR 8.8.8.8.in-addr.arpa
8.8.8.8 192.168.2.2 Standard query response 0x0001 PTR google-public-dns-a.google.com
192.168.2.2 8.8.8.8 Standard query 0x0002 A facebook.com
8.8.8.8 192.168.2.2 Standard query response 0x0002 A 8.7.198.45
8.8.8.8 192.168.2.2 Standard query response 0x0002 A 159.106.121.75
192.168.2.2 8.8.8.8
Standard query 0x0003 AAAA facebook.com
8.8.8.8 192.168.2.2 Standard query response 0x0003 A 93.46.8.89
8.8.8.8 192.168.2.2 Standard query response 0x0002 A 31.13.90.2
8.8.8.8 192.168.2.2 Standard query response 0x0003 AAAA 2a03:2880:f01a:1:face:b00c:0:1
从上表中我们可以看到一个神奇的东西,本地在向服务器发送id为3的查询时,返回的结果竟然有以id2标识的结果,同时在整个查询中,A记录居然返回了三条,通过whois来对上述的三条A记录进行检查,我们发现,只有31.13.90.2才是facebook的ip地址,也就是那个姗姗来迟的id为2的查询结果,而标记着编号为3的AAAA查询结果中,我们竟然发现了一个A记录的查询结果。由此可见,上表用底色标记的就是被污染的DNS。下面我们就来讲述一下这个的实现方法。

原理解析

我们假设A为用户端,B为DNS服务器,C为A到B链路的一个节点的网络设备(路由器,交换机,网关等等)。然后我们来模拟一次被污染的DNS请求过程。
A向B构建UDP连接,然后,A向B发送查询请求,查询请求内容通常是:“A baidu.com”,这一个数据包经过节点设备C继续前往DNS服务器B;然而在这个过程中,C通过对数据包进行特征分析(远程通讯端口为DNS服务器端口,激发内容关键字检查,检查特定的域名如上述的“baidu.com",以及查询的记录类型"A记录"),从而立刻返回一个错误的解析结果(如返回了"A 123.123.123.123"),总所周知,作为链路上的一个节点,C机器的这个结果必定会先于真正的域名服务器的返回结果到达用户机器A,而目前我们的DNS解析机制有一个重要的原则,就是只认第一,因此C节点所返回的查询结果就被A机器当作了最终返回结果,用于构建链接。

防除方法编辑

对付DNS劫持,只需要把系统的DNS设置手动切换为国外的DNS服务器的IP地址即可解决。
对于DNS污染,一般除了使用代理服务器和VPN之类的软件之外,并没有什么其它办法。但是利用我们对DNS污染的了解,还是可以做到不用代理服务器和VPN之类的软件就能解决DNS污染的问题,从而在不使用代理服务器或VPN的情况下访问原本访问不了的一些网站。当然这无法解决所有问题,当一些无法访问的网站本身并不是由DNS污染问题导致的时候,还是需要使用代理服务器或VPN才能访问的。
DNS污染的数据包并不是在网络数据包经过的路由器上,而是在其旁路产生的。所以DNS污染并无法阻止正确的DNS解析结果返回,但由于旁路产生的数据包发回的速度较国外DNS服务器发回的快,操作系统认为第一个收到的数据包就是返回结果,从而忽略其后收到的数据包,从而使得DNS污染得逞。而某些国家的DNS污染在一段时期内的污染IP却是固定不变的,从而可以忽略返回结果是这些IP地址的数据包,直接解决DNS污染的问题。

验证方法编辑

我们在命令行下通过这样一条命令:
nslookup 域名 144.223.234.234,即可判断该域名是否被污染,由于144.223.234.234不存在,理应没有任何返回。但我们却得到了一个错误的IP(不确定)。即可证明这个域名已经被DNS污染了。

解决方案编辑

1、使用各种SSH加密代理,在加密代理里进行远程DNS解析,或者使用VPN上网。
2、修改hosts文件,操作系统中Hosts文件的权限优先级高于DNS服务器,操作系统在访问某个域名时,会先检测HOSTS文件,然后再查询DNS服务器。可以在hosts添加受到污染的DNS地址来解决DNS污染和DNS劫持。
3、通过一些软件编程处理,可以直接忽略返回结果是虚假IP地址的数据包,直接解决DNS污染的问题。
4、如果你是Firefox only用户,并且只用Firefox,又懒得折腾,直接打开Firefox的远程DNS解析就行了。在地址栏中输入:
about:config
找到network.proxy.socks_remote_dns一项改成true。




//

//

//




大概1月21日15:30的时候,Ovear正在调试新的服务器,结果发现肿么突然上不去了。。结果ping了以下,结果发现Ovear的域名都指向到[65.49.2.178]这个IP。Ovear第一反应就是,DNSPOD又被黑了! 为什么说DNSPOD被黑了呢,其实以前DNSPOD就出过一次类似的问题,导致所有的域名都跪了,刚好Ovear这个域名还有测试的几个域名都是那里的,然后就到某交流群吐槽。结果管理员说他们的DNS被污染了,Ovear心想不会是全国DNS都被污染了吧。结果乌鸦嘴说中了。还真的是全国劫持。

然后Ovear就很好奇,到底是怎么回事呢~有谁能做到这样的事情~于是就有了以下的分析和科普~

—————–以下内容为Ovear家电脑中病毒所致,跟本人无任何关系,谢绝跨省————————

balablabala说了这么久,肯定有同学问了,窝又不是学计算机的,dns是什么,跟我有什么关系!

那么DNS是什么呢,Ovear就来科普下。

我们访问一般是通过域名[Domain]来访问的,咦DNS怎么也是D开头的,难道有关系?说对了!就是有关系:DNS的全称其实是[Domain Name System]翻译过来就是域名系统。

在互联网中,是只存在IP的,IP其实就是一串数字,相当于你家里的门牌号,大家在网络中想找到你,必须通过这个,所以IP对于每个人来说是唯一的。但是第四代IP都是http://XXX.XXX.XXX.XXX这样的,多难记啊,谁会没事记住IP呢,更何况以后天那么长的IPV6,要记住不是得要人命!

这时候一个聪明的科学家出来,我们给IP加一个别名,大家通过别名不就可以不记住这个IP,也可以知道这个IP了!于是就有了域名[Domain]这个东西.

当你访问Ovear's Blog的时候

电脑的DNS解析系统就会自动问DNS服务器:尼知道Ovear's Blog对应的IP地址是神马么?

DNS:窝帮你查查,奥,找到了,IP是[122.10.94.169].
Ovear的电脑:谢啦,再见
DNS:恩

对应现实就是,问知道张三的人:尼知道张三家在哪里么? 回答 在南山区 balabalabla。

当然这样解释还是不怎么恰当的,因为一个DNS服务器是不可能知道所有域名的地址的,因为这需要耗费极大地代价,所以这时候就出现了递归DNS和根DNS。

(由于篇幅原因,Ovear就简单的说一下,其实还是有问题的。Ovear以后再写一篇文章详细阐述下DNS的工作原理,或者看[Domain Name System] QAQ)

(补充:QAQ这里Ovear说的有点过简单了,其实根DNS(ROOT DNS)指的是全球一共13台的根DNS,负责记录各后缀所对应的TOPLEVEL Domain Server[顶级域名根服务器],然后接下来的就是[权威DNS服务器],就是这个域名用的DNS服务器(可以在whois中看到)

总结一下:

[根服务器]:全球一共13个A-M[.http://root-servers.net],储存着各个后缀域名的[顶级域名根服务器]
[顶级域名根服务器]:每个后缀对应的DNS服务器,存储着该[后缀]所有域名的权威DNS
[权威DNS]:这个域名所使用的DNS,比如说我设置的DNSPOD的服务器,权威DNS就是DNSPOD。在WHOIS(一个查看域名信息的东西)中可以看到。储存着这个域名[对应着的每条信息] 如IP等~

所以正确的解析过程应该跟下面的图一样

用户使用的DNS(边缘DNS)->(还会网上推很多级最终到)根DNS->顶级域名根服务器->权威DNS)

根DNS是什么呢?大家想想,每个域名都有一个后缀,比如说ovear是[.info]后缀的。那么就有一个专门记录[.info]后缀的dns服务器,其他后缀也一样。这个DNS就是该域名的根DNS。

那么递归DNS呢?其实递归DNS就是一个代理人,是用来缓解[根DNS]压力的,如果大家都去问[根DNS],那[根DNS]不早就跪了。毕竟一个人(网站)的地址不是经常变的,所以就有了TTL这一说法,根据DNS的规定,在一个TTL时间呢,大家就认为你家里(域名所指向的IP)的地址是不会变的,所以代理人[递归DNS]在这个时间内,是只会问一次[根DNS]的,如果你第二次问他,他就会直接告诉你域名所指向的IP地址。这样就可以解决[根DNS]负载过大的问题啦。

顺便这一张图也可以很准确反映出来之前所说的~

2014年1月21日全国DNS污染始末以及分析

说了这么久,口水都干了,那么DNS到底跟这次事件有什么关系呢~

首先来看张图

2014年1月21日全国DNS污染始末以及分析

瓦特!肿么这么多域名都指向同一个IP了,这是什么情况0 0。其实这就是典型的[DNS污染]了。

我们知道互联网有两种协议,一种是TCP,一种则是UDP了(知道泥煤啊(╯‵□′)╯︵┻━┻都说我不是学计算机的了)。

TCP和UDP的主要差别就是:能不能保证传递信息的可靠性。UDP是不管消息是否到达了目标,也不管通过什么途径的,他只管我发出去了就好,所以UDP比TCP快得多,但是可靠性没有TCP好。

2014年1月21日全国DNS污染始末以及分析

而DNS查询默认就是用的是UDP,那么就很好劫持啦。在UDP包任何传输的路途上,直接拦截,然后返回给接收端就行了。

啧啧,说道这大家也隐隐约约知道这次事件的问题了吧,范围如此之广的劫持,必须要在各个省市的主干网上进行,而能处理这么大数据,同时能控制这么多主干网的。。啧啧啧。。。没错!就是***了~至于***是什么,Ovear在这就不说了,不然可能大家都见不到Ovear了QAQ。

说道这里,Ovear就准备手动查一下,到底是不是所推测的***呢?于是拿到了这个图(From XiaoXin)

2014年1月21日全国DNS污染始末以及分析

与此同时运维也在各地的服务器上开始了跟踪查询,发现全国各地解析时间均为25ms左右。这时候结论就出来了。

这样就明显了,肯定是***做的了~~于是Ovear又好奇的查了下,这个IP是什么来头,为什么都要指向到这里去,于是Ovear发现了一些好玩的东西~(65.49.2.0/24)

2014年1月21日全国DNS污染始末以及分析

从侧面点出了此次事件的始作俑者。

那么某FW为什么要这么做呢?Ovear在这里做一个无责任的推测,最有可能的就是:某FW的员工本来是想屏蔽这个IP段的,但是呢一不小心点进去了DNS污染这个选项,然后又没写污染目标,于是就全局污染了啧啧啧~

但是有些童鞋会问了,为什么他们都说用8.8.8.8就没事了~

其实这样子说是不正确的,因为Ovear之前用的就是8.8.8.8,上面也说了DNS查询默认使用的UDP查询,所以不管你用什么,照样劫持不误。其实8.8.8.8没问题是因为污染事件已经基本结束导致的,那么为什么污染结束后其他国内DNS都不能用,而Goole的DNS确可以正常的使用~于是Ovear就找到了张有趣的图片~

2014年1月21日全国DNS污染始末以及分析

我先来解释下上面命令的用途吧~这个命令是用来直接向DNS服务器查询域名的~

其中的[-vc]参数是强制使用TCP来查询DNS服务器,这样就可以避免UDP污染的地图炮。

那么为什么污染结束后,DNS还会受到污染呢?其实原因很简单。Ovear之前说了,[递归DNS]是需要询问[根DNS]的,而默认的询问方式是采用的UDP,所以在国内的DNS服务器,自然就受到污染了。而之前Ovear也提到过TTL这件事~

在TTL周期内,根据协议[递归DNS]是直接吧结果缓存在自己那,是不会再去查询[根DNS]的,所以国内的DNS就把错误的结果缓存起来了~

而Google的DNS服务器基本都是在国外,所以查询的时候影响并不大,但是国内挺多域名使用DNSPOD啦,DNSLA的DNS,所以Google进国内查,还是会受到一定影响的。

因此,如果要完全避免这次的影响,有两个条件

1、你的域名的DNS必须是在国外

2、你查询的DNS必须在国外,而且如果在污染期需要通过TCP查询。

这样就可以避免这个问题了。

然后Ovear又手贱查了下这次的TTL,啧啧

2014年1月21日全国DNS污染始末以及分析

如果没有人员来手动干预,这次的事件还是要持续蛮久的~。



版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/1069.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息