无处不在的劫持
利用饿了么2块钱的补差价就能划走用户支付宝的2000元、利用订购的机票信息,就能获取到用户信任,骗取财产、总是被跳转到一些自己不想访问的页面上、为什么总有那么多自己跳出来的广告?为什么一个正常的链接点进去之后会出现下载界面?我们的数据信息怎么就这么不安全?
对于普通用户来说,你的请求数据发出去以后,会经过哪里,最终去到哪里,怎么处理响应,这后面的一切都是黑洞。而对于想利用你的信息做坏事的人来说,每一个环节都是他们的机会。
先不说坏人通过爬虫、撞库等手段获取用户信息。最直接的我们数据接入的运营商都可能会对我们的数据分析监控。比如敏感信息信息的监控、涉黄涉恐信息的过滤,而我们能够感受到影响的可能就是网络劫持了。那么运营商为什么要做网络劫持,通过什么手段来做劫持,网络劫持的利弊在哪呢?
劫持的产生
近年来随着网上购物、直播、物联网、共享经济、人工智能等不断深入我们的生活,互联网行业取得飞速的发展。根据***的第40期《中国互联网发展统计报告》显示,截止2017年6月,中国互联网用户已经达到7.51亿,占全球网民的1/5。随之而来的是网络流量的不断增加,目前中国的国际网络出口的带宽已经高达8T,而国内用户产生的网络流量要远远大于这个数字。与之相对应的是中国复杂的网络环境。除了电信、联通、移动是比较大的网络接入厂商,此外包含长城宽带、鹏博士、教育网、科技网、广电等等不少于20多家的小运营商。而且各个省市是相互独立运营。这就会导致网络出现跨网、跨运营商的情况会特别多,基本上很难避免。而各个运营商之间的出口带宽不尽相同,这很能是成为网络高峰的瓶颈。同时这种大量跨网访问的流量,在运营商之间会产生一笔很大的结算费用。也就是说运营商之间的互通是需要收费的。
作为运营商,面对这么大的带宽流量。该如何保障用户体验,减小自身成本呢。于是,他们找到了网络劫持的方案。
劫持的原理
运营商劫持大致分为两种方式:
- DNS强制解析的方式
- 访问请求的302跳转。
DNS强制解析是通过修改运营商的本地DNS记录,来引导用户流量到缓存服务器。工作的方式如下:
- 用户通过域名发起访问请求;
- 请求通过本地DNS进行解析;
- 运营商DNS设置强制解析策略;即所有该域名的请求都解析到事先写好的服务器上;
- 终端用户到劫持服务器交互访问;
- 劫持服务器如果有需要的访问内容,则直接返回响应给用户;如果没有,则去源站同步内容。
302跳转的方式和DNS强制解析的方式主要在引流的方式上有所区别。内容缓存是通过监控网络出口的流量,分析判断哪些内容是可以进行劫持处理的。再对劫持的内存发起302跳转的回复,引导用户获取内容。其需要对上行的请求流量进行端口镜像或者分光处理。可以理解成复制一份上行的流量信息 。工作的方式如下:
- 终端用户发起访问请求;
- 流量通过网络出口对外发起访问;
- 访问流量被镜像一份给劫持系统的DPI设备;
- 4.DPI对流量进行分析判断,比如http get、80端口等数据
- 缓存系统判断是否热点资源,比如连续请求5次的相同内容;
- 给用户发送响应请求,告诉客户本地即是客户需要访问的内容;
- 由于本地的缓存系统离客户更近,所以客户更早收到缓存系统的响应;
- 用户和本地的缓存系统建立网络交互,源站的响应回来的晚,会自动断开;
- 如果本地有缓存内容,则给用户响应内容,如果本地没有,会计算访问次数。当达到响应的内容时。
劫持的影响
从两种运营商缓存的特点来看,二者都是通过获取用户的数据流量,引导用户访问内容缓存的服务器。区别在于引导用户的方式,DNS强制解析是通过修改域名解析记录,强制将域名下的所有请求引导到劫持服务器上。这种方式简单粗暴,也容易造成很多问题。比如域名下有动态内容,也会被缓存下来。这样会造成登录的串号的问题。缓存的内容更新不及时,访问的都是老内容。这也是很多用户所不能接受的地方。一些冷门资源的缓存,会造成存储的浪费。流量劫持的方式需要镜像用户流量,进行分析判断。缓存一些系统判断是可以缓存的热点内容。DNS强制解析主要针对图片,302跳转主要针对下载文件,音视频等大文件。
运营商应用劫持系统可以带来的好处是:
- 减少跨网传输的访问,减少运营商之间的网间费用结算。国内各个地区、运营商都是独立运营的,日常互联产生的流量是需要进行费用结算的。而这笔费用其实是一笔庞大的开销,而且需要持续结算。
- 大多数运营商之间的网络出口都在几十至几百G不等,内容缓存系统可以有效减小网络高峰时出口带宽的压力,这样既可减少对互通网络的扩容。减少网络建设的费用。
- 由于缓存系统可以支持本地化服务,在一定程度上也可以达到加快网络访问的目的,提升用户体验。
由于运维系统的人员不可能及时获取到劫持内容的更新,或者对劫持的内容做其他的,坏处是:
- 经常访问到过期的内容,文件更新缓慢。导致获取不到自己想要的信息。
- 跳转到其他网站页面,或者被插入牛皮癣广告。
为了减少运营商缓存和劫持带来的影响,目前很多企业开始使用HTTPS的方式。包括苹果公司之前要求所有的域名必须是HTTPS的,那么HTTPS能从根本上解决这类的问题吗?通过上面的分析,很显然并不能有效的得到解决。https因为使用了加解密的手段,保证内容被篡改的可能性被降低,但是从运营商劫持的原理上来说,并不能有效的降低被劫持的可能性。
【本文是51CTO专栏机构“岂安科技”的原创文章,转载请通过微信公众号(bigsec)联系原作者】