主要的网络劫持形式:
近年来流量劫持(运营商网络劫持)频频发生,各种方式也是层出不穷,易维信-EVTrust总结各种网络劫持现象和其带来的危害

1、域名劫持,用户想要访问网站A,域名却被解析到其它地址,用户无法正常访问想要访问的页面,网站流量受损。如果域名被解析到恶意钓鱼网站,导致用户财产损失,例如网上用户本来想要访问某知名的金融网站,却被跳转到另一个见容极为相似的假冒网站,从而套取用户数据,导致企业与用户损失惨重。

2、运营商网络劫持有的会在网站弹出广告,不是所有网站都会弹,一般大型门户网站什么的不弹,这样会让人以为是某些网站本来就会毕弹窗,这会直接影响到公司运营的网站在用户心中的信誉,损害公司利益。即使更改DNS也会弹,一般大家会想到DNS劫持,现在运营商变更聪明了,用网关劫持,用户所有流量都难逃魔掌。尤其是部分运营商,越来越为所欲为,某家受影响严重的企业到工信部投诉后,他可能会道歉改整,不久后又开始耍流氓。

3、随着网络的不断发展,近年来基于Web的App(B/S架构应用程序)发展的如火如荼,但其底层协议始终没有太大的改进 —— HTTP,一切都是明文传输的,流量在途中可随心所欲的被控制。而在线使用的WebApp,流量里既有通信数据,又有程序的界面和代码,对于各路黑客,劫持简直轻而易举。

4、 不安全的Wi-Fi和cookie无处不在,公共场合(例如公共WiFi或网吧的电脑)使用HTTP,不登陆也会被劫持,在自己的设备上,大家都会记住各种账号的登录状态,反正只有自己用,也没什么大不了的。然而,在公共被劫持的网络里,即使浏览再平常不过的网页,或许一个悄无声息的间谍脚本已暗藏其中,正偷偷访问你那登录着的网页,操控起你的账号了。

如何预防各种网络劫持,避免这些危害呢?
安装SSL证书,实现HTTPS加密。不同于简单的Http代理,HTTPS 服务需要权威CA机构颁发的SSL证书才能达到非常好的效果。自签证书浏览器不识别,而且会给予严重的警告提示。而遇到“此网站安全证书存在问题”的警告时,大多用户不明白是什么情况,就点了继续,导致允许了黑客的伪证书,HTTPS 流量因此遭到劫持。如果重要的账户网站遇到这种情况,无论如何都不该点击继,否则大门钥匙或许就落入黑客之手。自签证书是指不受信任的任意机构或个人,自己随意签发的证书,容易被黑客伪造替换。

做全站HTTPS对于预防网络劫持重要性吗?
情况一:从http页面跳转访问https页面,事实上,在PC端上网很少有直接进入 HTTPS 网站的。例如支付宝网站,大多是从淘宝跳转过来,而淘宝使用的仍是不安全的 HTTP 协议。如果在淘宝网的页面里注入 XSS,屏蔽跳转到 HTTPS 的页面访问,用 HTTP 取而代之,那么用户也就永远无法进入安全站点了。尽管地址栏里没有出现 HTTPS 的字样,但域名看起来也是正确的,大多用户都会认为不是钓鱼网站,因此也就忽视了。因此,只要入口页是不安全的,那么之后的页面再安全也无济于事。

情况二:http页面重定向到https页面有一些用户通过输网址访问的,他们输入了某个网址就敲回车进入了。然而,浏览器并不知道这是一个 HTTPS 的站点,于是使用默认的 HTTP 去访问。不过这个HTTP版的支付宝的确也存在,其唯一功能就是重定向到自己 HTTPS 站点上。劫持流量的中间人一旦发现有重定向到 HTTPS 站点的,于是拦下重定向的命令,自己去获取重定向后的站点内容,然后再回复给用户。于是,用户始终都是在 HTTP 站点上访问,自然就可以无限劫持了。

国内外各大知名网站(PayPal,Baidu,95516.net,Facebook,Gmail,Hotmail等)都通过通配符SSL证书来保证用户机密信息和交易安全,防止会话攻击和中间人攻击。从上面的各类劫持案例中,我们可以看出,Https是很有效的流量劫持防范措施,无论是网络服务提供商还是广大网民,为咱自己的帐户安全和权益,都要形成使用https访问网站的习惯和意识,重要的网站必定使用 HTTPS 协议,登陆时需格外留意!
---------------------

