某种流量劫持攻击的原理简述和演示

安全 应用安全
国内做运营商劫持的主要模式,即通过旁路分光设备镜像流量,并监听用户HTTP GET上行请求,篡改正常返回的信息,从而实现隐蔽的劫持互联网网站信息。因劫持手法种类多样,限于篇幅,本文将只采用其中一种劫持第三方js代码的方式来进行阐述。

【51CTO.com专栏稿件】回顾近几年国内发生的各类恶意劫持事件中,莫过于通信运营商的流量劫持,该行为严重干扰到了个人和企业用户的正常使用和运营。鉴于互联网上已经有大量关于此类攻击的案例分析和阐述,为了更加有效的防御此类攻击,本文将换一个角度思考和分析,以劫持攻击者的立场,通过具体的劫持实验来简述过程。

目前国内做运营商劫持的主要模式,即通过旁路分光设备镜像流量,并监听用户HTTP GET上行请求,篡改正常返回的信息,从而实现隐蔽的劫持互联网网站信息。因劫持手法种类多样,限于篇幅,本文将只采用其中一种劫持第三方js代码的方式来进行阐述。

一、劫持演示准备

1、获取互联网用户发往80端口的网络数据包,无需回传的数据包。

2、演示用户的浏览器使用基数和安全程度较高的Chrome。经过笔者测试,该演示方案对于Windows系统 +其他浏览器的组合,以及移动端iPhone和Android平台上的默认浏览器均有效。

3、注册开通某商网站联盟账号,系统会从后台分配到一个可跳转的url,该url会给用户设置 cookie,同时用做系统后期统计计费分成。

例如申请到的url如下:

http://u.XXX.com/union/XXXRedirect.aspx?TypeID=2&Allianceid=1234&sid=56789&OUID=abc&jumpUrl=http://www.XXX.com

红色字体为不同的加盟账户被分配的不同编号,若该参数被恶意篡改,该用户推广获得的收入分成将转移。

用curl命令请求该链接,将获得如下图中返回包的截图。其中红色部分标明了该返回包进行了Set-Cookie计费和跳转操作。

二、劫持过程简述

1、 当用户访问www.XXX.com,同时劫持者旁路侦听到该用户浏览器请求了某第三方js代码。(本文将拿Google Analytics的统计代码ga.js 来举例,完整链接:www.google-analytics.com/ga.js),Referer 目标站www.XXX.com。

2、 先于www.XXX.com的服务器返回构造过的TCP包给用户,同时将篡改过的ga.js代码返回。

篡改过的ga.js代码,详见下面截图:

3、劫持完成后用户浏览器的访问不会有明显的异常感知,打开chrome的开发者工具查看访问情况,如下截图:

在用户的主机上打开wireshark 做抓包分析,可以看到被我方强制植入的统计Cookie已经成功,效果如下截图:

三、该类js劫持的特点

1、 该类js代码是由第三方发布和更新,正常情况下不会有人对其返回进行校验。即便用户频繁重复请求或者请求失败,被劫持方不会被主动告知。

2、 操作隐蔽且灵活,通过多种方式只需发送1k以下的数据包篡改js代码,即可完成劫持,无需额外的服务器再做跳转。

3、 该类js代码在国内中小型web站点甚至大型网站具有较高的使用率,比如本文中提到的ga.js通常用作网站流量统计实现。

四、排查和防御方式

1、 目前最流行的运营商劫持方式,即直接在用户访问www.XXX.com的时候对其访问劫持,并直接302重定向跳转到预先设定好的url链接上,此类方式较易被发现,目前国内大多数web站点均开启了https加密策略,可以部分有效的防御此种劫持攻击。

2、 对用户浏览器侧的js代码进行校验,并对CDN节点上的缓存内容做定时轮训匹配对比,判断是否被篡改。监控用户真实得到的web源代码,观察是否被非法注入或者强制跳转等等。

3、 因该类劫持攻击需要在真实服务器返回的TCP包到达前,就将伪造包发到用户浏览器,否则将失去效果。因此排查此类攻击方式应遵从,优先从用户侧排查,也可采用判断TTL不同返回值来做劫持层定位。

4、 通信运营商应该加强自身内部人员和设备管理,并在节点配置部署URPF策略,将伪造IP头的包全部丢弃。比如,排查在关键回写植入点的路由器上的ACL规则,拒绝放行特殊格式或者特征的回写包。

【本文是51CTO专栏机构作者“数字观星技术组”的原创文章,转载请联系原作者】

 

责任编辑:武晓燕 来源: 51CTO
相关推荐

2016-03-16 09:47:55

2010-09-09 20:26:34

2021-04-07 09:52:46

JavaScript函数劫持攻击

2010-04-21 09:15:21

2017-01-23 10:10:09

2016-12-13 08:45:48

2014-04-16 15:56:17

2014-06-09 17:07:44

2017-10-12 15:41:45

2019-01-02 11:30:30

2013-06-21 09:56:26

2010-09-09 22:41:18

2012-11-20 13:06:57

2012-12-25 13:45:37

2021-03-02 09:41:52

Android App攻击流量

2010-09-09 20:11:39

2013-03-11 18:04:02

2010-09-08 20:20:39

2013-05-14 14:28:55

2010-07-22 11:18:14

点赞
收藏

51CTO技术栈公众号