上月底,代碼托管網站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加密便能防御此類攻擊。