上月底,代码托管网站GitHub遭遇大流量DDoS攻击。攻击者劫持百度广告联盟的JS脚本并将其替换成恶意代码,最后利用访问中国网站的海外用户对GitHub发动大规模分布式拒绝服务攻击。谷歌近日发表了针对此次攻击的分析报告,还原了整个攻击的全过程。
谷歌:纵览全部攻击过程
谷歌的Safe Browsing每天会扫描分析数百万个网页,从中找出恶意内容。Safe Browsing并不是从网络流量方面进行分析,而是从HTTP协议层面。
其实JS劫持攻击最早发生在三月初,而不是我们以为三月中下旬。根据谷歌3月1日到4月15日搜集到的数据,Safe Browsing第一次发现百度域名劫持是在3月3日,而最后一次是在4月7日。从下面的图片中就可以详细的看出注入攻击时间:
多阶段的攻击行为
第一阶段
此次攻击的执行是分多个阶段进行,第一阶段是测试阶段,测试时间为3月3日到3月6日,首次测试的目标IP地址为114.113.156.119:56789(北京电信通),但是第一天的请求次数被人为设了限制,之后两天请求限制就被移除了。
第二阶段
第二阶段的时间是3月10日到3月13日,目标IP地址为203.90.242.126(中国香港)。3月13日时,攻击扩展到了d1gztyvw1gvkdq.cloudfront.net。刚开始的时候请求是通过HTTP发出的,后来升级到了HTTPS。3月14日开始同时通过HTTP和HTTPS攻击d3rkfw22xppori.cloudfront.net(greatfire.org利用亚马逊cloudfront搭建的一个屏蔽网站镜像),并于3月17日停止了攻击。
第三阶段
3月18日,被攻击的域名范围进一步扩大,包括:d117ucqx7my6vj.cloudfront.net、 d14qqseh1jha6e.cloudfront.net、d18yee9du95yb4.cloudfront.net、d19r410x06nzy6.cloudfront.net、d1blw6ybvy6vm2.cloudfront.net。
这也是第一次发现截断注入(truncated injections),JS被完全切断。在这一阶段中,cloudfront主机开始向greatfire.org等域名发起302重定向(302 redirects)。JS内容替换在3月20日完全停止,但HTTP注入还在继续。JS内容替换会破坏原内容功能,但HTTP注入不会。
HTML如下:
<html> <head> <meta name="referrer" content="never"/> <title> </title> </head> <body> <iframe src="http://pan.baidu.com/s/1i3[...]?t=Zmh4cXpXJApHIDFMcjZa" style="position:absolute; left:0; top:0; height:100%; width:100%; border:0px;" scrolling="yes"></iframe> </body> <script type="text/javascript"> [... regular attack Javascript ...]
在这一技术中,web浏览器两次获取了相同的HTML页面,但是由于查询参数中的“t”参数,所以第二请求中没有注入。被攻击的域名随时都在变化中,在这一阶段中就变为了dyzem5oho3umy.cloudfront.net、d25wg9b8djob8m.cloudfront.net 和28d0hakfq6b4n.cloudf ront.net。该阶段攻击大约开始10个小时之后,我们在另一域名上检测到了302重定向。
停止对cloudfront主机的攻击,转向GitHub
对cloudfront主机的攻击于3月25日停止,而Github成为新的攻击目标。第一个新目标是github.com/greatfire/wiki/wiki/nyt/,紧接着是github.com/greatfire/和github.com/greatfire/wiki/wiki/dw/。
3月26日,百度的明文脚本被拦截替换了一个恶意JS代码,攻击github.com/greatfire/和github.com/cn-nytimes/,4月7日攻击停止。
攻击从3月份开始,4月份截止。在此期间,我们共发现了19种恶意JS代码。
谷歌称,他们共发现了8个百度域名被劫持,IP地址如下:
cbjs.baidu.com (123.125.65.120) eclick.baidu.com (123.125.115.164) hm.baidu.com (61.135.185.140) pos.baidu.com (115.239.210.141) cpro.baidu.com (115.239.211.17) bdimg.share.baidu.com (211.90.25.48) pan.baidu.com (180.149.132.99) wapbaike.baidu.com (123.125.114.15)
被注入的JS代码大小各不相同,从995字节到1325字节不等。
谷歌表示,虽然它们还不能确定攻击者究竟是谁,但对于网站来说,只需全面启用HTTPS加密便能防御此类攻击。
* 参考来源googleonlinesecurity,转载请注明来自FreeBuf黑客与极客(FreeBuf.COM)