继上次发表在FreeBuf上的文章 《超级加农炮(Great Cannon)缺陷探究之TTL篇》 之后,我们参考自国外一个研究组织针对此次事件的事后分析,以及通过被攻击网站的日志和捕获的代码上的一处纰漏,锁定The Great Cannon攻击时所使用的代码。
我们先来简单回顾一下: 前段时间被爆出的中国强大电子战武器—— 超级大炮(The Great Cannon) 备受关注,其疑似劫持百度广告服务的流量,并将这些流量引导到Greatfire.org、CN-NYTimes等网站,造成大规模DDoS攻击。
本文参考自国外一个研究组织针对此次事件的事后分析,以及通过被攻击网站的日志和捕获的代码上的一处纰漏,锁定这份代码正是The Great Cannon攻击时使用的。
Greatfire.org在Amazon的cloudfront基础设施上有几个镜像网站: d19r410x06nzy6.cloudfront.net 就是其中一个,2015年3月18日,上述镜像站被攻击时的日志抽样如下:
从攻击日志中,奇怪的发现攻击时刻虽然是2015年3月18日,但GET后面的参数很显然是一个Unix时间戳形式,转换成时间表示为2015年3月3日,整整相差了15天(360小时)。但这看似不经意间的差别却为后来锁定攻击源码提供铁证!
攻击事后寻找攻击代码并不顺利。Google(Cache)引擎在爬取页面时解析了恶意代码,在Google中直接搜索:d19r410x06nzy6.cloudfront.net,结果如下:
但是再次访问这些页面时已没有恶意代码存在。
urlQuery.net是一个提供基于Web恶意程序的发现和分析服务的网站,当浏览器访问一个页面时,它提供了详细的信息,包括页面中的其它连接的访问和JS脚本的加载等。并以树形图的方式展现出来。
我们幸运的在urlQuery.net中找到了一些踪迹,urlQuery.net记录了在访问zhao.juji123.com页面时的迭代加载过程,其中记录了对被攻击网站的访问,而请求包的格式与被攻击网站记录的日志格式相同(时间戳也相差了15天)。这说明在访问zhao.juji123.com时恶意JS脚本被加载了。
非常幸运,urlQuery.net也将攻击代码缓存了下来!于是我们打开攻击代码看看端倪:
哈哈,原来在生成时间戳时误将getDate()和getDay()混淆了。了解Javascript的都知道,getDate()是以月为单位表示日期,而getDay()是以周为单位表示日期。3月18日正好是星期三,所以差了整整15天!
这也为这份代码的真实性提供了强有力的证据。
虽然国家有了这种能力,但提高姿势水平还很重要:P
*作者:Leo/ArkTeam,本文属FreeBuf黑客与极客(FreeBuf.COM)原创奖励计划,未经许可禁止转载