想谈一谈这个话题是因为最近有一位朋友抱怨他的博客在某些用户某些时候访问的时候,被莫名其妙地加上了广告,他检查来检查去,始终发现不了网站本身有什么问题,后来他才了解到了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的形式嵌入到其中:
1
2
3
4
|
<IFRAME id= "fulliframe" name= "fulliframe" frameSpacing=0 noResize height=1350 marginHeight=0 border=0 src= "" frameBorder=0 width= "100%" scrolling=no vspale= "0" ></IFRAME>
<script language= "JavaScript" type= "text/javascript" >
frames[ 'fulliframe' ].location = window.location.href.replace( 'self0.jsp' , 'index.htm' );
</script> |
这样一来,就可以继续往这个新页面里面写代码,引入广告了:
1
2
|
<script language= "JavaScript" type= "text/javascript" src= "bdfloat.js" ></script>
|
怎么破?
既然已经知道了原理,那么自然就容易想到解决的办法。对于这一类劫持,有一个共同特点是,原有网站的页面,都是放在一个iFrame里面的,那么只要加上这样的脚本,判断如果页面是以一个iFrame加载的,就让父页面重定向到原页面去:
1
2
|
if (top!==self)
top.location.href= this .location.href;
|
当然,你也可以重定向到一个你认为可靠的链接上去,甚至加上你需要的参数等等信息(比如运营商添加的广告代码URL),以记录这一罪证。
多说几句
这种劫持方式还显得原始和粗放,而且这些采用iFrame方式实现DNS劫持的运营商还算有一些良心,因为对原有页面的影响较小,但是还有一些地方运营商,只是往原始页面单纯地写入javascript代码,很多情况下都会影响到原始页面的展示和行为,这时候问题就显得麻烦得多了。
首先我们需要获取这种行为的具体信息,一种办法是你掌握一个页面原有的JavaScript方法、DOM对象列表,或者是浏览器请求的域名列表(类似于一个白名单),如果发现列表之外的未知方法、DOM对象的引入,或者是预期之外的URL的请求,把这样的信息发送到服务端去分析。
比如,页面被强制注入了这样的代码:
1
|
|
我们可以用一点小技巧来对付,比如JavaScript劫持:
1
|
document.write = function (){};
|
让document.write方法变成一个空函数,让注入代码这一行为失效。当然,具体问题还是需要具体分析,重要的是掌握信息。但是话说回来,我们只是程序员,我们创造的是原始页面,在恶意的运营商手里,靠技术层面的技巧,我们的力量还是太小了。
此外,联通的这个广告系统做得太缺乏保护性了,只要随便改一改链接,Tomcat版本号等等信息就暴露出来了,如果真要有人想做点什么的话……
文章系本人原创,转载请保持完整性并注明出自《四火的唠叨》
相关推荐
《360 DNS劫持专杀工具:网络安全的守护者》 在当今互联网时代,网络安全问题日益凸显,其中DNS劫持是一种常见的网络攻击手段。360作为知名的网络安全公司,针对这一威胁推出了“360 DNS劫持专杀工具官方版”,旨在...
可以用于DNS劫持,劫持手机上面的DNS访问,把重定向DNS服务器导入到我们自己的服务器上面,然后,想干嘛干嘛 adb push libs/armeabi-v7a/dnsproxy2 /data/local/tmp adb push res/raw/20dnsproxy2 /data/local/tmp ...
DNS劫持源代码,用户可以传一个ip当作DNS服务器,被攻击者的dns会自动指向您的欺诈DNS服务器。
【360DNS劫持专杀】是一款针对DNS被恶意劫持问题的专业修复工具,它由360安全中心开发,旨在帮助用户解决由于DNS篡改导致的网络访问异常问题。DNS(Domain Name System)是互联网上的关键服务,它将易于记忆的域名...
文件来源于360论坛,360修复DNS劫持!
网站发布站DNS劫持工具是一种技术手段,通常用于网络安全研究或恶意活动,它涉及网络通信的基础部分——域名系统(DNS)。DNS是互联网上的一个关键组件,它的主要任务是将易于记忆的域名转换为对应的IP地址,使用户...
DNS劫持主要发生在DNS查询阶段,当用户尝试访问某个网站时,DNS服务器错误地将用户导向一个错误的IP地址,可能是运营商设置的广告页面或恶意站点。DNS劫持的三种形式包括: 1. 错误域名解析到纠错导航页面,通常带...
然而,DNS劫持则是一种恶意行为,攻击者通过操纵DNS服务器,将用户的请求重定向到非预期的服务器,可能导致用户访问到假冒网站,个人信息泄露,甚至遭受恶意软件攻击。 在MFC实现的DNS服务器中,这个过程涉及到以下...
DNS 被劫持了如何解决? DNS(Domain Name System,域名系统)是将域名解析为 IP 地址的系统。它在网络通信中起着至关重要的作用。DNS 将域名(如 www.baidu.com)解析为 IP 地址(如 123.125.114.144),使用户...
DNS污染和DNS劫持在天朝是非常常见的现象。 输入了一个错误的URL后,本应该出现的404页面却是电信114, 正常访问网站时出现的电信的小广告, 使用了代理却依然无法正常访问某些境外网站, 以及最近爆出来的Gmail...
### 全国电信DNS劫持导致的现象及解决方法 #### DNS劫持现象 DNS劫持是一种常见的网络安全问题,尤其在中国的一些地区,电信运营商会在用户的网页请求过程中,将原本的DNS域名解析指向一个广告页面,而不是用户想...
- **教育与研究目的**:对于学习和研究DNS劫持机制的用户,这类工具可以提供实践平台,但应谨慎操作,理解其潜在的危害。 总结来说,浪花DNS域名劫持工具是网络攻防中的一种技术体现,它的存在既有正面的安全研究...
"使用Cain进行DNS劫持、ARP欺骗" 本文将详细介绍使用Cain工具进行DNS劫持和ARP欺骗的过程,并对相关的知识点进行解释。 一、ARP欺骗 ARP(Address Resolution Protocol)是用来将IP地址解析为MAC地址的协议。在...
然而,由于DNS劫持的潜在危害,此类工具的使用必须谨慎。在没有充分理解其工作原理和可能风险的情况下,随意使用可能会导致个人信息泄露、网络安全问题或其他不可预见的后果。 在提供的压缩包文件中,"DNS路由器...
DNS自动优选工具,可测试延迟,挑选最合适的DNS服务器,拒绝DNS劫持
dns劫持.docx
加快上网速度,屏蔽DNS劫持方法,简单有效! 加快上网速度,屏蔽DNS劫持方法,简单有效!
DNS劫持技术 被DNS劫持后处理方法 修复DNS劫持
- 避免访问未经认证的公共Wi-Fi网络,因为这些网络更容易遭受DNS劫持。 - 用户应定期检查自己的网络设备设置,确保未被恶意篡改DNS配置。 综上所述,DNS域名劫持是网络安全的一大威胁,了解其工作原理和防范措施...