浅谈网站流量劫持防范措施

标签: 网站流量 劫持 | 发表时间:2012-12-23 16:09 | 作者:EtherDream
出处:http://www.cnblogs.com/index-html/

  前几天上网打开163首页时,发现页面底部莫名其妙的出现一个边框。这在以前可是未曾有过的,而且以后也绝不可能会有这么丑陋的设计。

  趋于好奇心,立刻在边框上点了右键审查元素。尼玛,不看不知道,网易首页的HTML何时变得这么劣质了?

  没有doctype声明,连title元素都没有。script还是language=JScript风格,这得追溯到多少个世纪前了~ 最劣质的是框架居然还是<frameset>元素。。。

  

  不用说,这显然不是网易的页面。页面里的ad字样,早已深深的出买了它,这就是个广告页面!

 

  话说生在天朝,对于各种劫持早已司空见惯。

  在网页里劫持广告,油价2块钱一升的时代就有了,过了世界末日依旧存在,说明其中的利益是巨大的。

  不用计算,用手指估算下就知道了。我朝有好几亿电脑和手机用户,每天有无数个网页被打开。哪怕在1%的网页里插一个广告,都有数百上千万次的展示数量,其中的商机不言而喻。。。

  尽管对此有些无奈,但只要插入的广告不影响正常上网,也没什么意见。如果水平够高,完全可以伪装成页面里本来的广告,至少形式上一样,看不出任何的破绽。这样非但不BS,反倒会有些佩服。

  然而,至今见过的各种广告劫持代码,简直一个比一个劣质。这一次见到的,算是垃圾中的战斗机了。随便找个网页编辑器,自动生成的HTML也比这强多了,再随便找些css稍微修饰下,完全就不会被一眼看出是山寨套牌网页了。尼玛的这本身就是暗地里的干活,却没有任何简单的加密混淆,还光明正大的明文写着广告字样,这不是赤果果的秀智商下限吗?

  不过今天既然花时间吐槽这破玩意,就干脆再深入的讨论讨论未来可能还会出现的变招。

  

  

Lv1. 当前最常见的:把被劫持的网页套在自己的空壳里。

  其实这样做的目的很明确,让广告显示在浏览器的最上方。一般为了达到这个效果, 会把广告显示在页面的右下角,盖住被劫持页面的滚动条,看起来就像是浮动在浏览器之外一样!

  这招够狠,乍一看,还真以为是QQ之类的软件弹出的消息框呢。不过 只要把浏览器窗口退出最大化,顺便再拖一下窗口,广告也跟着动起来了:)假李鬼就瞬间原形毕露了!

  

防范措施

  这种劫持毫无技术含量可言,反劫持也相当容易。只要在自己网页里验证下window.top,是不是在合法的URL列表里。如果不是,那就不允许被内嵌在其他网页内。更好的办法就是把top地址提交到后台服务器上,统计下究竟有哪些网站套了自己的页面。

   

Lv2. 在返回网页里插入外链<script>

  这种做法相比之前的,要隐蔽的多,至少不会把人家网页的源文件给替换了。

  当然,如果仅仅是在网页的最后面插入<script>,那还是能被瞬间揭穿,甚至会报毒,因为这太山寨了!有哪个正常的网页会在</html>后面跟内容呢?只有挂马的脚本。。。

  不过,要是放对地方,还真不能一眼看出。例如把广告的<script src="">插在<head></head>其中的密密麻麻引用外部js的地方,至少能混上一段时间了。

防范措施

  一般来说,插入的<script>大多都是外链形式的,这样广告变换会比较灵活。对于这种劫持,就要使用类似杀毒软件扫描可疑模块的原理。

  广告不管怎样插,最终都会以静态HTML留在网页里,这是不容抹去铁证!

  当我们的网页HTML加载完毕,触发DOMContentLoaded时,我们可以开始扫描一遍DOM内所有的<script>标签。如果发现有不在信任列表里的src,那么网页很有可能被注入了可疑的脚本!

  我们可以提交可疑脚本的url到后台服务器,做进一步认证。如果确实有风险,那么必须弹出警告框提醒用户。

  

Lv3. 在返回网页里插入内置<script>

  相比外链的脚本,内置的就棘手的多。外链的url域名的总是那么几个,可以简单的实现过滤。但内置脚本就千变万化了!随机变量名,插入废代码,各种玄乎。。。不过,魔高一尺,道高一丈~

