网页劫持

当我们在手机上访问网页时,经常会看到一些不属于网页本身的内容,常见的是在网页中加入一些别人的广告,这种情况很明显是被劫持了。如果调试网页的话,大概会出现类似于下面的网页代码:

<script type="text/javascript" id="wf_float_url" src="http://ssp.0531kt.com/l7.js"></script>
<link rel="stylesheet" href="http://api.youxiaoad.com/css/adnoclosedown.css" type="text/css">
<script src="http://api.youxiaoad.com/js/adapi.js" type="text/javascript"></script> 

很明显,这就是广告服务商提供内容的地方了。那它是怎么来的呢,下面我们就先分析下网页劫持的种类吧。

网页劫持的分类

网页劫持是目前黑帽SEO或者说黑产最喜欢的一种网页引流方式,此手法往往通过入侵网站,修改网站源代码、放寄生虫程序、设置二级目录反向代理等实现。网页劫持可以分为服务端劫持、客户端劫持、百度快照劫持、百度搜索劫持等等;表现形式可以是劫持跳转,也可以是劫持呈现的网页内容,目前被广泛应用于私服、博彩等暴利行业。 大致分类如下:

1、被浏览的网站域名泛解析

所谓“泛域名解析”是指:利用通配符* (星号)来做次级域名以实现所有的次级域名均指向同一IP地址。在域名前添加任何子域名,均可访问到所指向的WEB地址。也就是客户的域名#.com之下所设的*.#.com全部解析到同一个IP地址上去。比如客户设1.#.com就会自己自动解析到与#.com同一个IP地址上去。

域名恶意泛解析则是域名被黑客或其它别有用心的操作并泛解析到其它服务器上制作许多垃圾页面。这些被恶意泛解析的页面大多数为赌博、足球等恶意非法内容。

域名被恶意泛解析后,会对网站的权重和流量有直接性的影响,导致权重降低,流量减少。进而导致恶意信息被收录,被误认为是恶意欺诈性非法网站,不利于网站的用户体验。如果恶意泛解析如果不能及时处理,则会对网站SEO及用户体验造成致命的影响。

对于此问题,首先是检查域名解析是否被泛解。看见恶意域名泛解析后不要删除泛解析, 先修改泛解析(*.xxx.com)到自己的服务器IP上;然后,修改域名账号密码。域名被恶意解析,肯定是账户密码信息泄露或者是dns域名服务器被攻击,避免再次被修改;之后是制作404页面。因为泛解析被修改,之前百度收录的内容用户无法访问,通过404处理降低损失,提高用户体验。当然,如果已经收录的泛二级域名太多而不好处理时,可以将被恶意泛解析的域名重新解析到自己的空间,统一处理成404错误页;最后向百度站长提交死链。统计百度已收录的恶意二级页面链接地址(可以使用抓取工具提取),最后制作成一个txt格式的文件上传到网站空间,在百度站长工具里提交给百度处理。

2、用户浏览的浏览器被劫持

当你打开一个浏览器进行网页内容浏览的时候,这个网页会自动出现一个浏览器的广告新闻,实际上浏览器本身没有投放任何的广告,这个是被别人恶意利用劫持了浏览器,只要用户打开浏览器就会蹦出来这个广告。

3、黑客入侵

黑客入侵就是把用户所浏览的网站给侵入后植入一些木马程序,也就是我们平时所说的黑客入侵,挂马,把你的网站植入一些寄生虫病毒等。本来想进入“京东”的网站,结果进入了“天猫”的网站,那么这个就是被黑客入侵了。很多是黑客入侵这个主站以后,在他的上面挂上了木马病毒,寄生虫病毒等,这个东西不会长久,但是会不停的繁衍更新,可能你搜索完这次,展现给你,下次你再搜索,它又在这个网站的另外一个页面出现。

4、运营商劫持

假设你的页面不是泛解析,也不是你网站程序被黑客侵犯,那么就归于这个“不可描述”的劫持了,也就是运营商被劫持了,网页被非法的修改拦截了。使用HTTP请求请求一个网站页面的时候,网络运营商会在正常的数据流中插入精心设计的网络数据报文,让客户端(通常是浏览器)展示“错误”的数据,通常是一些弹窗,宣传性广告或者直接显示某网站的内容。

