什么是域名污染?有什么后果 怎么破?

推荐  (0) | 19人关注关注
8个答案
22 1

域名污染和DNS污染是同义词。

手机排版可能有问题,图片也没搞上,回去再调了。。
全文引用自伯乐在线

DNS劫持
博客 - 伯乐在线 | 05月03日 13:27
来源:四火的唠叨

想谈一谈这个话题是因为最近有一位朋友抱怨他的博客在某些用户某些时候访问的时候,被莫名其妙地加上了广告,他检查来检查去,始终发现不了网站本身有什么问题,后来他才了解到了DNS劫持一说。

DNS劫持

其实这不是一个新概念了,在几年前,中国一些不讲道德的运营商,尤其是地方运营商就开始捕捉用户浏览器的访问记录,然后根据不同用户的访问行为,有选择地往用户访问的网页里面推送广告。因为运营商掌握着DNS主机,所以他们可以为所欲为地强制改写网站HTML页面,采用往返回页面里写入JavaScript等方式,来注入广告:


这是访问55BBS网站时某些用户会在屏幕右下角看到一个京东商城的广告。这样的广告,不但可以在一些中小网站上见到,在国内大型网站上也屡见不鲜。很多网民会立即怀疑自己的机器有没有中病毒或者木马,或者是什么恶意的浏览器插件又在作祟。其实,这都是运营商搞的鬼。

有的用户会坚决地投诉,运营商有自己的白名单,用户在投诉成功以后会账号被加入白名单,不再投放广告。显然他们也不想惹过多的麻烦,这样恶心的事情需要偷偷地干。

另一方面,很多地方运营商会把这样的DNS劫持后注入广告的行为加入到用户协议中去,让用户无话可说。比如北京联通就曾经提供了不同的收费服务,一种是无广告的,一种是包含注入广告的,价格当然是包含广告的更高。

在2010年的时候,因为这样的劫持行为,青岛联通还在一场引起轩然大波的索赔案件中败诉,被罚20万元给百度。索赔从金额来看显然是小事,但是对于中国互联网的成熟还是有积极意义的。在中国,你可以选择的运营商就那么几个,就好比从一堆烂苹果中挑选一个自己能忍受的。而且这个行业本身就缺乏道德和完善的法律约束,单单靠用户个体抱怨和投诉,无法从根本上解决流氓行为。这也许是互联网发展不够成熟的一个不可回避的阵痛。

技术实现

理论上说,运营商掌握了HTML页面的全部代码,它可以做任何的事情,真正无缝地植入广告,然后返还给用户。但是,这种广告的植入是批量的行为,如果要针对不同的网站页面分别去设置广告代码,代价未免太高了一点。另一方面,植入的JavaScript代码片段很容易受到不同DOM环境和JavaScript代码环境本身的影响,而植入广告,不能影响到原有网站页面的展示和行为。为了尽可能地减少植入广告对原有网站页面的影响,运营商通常会通过把原有网站页面放置到一个和原页面相同大小的iFrame里面去,通过iFrame来隔离广告代码对原有页面的影响。由于这样的劫持行为会针对不同用户的某些访问发生,我举例不够方便,为了让大家能够100%地观察到这个效果,我找了这样联通的提示页面来举例:

在访问不存在的网站的时候,比如www.adfasdfasdfasdf.cn这样乱填写的域名,以北京联通为例,它并不会直接返回错误码,而是重定向到这样一个错误提示页面:


这个重定向后的URL为:http://bjdnserror1.wo.com.cn:8080/issueunziped/bj130404/self0.jsp?UserUrl=www.adfasdfasdfasdf.cn

这样的行为招来非议的人可能不多,毕竟这样的域名确实不存在,对用户和站长带来的影响不大。但是,请注意它左下角和右侧的广告,在这里它注入广告的方式,采用的iFrame嵌套的方式,和上面我提到的劫持行为,是完全一致的。

现在请将上述URL的self0.jsp改成index.htm,也就是:

http://bjdnserror1.wo.com.cn:8080/issueunziped/bj130404/index.htm?UserUrl=www.adfasdfasdfasdf.cn

你可以看到这样的页面:

刚才提到的广告没有了,对不对?

你可以把index.htm这个页面想象成一个网站的原始页面,然后,运营商创建了这样一个新页面,而把原始页面以iFrame的形式嵌入到其中:
<iframeid="fulliframe"name="fulliframe"src=""frameborder="0"marginheight="0"scrolling="no"width="100%"height="1350"></iframe>
<scripttype="text/javascript"language="JavaScript">// <![CDATA[
frames['fulliframe'].location = window.location.href.replace('self0.jsp','index.htm');
// ]></script>

这样一来,就可以继续往这个新页面里面写代码,引入广告了:
<scripttype="text/javascript"src="http://cpro.baidustatic.com/cpro/ui/f.js"></script><scripttype="text/javascript"language="JavaScript"src="bdfloat.js"></script>



既然已经知道了原理,那么自然就容易想到解决的办法。对于这一类劫持,有一个共同特点是,原有网站的页面,都是放在一个iFrame里面的,那么只要加上这样的脚本,判断如果页面是以一个iFrame加载的,就让父页面重定向到原页面去:

if(top!==self) top.location.href=this.location.href;

