ISP的劫持手段真是花样百出,从以前的DNS(污染)劫持到后来的共享检测,无不通过劫持正常的请求来达到他们的目的。

之前分析过通过劫持HTTP会话,插入iframe来检测用户后端有无共享行为,但后来移动终端的发展导致ISP开始有所收敛,因为即使检测出来也不敢断用户的网了。

可是现在又出了新的花样……

最近,每当我打开baidu首页的时候,总是发现奇怪的现象,明明输入的只是www.baidu.com,但是却莫名其妙的出现了跳转,最后发现实际访问的URL竟然带上了尾巴。

好吧,起初我以为我又被流氓软件盯上了,但左思右索使劲翻遍也没发现什么被弓虽女干的迹象,只好打开虚拟机来试试,结果发现我干净的虚拟机也出现了一样的现象。

这时我才明白,又被电信劫持了,那么这次又是怎样的劫持手段呢?


被劫持的现象


首先,我们看看现象:

当我们打开www.baidu.com的时候,浏览器最终的目的URL却变成了http://www.baidu.com/?tn=90509114_hao_pg

这中间明显感受到了页面的跳转,那么我们看看浏览器上的后退按钮,就发现了端倪。

http://112.124.105.244/jmp?m=redirect&src=szdx-baidu

咦,这是什么地址,看起来就像劫持的玩意,再仔细一看,szdx(深圳电信),真是自报家门,毫不忌讳啊!


劫持的原理


那么电信是如何劫持了我们正常的百度请求呢?

经过检查,DNS是正常的,没有问题,那就说明这是HTTP链路层劫持了。

果断抓包,进行一次被劫持的会话,很快就有了。

咋一看,请求的服务器IP没有错,似乎没什么问题,但仔细一看问题就有了。

内容完全就不是一回事,这玩意怎么可能是百度返回的嘛,显然是被赤裸裸的劫持了。

继续深挖扩线,看看究竟在哪被劫持了。

先看看正常的百度响应。

唔,人家的服务器可是BWS(BaiduWebServer)呢!

那么就说明,我的HTTP会话被劫持了,收到了伪造的响应,回头再从被劫持的TCP流中寻找痕迹。

没错,我们找到了这个相当关键的细节!

我们在收到伪造的响应后,又收到了一个被认定为“伪造的重响应”数据包,而这个数据包正是我们这次请求真正的响应。

