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