前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >超级加农炮(Great Cannon)缺陷探究之TTL篇

超级加农炮(Great Cannon)缺陷探究之TTL篇

作者头像
FB客服
发布2018-02-06 10:55:22
9590
发布2018-02-06 10:55:22
举报
文章被收录于专栏:FreeBuf

前段时间Github遭遇大规模的DDoS攻击,一时间大家就幕后元凶议论纷纷,之后便有美国媒体指责中方拥有网络武器——“超级加农炮(The Great Cannon)”。加农大炮真的有传说中的那么厉害吗?本文我们就来抛砖引玉,说说加农大炮的一点缺陷。

什么是超级加农炮?

加拿大公民实验室之前发布了针对超级加农炮的技术分析报告。报告中指出,这是一种国家层面的网络流量劫持工具,它要么将流量劫持并指向要打击的目标,要么在流量中返回一些间谍软件,要么用这种大流量来攻击其它目标。

那问题来了,加农炮是怎么展开攻击的呢?

攻击方式为一种中间人攻击,The Great Cannon劫持了用户和百度某服务器之间的通信,使得用户发出的请求并没有到达百度某服务器,而是直接返回给用户构造好的恶意Js脚本。用户浏览器加载恶意Js后,便会每隔两秒向Github发送一次请求。

攻击流程大致如下图:

图1

FreeBuf之前的报道《走近科学:剥开层层迷雾,深度追踪针对GitHub的DDoS攻击》中详细说明了发现The Great Cannon的方法及原理,即因为返回包中的TTL(time-to-live,所有网络中的数据包中都用这个字段来表示数据包经过了几跳。每一次路由器将一个数据包发出去的时候,就会将这个字段减一。当这个字段为零的时候,数据包将会被丢弃。以防止路由器无限制发送数据包造成死循环)值发生了改变,从而判定攻击方法为中间人劫持,以及更进一步的确定了The Great Cannon的位置。

图2

正是因为上图中后面几个返回包的TTL值变得与之前不一致,从而暴露了返回包已经被修改。

图3

由图3可知,一旦The Great Cannon的初始TTL值X不等于64-A,用户收到的返回包就会出现TTL值不一致的情况。TTL值发生变化的原因,做如下推测:

图4

由于每个用户所处的位置不同,到达The Great Cannon经过的路由跳数也不同,所以The Great Cannon并不知道用户和The Great Cannon之间的距离,为了使得每一个用户都能收到返回包,所以将TTL值统一设为一个较大的值。

这样一来,用户一旦发现收到的返回包中的TTL值被修改为非正常的值,就暴露了返回包已经被劫持。继续深入研究返回包的内容之后,便可了解攻击方式及攻击手段,甚至能猜测The Great Cannon的情况。为了改进The Great Cannon,可以参考如下方法:

正如图3中所示,要做到TTL值前后一致,应该使得X=64-A。A为The Great Cannon到百度某服务器之间的距离,并且是可知的。又可以确定百度某服务器发出的返回包的初始TTL值为64。从而可以很容易的确定X的值。之后便以这个值作为The Great Cannon发出数据包的初始TTL值来向用户发送数据包。这样一来,在用户端,就好像返回包是真正从百度某服务器发来的一样,从而做到了对攻击方式的隐藏。

参考资料

http://www.freebuf.com/news/62288.html

http://www.freebuf.com/news/special/63148.html

http://www.freebuf.com/articles/network/65839.html

http://www.freebuf.com/news/63676.html

http://www.freebuf.com/news/63632.html

* 作者/ArkTeam(团队账号),属FreeBuf黑客与极客(FreeBuf.COM)原创奖励计划文章,未经许可禁止转载

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2015-05-10,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 FreeBuf 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档