防范措施

  想最简单的对付这种劫持,我们必须预先默认个规定,来识别真假脚本元素。我们给自己的<script>元素设置个固定的标签,例如<script myjs="true">。当然具体的标签名和值是经常变动的,对于劫持程序来说,显然不知道会有这么个规矩,仍然傻乎乎的插入<script>...</script>。

  于是在之后的"肃反运动"中,可以直接清洗掉了。。。

  

Lv4. 在返回网页的<script>里混入广告代码

  随着劫持程序不断升级,招数会变的越来越狠。说不定某天,劫持程序内置一个html语义分析器,智能的把广告脚本合并混淆到页面原先的js里!

  若要真是这样,那么之前说的给自己的脚本元素加上特征码也无济于事了。因为特务已深深的混入到了我们内部,真真假假很难被识别!

  最致命的是,脚本未必都是放在<script></script>,也有可能是<element onxxx="">的内联形式。。。这下麻烦大了,我得想想怎么解决。。。

防范措施

  对于这种情况,还真找不到一个简单的方法来识别。唯一能走通的路,就是在发布HTML时,记录下文件的Hash值。可以把值写入网页,或者存在数据库里。

  当网页内容加载完成时,我们通过ajax再次读取当前页面的内容(一般来说读的就是当前页面的缓存数据)。通过同样的算法算出页面的校验值,和原始值一比对,就知道页面是否被第三方篡改了。

  我们还可以把篡改过的html发到后台,找出字符串差异部分,让技术人员分析分析到底做了哪些手脚。

  当然,这只限于静态网页。

  

Lv5. 在返回网页的外链脚本里混入广告代码

  这招可算是终极篇 ———— 它完全不修改任何HTML内容!

  然而,一般的网页多多少少要外链几个js文件吧。于是,那些外链的脚本就成了香饽饽的肥肉被盯上了!

  当然也可以像验证html那样,事先计算出所有的js文件的hash值,然后再使用ajax重新读数据认证比对。

  不过可别忘了,外链js的路径可以是任意的,而ajax只能读取同源站点。而且,外链的<script>也无法读取其text内容。于是当我们使用站点外的js文件时,劫持程序可以肆无忌惮的从中混入代码!

防范措施

  由于受到沙箱策略的严格控制,我们根本无法获得外部js内的实际内容,所以:走为上。尽量不使用外部站点的js文件。

  对于自己站点,但不是同个域名的,可以使用Flash的URLLoader跨域加载,只需部署一个crossdomain.xml即可。

  

Lv6. 把返回网页的图片内容替换成广告图片

  这样的流量劫持已经超越人类了,赶紧派一个神做了它吧。。。

防范措施

  理论上,完全可以解决。事实上,也没问题,只是工作量巨大。。。

  不过外链图片不管同源还是跨域的,都可以由Flash直接读取,所以可以和html和js一样,我们使用文件二进制的Hash比对,同样可以验证图片数据是否被劫持。

  当然要事先要计算出站点下或外链图片的hash值,客户端也要分析出当前页面里用到的图片,并逐个验证。这不得不说是个蛋疼的过程。。。

  

  ============================================

  暂时就YY到这里,以后有新的想法或更好的解决方案,继续来这里补充。

  大家有什么巧妙的检测方法,欢迎留言~

  上面说了一大堆,其本质无法就是在客户端,把使用到的资源和服务器原始资源二进制校验,将出现问题的资源反馈给后台记录,找出安全隐患。

  虽然这里假象嵌入的仅仅是广告脚本,然而这种脚本拥有和页面内其他脚本一样的权限,因此可以轻而易举的获得用户的cookie。

嵌入的脚本甚至可以通过WebSocket连接到黑客控制台,发送你的鼠标和键盘的一举一动,以及页面上显示的内容;对方还可以远程控制,让js在页面里悄悄执行各种意想不到的操作。。。

本文链接

相关 [网站流量 劫持] 推荐:

浅谈网站流量劫持防范措施

- - 博客园_EtherDream の 原创空间
  前几天上网打开163首页时,发现页面底部莫名其妙的出现一个边框. 这在以前可是未曾有过的,而且以后也绝不可能会有这么丑陋的设计.   趋于好奇心,立刻在边框上点了右键审查元素. 尼玛,不看不知道,网易首页的HTML何时变得这么劣质了.   没有doctype声明,连title元素都没有. script还是language=JScript风格,这得追溯到多少个世纪前了~ 最劣质的是框架居然还是元素.

网站流量异常变动的8种常见原因

