至少?gòu)?013年10月起,水坑攻擊便以非政府組織,維吾爾族群體以及伊斯蘭民族的網(wǎng)站為攻擊目標(biāo)進(jìn)行了大量的攻擊。在這篇文章中,我們將會(huì)對(duì)這一 系列包括近期所檢測(cè)到的攻擊在內(nèi)的水坑攻擊進(jìn)行詳細(xì)描述。在這里,我們要感謝Sumayah Alrwais,他是印第安納大學(xué)系統(tǒng)安全實(shí)驗(yàn)室的一名博士研究生,正是他在RSA實(shí)驗(yàn)室中發(fā)現(xiàn)了這種最新的水坑攻擊,并提醒了我們?cè)摴粽谟绊懼袊?guó)的 各大國(guó)際性非政府組織的網(wǎng)站。
水坑攻擊
水坑攻擊是一種黑客技術(shù),如果一個(gè)黑客想要攻擊一個(gè)特定的組織(公司,企業(yè),少數(shù)民族團(tuán)體等等),便可以使用這種技術(shù)來(lái)實(shí)現(xiàn)攻擊。攻擊者首先入侵目標(biāo)組織的官方網(wǎng)站,然后將惡意代碼注入至網(wǎng)站之中,當(dāng)用戶(hù)訪(fǎng)問(wèn)受感染的網(wǎng)站時(shí),惡意代碼將會(huì)被執(zhí)行。
通常情況下,攻擊者可以通過(guò)惡意服務(wù)器,然后利用IE瀏覽器,Java插件,或者Flash播放器的漏洞來(lái)導(dǎo)入一個(gè)iframe或者一個(gè)JavaScript腳本文件,最終獲取目標(biāo)主機(jī)系統(tǒng)的訪(fǎng)問(wèn)權(quán)限。
我們對(duì)一些在過(guò)去所發(fā)生的攻擊事件進(jìn)行了記錄和研究,下面是一些攻擊示例:
Just?another?water?hole?campaign?using?an?Internet?Explorer?0day ?U.S.?Department?of?Labor?website?hacked?and?redirecting?to?malicious?code
在其他情況下,我們還發(fā)現(xiàn),在有的水坑攻擊中,黑客還使用了勘查技術(shù)來(lái)提取安裝在目標(biāo)主機(jī)設(shè)備中的軟件信息,甚至使用了JavaScript鍵盤(pán)記錄腳本來(lái)竊取用戶(hù)的賬戶(hù)憑證等數(shù)據(jù):
Attackers?abusing?Internet?Explorer?to?enumerate?software?and?detect?security?products Scanbox:?A?Reconnaissance?Framework?Used?with?Watering?Hole?Attacks
除此之外,這已經(jīng)不是我們第一次記錄到針對(duì)中國(guó)維吾爾族的網(wǎng)絡(luò)間諜行動(dòng)了:
Cyber?espionage?campaign?against?the?Uyghur?community,?targeting?MacOSX?systems New?MaControl?variant?targeting?Uyghur?users,?the?Windows?version?using?Gh0st?RAT Latest?Adobe?PDF?exploit?used?to?target?Uyghur?and?Tibetan?activists
我們所描述的最新攻擊是一種新穎的技術(shù),而且我們之前從未在水坑攻擊中見(jiàn)過(guò)此類(lèi)技術(shù)。接下來(lái)我們會(huì)詳細(xì)描述其工作原理:
攻擊者入侵與非政府組織,維吾爾族團(tuán)體,以及伊斯蘭協(xié)會(huì)有聯(lián)系的中文網(wǎng)站。
在入侵成功之后,攻擊者會(huì)修改網(wǎng)站的內(nèi)容,并且通過(guò)惡意服務(wù)器來(lái)導(dǎo)入一個(gè)JavaScript腳本文件。
這個(gè)JavaScript腳本文件會(huì)利用JSONP劫持漏洞,這種漏洞存在于15個(gè)不同的大型中文網(wǎng)站之中,包括中國(guó)用戶(hù)所廣泛使用的五大門(mén)戶(hù)網(wǎng)站。(詳情請(qǐng)看下表)
如果用戶(hù)登錄了其中一個(gè)被入侵的網(wǎng)站,或使用了網(wǎng)站所提供的受感染的服務(wù),那么通過(guò)使用JSONP請(qǐng)求,攻擊者便能夠繞過(guò)跨域請(qǐng)求機(jī)制,并且能夠收集到用戶(hù)的個(gè)人隱私信息。
然后,JavaScript腳本代碼便會(huì)將用戶(hù)的隱私數(shù)據(jù)傳輸?shù)揭粋€(gè)由攻擊者控制的服務(wù)器中。
當(dāng)我們開(kāi)始寫(xiě)這篇文章的時(shí)候,我們并沒(méi)準(zhǔn)備將受影響的網(wǎng)站公布出來(lái)。然而,經(jīng)過(guò)了一系列的調(diào)查和研究之后,我們發(fā)現(xiàn)這種同樣的漏洞已經(jīng)在2013年就被公布出來(lái)了!
漏洞的詳情可以在一篇中文的安全博文和幾大中文安全論壇中找到。
為了讓大家清楚該問(wèn)題的嚴(yán)重性,我們將向大家展示受影響網(wǎng)站的Alexa評(píng)級(jí)名單,攻擊者可以竊取這些網(wǎng)站中的用戶(hù)隱私數(shù)據(jù):
攻擊分析
JSONP是一種廣泛使用的技術(shù),它可以通過(guò)發(fā)起JavaScript的跨域請(qǐng)求來(lái)繞過(guò)同源策略。然而,繞過(guò)同源策略會(huì)導(dǎo)致不同源或域之間的數(shù)據(jù)泄 漏。而且,尤其是當(dāng)JSONP涉及到了用戶(hù)的數(shù)據(jù)信息時(shí),這樣是極其危險(xiǎn)的。既然JSONP請(qǐng)求/回應(yīng)能夠繞過(guò)同源策略,那么惡意網(wǎng)站便能夠通過(guò)這種機(jī) 制,讓目標(biāo)主機(jī)發(fā)起跨域JSONP請(qǐng)求,并使用”腳本”標(biāo)簽來(lái)讀取用戶(hù)的隱私數(shù)據(jù)。
下面,我們向大家介紹一個(gè)例子,這是在一個(gè)水坑攻擊中發(fā)現(xiàn)的一個(gè)惡意JavaScript腳本,我們對(duì)其還進(jìn)行了分析和研究。
首先,惡意JavaScript腳本會(huì)向一個(gè)有漏洞的服務(wù)器發(fā)起一個(gè)帶有<腳本>標(biāo)簽的JSONP請(qǐng)求。代碼如下,腳本請(qǐng)求了renren_all的函數(shù)調(diào)用:
含有漏洞的網(wǎng)站會(huì)以下列內(nèi)容來(lái)回應(yīng)請(qǐng)求:
當(dāng)瀏覽器收到數(shù)據(jù)之后,它會(huì)調(diào)用renren_all回調(diào)函數(shù),該功能函數(shù)會(huì)將用戶(hù)的個(gè)人數(shù)據(jù)發(fā)送至一個(gè)由攻擊者控制的服務(wù)器中,這些數(shù)據(jù)包括用戶(hù)的性別,生日,真實(shí)姓名以及ID號(hào)等等。
在發(fā)送完了所有的JSONP請(qǐng)求之后,惡意JavaScript腳本會(huì)將數(shù)據(jù)發(fā)送至一個(gè)由攻擊者控制的服務(wù)器中:
除此之外,我們還發(fā)現(xiàn)在其中一個(gè)惡意JavaScript腳本文件內(nèi),包含有能夠返回用戶(hù)的公共地址以及私人地址信息的代碼,這些腳本使用了帶有震網(wǎng)病毒的WebRTC技術(shù),詳情請(qǐng)點(diǎn)擊這里。
安全建議
名單中列出的受影響網(wǎng)站(百度,淘寶等網(wǎng)站)應(yīng)當(dāng)立即修復(fù)JSONP劫持漏洞。下面是一些修復(fù)該漏洞的方法:
-在所有的JSONP請(qǐng)求中引入一個(gè)隨機(jī)值(這樣同樣能夠預(yù)防CSRF攻擊) -使用CORS來(lái)代替JSONP -不要使用cookies來(lái)自定義JSONP響應(yīng) -在JSONP響應(yīng)中不要加入用戶(hù)的個(gè)人數(shù)據(jù)