怎么屏蔽掉在移动端的宽带运营商的流量劫持,屏蔽无耻的广告

自从住进了租房以来,在使用租房的宽带的时候总有个问题,已经几个月了,今天我实在无法忍受这些广告了。决定要整治这些劫持广告。
一开始想到用socks5代理,需要自己租服务器,而且很麻烦,而且我研究了下劫持的页面,并且从网上也发现了一些其它用户遇到的问题。
这里有一个链接:
http://bbs.kafan.cn/thread-1856999-1-1.html
上面这个链接详细描述了劫持的毒害。。。。

我主要遇到下面几个类型的劫持:
类型一:输入百度的时候,后面会自动被加上尾巴然后进行跳转。尤其是输入www.hao123.com的时候,会跳转到http://www.hao123.com/?tn=94150859_hao_pg

但是如果你使用https://www.baidu.com是没法跳转的,建议大家修改自己的chrome的浏览器的默认搜索引擎,加上https,还好百度开启了https,这时候我深感推广https的重要性。没有https的话,这些运营商想怎么改你的网页就怎么修改。

类型二:就是常见的右下角广告了,这个还好解决,装上adblock plus就可以一劳永逸了。

但是真正让我苦恼的是下面的类型三:

类型三:手机访问网页的时候,运营商会根据你的UA来植入广告,这个广告是和pc上浏览器的是不同的。
这个广告是类似于我们玩手游的时候,在网页中间插入一个广告悬浮窗达到目的。。。这移动端的广告还真是与时俱进啊

下面自己感受一下这个广告,我有强迫症的简直无法忍受。

点开右侧那个悬浮广告,就会出现下面这个了:

再看一下下面的声明,多么无耻,没有下限啊。。。

还无毒,你知不知道你造成了骚扰啊。
这个玩意的毒害真的太大了。
主要是使用了WebView的app,app在用webview加载网页的时候,此广告都会识别浏览器中携带的ua信息,自动植入。。。
我看的今日头条app在我租房的wifi下基本无法使用,今日头条很多h5的页面,被强行修改了页面内容。无法浏览。
同时查看微信公众号的东西,中间同样出现悬浮窗,我不理解为什么微信不尽早使用https。

后面我开始想办法解决这个毒瘤了。
既然你是通过ua识别的,首先我通过chrome的device mode,设置为nexus7设备访问,刷新几次页面之后,如愿所偿的出现了广告。
于是我修改ua(chrome在device 模式下的ua是可以修改的),将ua修改为f u c k。

果然没有移动广告了,但是右下角广告就出现了。。。
好吧我不修改ua,在ua后面加入足够多的乱码。经过一番测试,加到500多个没用字符之后,不再出现广告了。

个人理解为:这个劫持商要劫持那么多用户,肯定对http header的长度有所限制,超出这个限制之后,它就不会再劫持了,否则他自己的服务器压力也很大的。

到此,这个方案已经有效了,接下来是怎么运用到android平台上。
这时候需要用到一个android上的神器框架xposed。不了解的读者可以自行百度一下。

思路:使用xposed框架hook webView控件的loadUrl,在loadUrl之前将webView的ua修改为足够长。
我的xposed代码很简单,几行就解决了这个劫持问题了。

public static final String ua="Mozilla/5.0 (Linux; Android 4.3; Nexus 7 Build/JSS15Q) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2307.2 Safari/537.360123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199"; 
	@Override public void handleLoadPackage(LoadPackageParam lpparam) throws Throwable { // TODO Auto-generated method stub XposedHelpers.findAndHookMethod("android.webkit.WebView", lpparam.classLoader, "loadUrl", String.class,new XC_MethodHook() { @Override protected void beforeHookedMethod(MethodHookParam param) throws Throwable { // TODO Auto-generated method stub Object thisObj=param.thisObject; if(thisObj instanceof WebView){ ((WebView) thisObj).getSettings().setUserAgentString(ua); } } }); }

上面的ua,是找到一个移动端适用的ua,然后后面加上500多个没用字符。移动端ua是一定要的,我发现如果我没用移动端ua的话,有些app是会拒绝加载的,因为他们需要ua里面的Android这个关键字。

CSP -- 运营商内容劫持(广告)的终结者


评论关闭
IT干货网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!

外行人都能看懂的 Spring Cloud