- Demi - 蓝鲸的网站分析笔记
网站分析中,最常见的一项工作就是对流量的异常变化进行分析和解释.今天网站的流量变高了,为什么. 后天网站的流量降低了,又是为什么. 对网站有什么影响?这些都是等待我们去回答的问题. 蓝鲸网站分析笔记 Original Source. 通常在遇到这种情况时,我们会先进行定量分析,通过细分找出具体发生异常变化的那部分流量.然后再进行定性分析,找出这部分流量发生异常变化的具体原因.第一步的工作相对简单一些,通过google analytics的细分功能逐层剖析,就可以找到原因.而第二步的工作就有些难度了.因为数据本身只能说明发生了什么,却不能告诉我们为什么,所以,真正的原因需要我们自己去寻找..

二线电子商务网站流量分析

- Eric - 月光博客
  本文并不想分析那些一线知名电子商务网站,而是从一些不知名的电商网站进行分析,看看这些小电商网站的流量来源到底是哪里. 以下是这些天我分析和查询的一些流量较高的二线电子商务网站,其流量数量,收录数量,搜索关键字来源,以及其网站流量排名的分析,分析时间是今年年初.   在网站流量分析报告中,主要以Alexa排名为基准,排列对比二线的电子商务网站,在电子商务市场竞争白热化的今天,如果不烧钱做广告做营销,是很难获取大批用户的,但是,这些二线电商网站是如何积累流量的呢.

CNZZ网站流量统计原理简析

- - CSDN博客推荐文章
这是我的域名www.iyizhan.com,暂无内容,其中只有一个页面index.html,. 在index.html上放置了如下的 js 脚本:. 1.当用户访问这个页面时,会请求src,对应的是上面的脚本的源文件:. id:5364825 //网站id. web_id:5364825 //网站id.

HTTPS劫持研究

- - FreeBuf互联网安全新媒体平台
这篇文章描述了我们对哈萨克斯坦政府实施的电信级HTTPS劫持的分析. 哈萨克斯坦政府最近开始使用一个假的根证书颁发机构,对包括Facebook,Twitter和Google等网站在内的HTTPS连接进行中间人(MitM)攻击,在此文中,我们给出了还在进行中的研究的初步结果,以及哈萨克劫持系统中新的技术细节.

Compete:2009年6月-2011年6月美国黄色网站流量数据

- ddtd - 中文互联网数据研究资讯中心
2011年9月9日黄色网站数据图表,彻底将男淫们带回了学生时代. 看黄色网站数据图表,黄色网站 YouPorn,曾经的王者已经没落,而最新的 PornHub网站,简直就是黄色网站版 Youtube,月独立访问用户 2570万,数据来源于 Compete,美国媒体 SAI 图片制作. 下图是黄色网站的独立用户访问数据图表,PornHub 第一,redtube youporn 等几乎部分彼此.

漫谈流量劫持

- - WooYun知识库
在鼠标点击的一刹那,流量在用户系统中流过层层节点,在路由的指引下奔向远程服务器. 这段路程中短兵相接的战斗往往是最激烈的,在所有流量可能路过的节点往往都埋伏着劫持者,流量劫持的手段也层出不穷,从主页配置篡改、hosts劫持、进程Hook、启动劫持、LSP注入、浏览器插件劫持、http代理过滤、内核数据包劫持、bootkit等等不断花样翻新.

Kaggle网站流量预测任务第一名解决方案:从模型到代码详解时序预测

- - 机器之心
近日,Artur Suilin 等人发布了 Kaggle 网站流量时序预测竞赛第一名的详细解决方案. 他们不仅公开了所有的实现代码,同时还详细解释了实现的模型与经验. 机器之心简要介绍了他们所实现的模型与经验,更详细的代码请查看 GitHub 项目. GitHub 项目地址:https://github.com/Arturus/kaggle-web-traffic.

美国ISP劫持Google搜索结果

- 龙 - Solidot
squarefw 写道 "The New Scientist报道,多家美国ISP劫持了用户在搜索引擎里的搜索,将搜索结果重定向以便谋取利润. 当一位用户搜索“Apple”的时候,他的ISP会将其重定向到一个支付了佣金的商户网站上,重定向的网站甚至跟搜索关键字毫无关系. 好比说有人搜索“WSJ”想看华尔街日报的网站,但结果可能会打开一个推销Amazon Kindle阅读器的网站.

Activity劫持与用户防范

- - ITeye博客
本文内容多参考于网上博文,但代码及用户防范的方法均属原创,转载请注明出处 http://msdxblog.sinaapp.com/?p=623. 1、Activity调试机制. 在android系统中,不同的程序之间的切换基本上是无缝的,它们之间的切换只不过是Activity的切换. Activity的概念相当于一个与用户交互的界面.