当然,你也可以重定向到一个你认为可靠的链接上去,甚至加上你需要的参数等等信息(比如运营商添加的广告代码URL),以记录这一罪证。

多说几句

这种劫持方式还显得原始和粗放,而且这些采用iFrame方式实现DNS劫持的运营商还算有一些良心,因为对原有页面的影响较小,但是还有一些地方运营商,只是往原始页面单纯地写入javascript代码,很多情况下都会影响到原始页面的展示和行为,这时候问题就显得麻烦得多了。

首先我们需要获取这种行为的具体信息,一种办法是你掌握一个页面原有的JavaScript方法、DOM对象列表,或者是浏览器请求的域名列表(类似于一个白名单),如果发现列表之外的未知方法、DOM对象的引入,或者是预期之外的URL的请求,把这样的信息发送到服务端去分析。

比如,页面被强制注入了这样的代码:

document.write("<script type="text/javascript" language="javascript" src="http://.../广告脚本链接"></script>");

我们可以用一点小技巧来对付,比如JavaScript劫持:

document.write = function(){};

让document.write方法变成一个空函数,让注入代码这一行为失效。当然,具体问题还是需要具体分析,重要的是掌握信息。但是话说回来,我们只是程序员,我们创造的是原始页面,在恶意的运营商手里,靠技术层面的技巧,我们的力量还是太小了。

此外,联通的这个广告系统做得太缺乏保护性了,只要随便改一改链接,Tomcat版本号等等信息就暴露出来了,如果真要有人想做点什么的话……


DNS劫持,首发于博客 - 伯乐在线。

作者:刘志成

16 0

北方之盐地理信息系统专业,文史爱好者

2013-05-12 16:36

域名服务器缓存投毒(DNS cache poisoning),又名域名服务器缓存污染(DNS cache pollution),是指一些刻意制造或无意中制造出来的域名服务器数据包,把域名指往不正确的IP地址。一般来说,外间在互联网上一般都有可信赖的域名服务器,但为减免网络上的交通,一般的域名都会把外间的域名服务器数据暂存起来,待下次有其他机器要求解析域名时,可以立即提供服务。一旦有关网域的局域域名服务器的缓存受到污染,就会把网域内的电脑导引往错误的服务器或服务器的网址。
域名服务器缓存污染可能是通过域名服务器软件上的设计错误而产生,但亦可能由别有用心者通过研究开放架构的域名服务器系统来利用当中的漏洞。

(GFW)防火长城对所有经过骨干出口路由的在UDP的53端口上的域名查询进行IDS入侵检测,一经发现与黑名单关键词相匹配的域名查询请求,防火长城会马上伪装成目标域名的解析服务器给查询者返回虚假结果。由于通常的域名查询没有任何认证机制,而且域名查询通常基于的UDP协议是无连接不可靠的协议,查询者只能接受最先到达的格式正确结果,并丢弃之后的结果。而用户直接查询境外域名查询服务器(如 Google Public DNS)又可能会被防火长城污染,从而在没有任何防范机制的情况下仍然不能获得目标网站正确的IP地址。用户若改用TCP在 端口53上进行DNS查询,虽然不会被防火长城污染,但可能会遭遇连接重置,导致无法获得目标网站的IP地址。

以上……维基

比如你想访问A网站,你的访问请求被XXX监测到后,XXX会提前返回给你一个其他的结果B------你本来想打开的是Google,打开后发现却是百度,或者直接给你一个404 NOT FOUND。

这方面方滨兴老师是个行家,您要是在北京,可以到北邮去跟他探讨一下GFW的工作机制……

肿么破?腿脚好的话就去翻墙吧,腿脚不好的话就等着墙倒吧。

0 0

万色返空龙举报狂魔,烙铁达人,代码烂人,大叔,中立守序

2013-05-08 12:04

解释就如 @猪了个去 说的。

现在很多家用的路由器——别用电信送的那些阉割版的——都有黑白名单功能
我是自己手动把广告服务器的IP加到黑名单里头

0 0

用FIREFOX和CHROME系,装个ABP,常见网站的广告基本都没了

0 0

冰火梦幻信息与计算科学学士,算法控,AI爱好者

2013-05-13 13:41

为什么价格是包含广告的更高?

0 0

这个看看GFW的实例就知道了,对google的污染曾波及全球

0 0

域名污染是指DNS服务器对于域名查询请求返回了错误的IP地址。

原因:DNS服务器是全球性服务,会自动同步每一个根DNS服务器的数据,当时我国由于封锁facebook之类的网址时直接把对于网站的域名查询定向到一个错误的IP地址,借此阻断国内对于facebook的访问。可谁知这条记录被其他的根DNS服务器同步过去,造成国际范围内无法正常访问facebook。

其实现在中国的DNS只是中国的DNS

查看更多

添加回答

登录 后回答问题,你也可以用以下帐号直接登录

相关问答

关于我们 加入果壳 媒体报道 帮助中心 果壳活动 家长监控 免责声明 联系我们 移动版 移动应用

©果壳网    京ICP证100430号    京网文[2018] 6282-492号    新出发京零字第朝200003号     京公网安备11010502007133号

违法和不良信息举报邮箱:jubao@guokr.com    举报电话:18612934101    网上有害信息举报专区    儿童色情信息举报专区