用户浏览的浏览器被劫持和运营商劫持同属于客户端劫持,大概分为以下类型:
I、跳转型劫持:用户输入地址A,但是跳转到地址B。如常见的header劫持:

<meta http-equiv=“refresh“ content=“10; url=http://thief.one“> 

利用的就是Meta Refresh Tag(自动转向),将流量引走。

II、注入型劫持:在正常的网页中注入广告代码(js、iframe等),实现页面弹窗提醒或者底部广告等。
   1),注入js类劫持:在正常的页面注入js代码实现劫持。
   2),iframe类劫持:将正常网页嵌套iframe或者页面增加iframe。
   3),篡改页面类劫持:正常页面出现多余的劫持网页标签,导致页面整体大小发生变化。

客户端劫持的实现方式

客户端劫持的实现方式有链路劫持攻击等,TCP链路劫持其实就是指网络链路上侦听、伪造TCP包,达到控制目标网络链路的行为。最常见的就是某些设备实现的对非法站点的访问拦截,以及一些地区运营商的网页植入广告行为。目前发现的TCP链路劫持攻击一般有两种形式:中断访问型(分为单向发包和双向发包)和替换页面型。

防范链路劫持比较困难,毕竟攻击者控制着网络链路。不过并非不可能,一是网站全程使用SSL,再一个就是在客户端或(和)服务器丢弃伪造的TCP包。在通常的运营商的劫持中,运用https加密,可以使劫持下降90%左右!

当然,除此之外,还可以检查目标的HTTP响应头是否设置好了X-Frame-Options字段确保自己网站的内容没有被嵌到别人的网站中去,也从而避免了点击劫持的攻击。

deny:标示该页面不允许在 frame 中展示,即便是在相同域名的页面中嵌套也不允许
sameorigin: 表示该页面可以在相同域名页面的 frame 中展示。
allow-from uri:表示该页面可以在指定来源的 frame 中展示。

还可以检查目标网站是否有javascript的Frame Busting机制。通常可以写一段JavaScript代码,以禁止iframe的嵌套。这种方法叫frame busting。如:

if ( top.location != location ) { 
 top.location = self.location; 
}

但是frame busting也存在一些缺陷。由于它是用JavaScript写的,控制能力并不是特别强,因此有许多方法可以绕过它。比如针对parent.location的frame busting,就可以采用嵌套多个iframe的方法绕过。此外,像HTML 5中iframe的sandbox属性、IE中iframe的security属性等,都可以限制iframe页面中的JavaScript脚本执行,从而可以使得frame busting失效。

客户端过滤

对于网页劫持,客户端所能做的非常有限。现在iOS端一般使用WKWebView实现网页的加载,目前的处理方式大概有两种,一种是具体问题具体分析,一种是使用内容过滤规则。

对于第一种方案,如果网页中被加入了广告,首先分析当前展现的网页源码,找到问题所在,具体分析。一般就是做一些对应的JS处理。实现起来并不是很好。

对于第二种方案,iOS11后WKWebView增加了内容过滤规则。原理上就是提供一个 JSON 给 WebKit,这个 JSON 包括内容的触发规则(trigger)和对应的处理方式(action),WebKit 会把拦截规则编译成高效的二进制码。

可使用的处理方式有,block:放弃加载资源,如果该资源已经缓存也忽略缓存;block-cookies:所有发送的请求的header中都会过滤掉cookie;css-display-none:隐藏使用 CSS selector 的页面元素,同时还有关联的selector;ignore-previous-rules:前面触发的规则不执行;make-https:把网页里的 http 请求改为 https 请求。

可以通过配置规则拦截页面里的资源请求、隐藏页面里的指定元素、将http请求转换成https等,实现以前的广告过滤的功能。

因为这个功能是iOS11加入的,对于iOS11之前的设备可以参考adblock的实现。有机会了下次再聊。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,772评论 6 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,458评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,610评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,640评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,657评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,590评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,962评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,631评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,870评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,611评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,704评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,386评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,969评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,944评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,179评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,742评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,440评论 2 342

推荐阅读更多精彩内容