但此时,这个数据包已经视为无效了,观察SEQ和ACK编号即可发现其手段(TCP原理,请参考RFC#3708)。

为了证实这个是伪造的响应,我们知道一个人可以伪装成任何样子,但是其指纹可不是随便就能改变的。

HTTP工作在应用层,应用层就是一个人的外貌,想换成什么样子都行,但是IP层(网络层)所在的操作系统可就是指纹了。

我们先看看我这到正常百度服务器的IP包TTL值为54,这是一般不会改变的,即使路由不同,其波动也不过±1、2

然后再看看被劫持的响应IP包TTL值竟然为252,这就证明了不仅被非法劫持了而且这黑手离我仅几步之遥!

科普:不同的操作系统环境TTL值一般是固定的一个数,常见的是16的倍数,然后每经过一个节点减1。

顺水推舟,揪出元凶。先看看我这到百度服务器经过了哪些网络节点。

嗯,然后我们ping一下百度服务器,确认其TTL为54,与上述一致。

然后我们ping一下3号节点,TTL值为253,没有问题。

接着我们ping下一个5号节点,TTL值为251,也没有问题。

那么TTL为252的4号节点,显然就是劫持我们的元凶了,可是人家早就不让ping了,呵呵。

根据电信的网络结构,2、3号节点算是DSLAM接入、汇聚层集,那么4号节点显然是在城际骨干网前面插入类IDS系统的节点了。

由此证据链已经完整,我们可以得出一个结论:HTTP劫持就是ISP所为。


劫持的动机


事物的存在肯定有其必然性,既然现在不检测共享了,那么为什么要劫持咱们的百度请求呢?

业内人士都应该知道,百度和hao123这类网站都有联盟存在,联盟的作用就是推广,带来流量。

加尾巴的行为,就是在做这种事情。

就深圳的居民用户数来说,按一天100W的保守访问计数来说,假设100元/W访问付费,那么一天下来,ISP就有了1W元的收入,那一个月就有30W的额外收入了。

假如通过这种方式,劫持各种购物网站,加入自己的推广,按一天成交额100W,平均返利1%计算,这又是一天1W元的收入,那一个月又有30W的额外收入了。

所以这种仅仅只需要对HTTP请求的host参数判别进行劫持就可以坐着收钱的事,谁都何乐而不为呢?

记住上面只是保守计算的例子而已,谁知道将来还有其他的什么东西?

至于这个行为是ISP的行为还可以理解,但如果是某些员工的个人行为私自牟利那我认为这就玩大了,但无论是哪种,粗暴侵犯用户通信自由,都是违法行为!

建议出现这种现象的用户,果断向ISP示威,必要时可找工信部。


坚强的后盾


好像遗漏了一点,112.124.105.244这是何方神圣,为何能承载深圳电信数以万计的请求量?

  1. inetnum: 112.124.0.0 - 112.124.255.255
  2. netname: ALIBABA-CN-NET

这个IP来自杭州,查询IP信息发现,原来是阿里云的服务器。

加之这个服务器只是跳转功能,用的是ATS(Apache Traffic Server)服务器,所以区区几百万的小流量还真不算什么。

为了尽可能的让用户感受不到被劫持,保证速度是关键,看得出人家选择阿里云也是用心良苦啊!


向劫持说不


那么我们怎么防范劫持呢?

很遗憾,还真没办法预防。

唯一可行的预防方法就是尽量使用HTTPS协议访问。

目前,我们知道其劫持原理后知道只能通过检测TTL的变化或HTML元素检查来判定,但这都不是一般用户可以解决的。

不过,根据目前的情况,我们可以考虑在边界设备针对TTL为252且为TCP协议的包做DROP处理,切记不能REJECT。
(以普通居民用户的网络来说,TTL为252的TCP响应几乎不可能存在,所以特异性还是比较突出的)

但治标不如治本,还是去投诉吧!

安全-分析深圳电信的新型HTTP劫持方式的更多相关文章

  1. 分析深圳电信的新型HTTP劫持方式

    昨天深圳下了一天的暴雨,2014年的雨水真是够多的. 用户的资源就是金钱,怎的也要好好利用嘛不是? ISP的劫持手段真是花样百出.从曾经的DNS(污染)劫持到后来的共享检測.无不通过劫持正常的请求来达 ...

  2. 针对电信乌龙事件的深度测试: 广州电信错误将深圳地区189的号码在3G升级4G申请时从广州网厅发货,造成深圳用户收到4G卡后无法激活,深圳电信找不到订单

    广州电信错误将深圳地区189的3G升级4G申请从中国电信广州网厅发货(智能卡号:8986 1114 9002 0851  742X S  电话号码 189),造成用户收到4G卡后无法激活,深圳电信找不 ...

  3. 新型Web劫持技术

    该类新型Web劫持是利用script脚本实现的.在已知的案例中,黑客入侵了某地方门户网站,篡改了该网站的新闻页面,并向这些页面植入自己的广告.新闻及恶意代码.一旦用户从搜索结果页面点击进入被篡改过的新 ...

  4. NAT的全然分析及其UDP穿透的全然解决方式

    NAT的全然分析及其UDP穿透的全然解决方式   一:基本术语 防火墙 防火墙限制了私网与公网的通信,它主要是将(防火墙)觉得未经授权的的包丢弃,防火墙仅仅是检验包的数据,并不改动数据包中的IP地址和 ...

  5. 横向对比分析Python解析XML的四种方式

    横向对比分析Python解析XML的四种方式 在最初学习PYTHON的时候,只知道有DOM和SAX两种解析方法,但是其效率都不够理想,由于需要处理的文件数量太大,这两种方式耗时太高无法接受. 在网络搜 ...

  6. 深圳电信光纤用户必备:简单破解中兴ZXA10 F460光电猫,实现WIFI和自动拨号功能

    最近搬家,ADSL转成光纤宽带,下载速度非常给力.原来的ADSL路由器派不上用场,电信的安装人员也给开通了wifi功能,只是wifi无法上网,而且拨号一定需要用电脑连网线进行拨号.以前是直接把拨号账户 ...

  7. python基础(内存分析,不引入第三方变量的方式交换变量的值)

    a,b指向同一块内存地址 下面方法是重新给b赋值;a,b指向不同的内存地址 字符串或int类型内存分析 不引入第三方变量的方式,交换a,b的值

  8. TouTiao开源项目 分析笔记8 图解分析数据加载方式

    1.整体构架 1.1.以一个段子页面为例,列出用到的主要的类,以图片的方式展示. 1.2.基础类 这里最基础的接口有:   IBaseView<T>==>定义了5个方法. 然后最基础 ...

  9. NTLK情感分析安装与使用的两种方式 nltk-python

    下载安装到实战详细步骤 NLTK下载安装 先使用pip install nltk 安装包 然后运行下面两行代码会弹出如图得GUI界面,注意下载位置,然后点击下载全部下载了大概3.5G. import ...

随机推荐

  1. unity3d打包和包的使用

    打包: ①Assets下新建文件夹Editor和steamingAssets ②对选定文件打包: using UnityEngine; using UnityEditor; using System. ...

  2. 技术分享:逆向海盗船k95机械键盘

    引文 在几年前我买了一个海盗船 K95 Vengeance机械键盘,键盘有上有背光功能,于是我在考虑是不是可以修改一下.但作者表示购买来的键盘上面没有很多的资料可供利用,需要注意的是,新版的K95与旧 ...

  3. 如何调用super

    因此,决定是否调用 super,基于您打算如何重新实施方法: 如果打算补充超类实现的行为,请调用 super. 如果打算替换超类实现的行为,就不要调用 super. 如果您要补充超类行为,另一个需要重 ...

  4. 【Tsinghua OJ】循环移位(Cycle)

    Description Cycle shifting refers to following operation on the sting. Moving first letter to the en ...

  5. win7登入使用的是临时档案解决方法

    开始——运行(搜索程序与文件)——regedit——HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileLis ...

  6. 爆破unabexcm5fl(已补上注册机)

    系统 : Windows xp 程序 : unabexcm5fl 程序下载地址 :http://pan.baidu.com/s/1pJYaNUV 要求 : 爆破 使用工具 :OD 可在“PEDIY C ...

  7. C# asp.net IIS 在web.config和IIS中设置Session过期时间

    有时候在web.config设置sessionState 或者类文件里设置Session.Timeout,在IIS里访问时每次都是达不到时间就超时,原因是因为在IIS中设置了Session的超时时间, ...

  8. 【转】Web应用的组件化开发(一)

    原文转自:http://blog.jobbole.com/56161/ 基本思路 1. 为什么要做组件化? 无论前端也好,后端也好,都是整个软件体系的一部分.软件产品也是产品,它的研发过程也必然是有其 ...

  9. source insight 注册码

    分享一下google来的 呵呵 Source Insight,一个无比强大的工具.一个很好的查看代码的工具.到它的官网上去看一下,就知道,世界上基本上所有的大的软件公司,都在用这个工具.习惯了这个工具 ...

  10. Linux netlink机制

    netlink 是一种特殊的 socket,它是 Linux 所特有的,类似于 BSD 中的AF_ROUTE 但又远比它的功能强大,目前在最新的 Linux 内核(2.6.14)中使用netlink ...