圖1:通過人人網(wǎng)搜索到的某用戶隱私信息
從圖1可以發(fā)現(xiàn)該用戶的個人信息對外都是可見的,那么如果黑客結(jié)合搜索引擎進(jìn)行“人肉搜索”的話,那么獲取到的將會是更多可被黑客惡意利用的敏感信息,利用用戶的個人信息或其他隱私信息,黑客便可以進(jìn)行釣魚攻擊或者欺詐等。
跳板式獲取的隱私信息
雖然某些SNS網(wǎng)站對用戶信息相關(guān)數(shù)據(jù)有完備的隱私控制策略,但是這種策略并非不能夠被黑客加以利用。在人人網(wǎng)上對用戶的信息查看時,我們發(fā)現(xiàn),如果用戶設(shè)置了相應(yīng)的隱私控制策略以后,一般用戶是無法訪問該用戶的個人主頁信息的,如圖2所示。
圖2:設(shè)置隱私相關(guān)策略后仍有可被黑客利用的信息
但是,從頁面中我們?nèi)匀豢梢钥吹娇梢员缓诳屠玫膬?nèi)容,那就是該用戶的好友信息,如圖2中紅框選中的部分。結(jié)合SNS網(wǎng)站所具有的極強交互性的特點,可以通過該交互尋找到不同用戶之間的關(guān)系,即所謂的社交網(wǎng)絡(luò)虛擬人際關(guān)系網(wǎng),可以用圖3所示。
圖3:社交網(wǎng)絡(luò)虛擬人際關(guān)系網(wǎng)
圖中假設(shè)黑色頭像所代表的是黑客希望獲取相關(guān)隱私信息的用戶,盡管黑客無法直接通過目標(biāo)任務(wù)的賬號信息獲取到數(shù)據(jù)內(nèi)容,但是通過SNS網(wǎng)站的交互性,黑客可以通過其好友賬號進(jìn)行間接滲透攻擊。當(dāng)黑客獲取到其好友賬號信息以后,不但可以正常瀏覽目標(biāo)用戶的個人主頁和個人隱私信息,還可以通過好友用戶通過發(fā)私信或郵件的方式進(jìn)行釣魚攻擊。
危機四伏的外掛程序
SNS網(wǎng)站泄露個人隱私信息不僅僅只是以上提到的兩方面,很多第三方應(yīng)用也會有不少安全問題。例如,網(wǎng)上很多針對SNS網(wǎng)站“刷人氣”、“刷等級”外掛軟件倍受用戶青睞,而這些程序通常也會有這樣那樣的問題。
圖4:人人網(wǎng)應(yīng)用程序列表
通過瑞星安全人員的分析發(fā)現(xiàn),網(wǎng)絡(luò)上有很大一部分外掛或輔助軟件為“偽外掛”程序,即該類軟件根本無法實現(xiàn)“刷人氣”、“刷等級”等作用,而其主要功能是盜取用戶的賬號密碼信息等內(nèi)容。由于該類軟件對外宣稱實現(xiàn)的是“刷人氣”、“刷等級”的作用,所以“名正言順”地要求用戶在軟件運行時輸入SNS網(wǎng)站的個人賬戶及密碼信息,而軟件在獲取賬號密碼信息以后除了向SNS網(wǎng)站發(fā)送該信息外,還會向黑客的服務(wù)器發(fā)送用戶的賬號和密碼信息,如圖5所示。
圖5:外掛輔助軟件盜取用戶賬號和密碼信息
在圖5所示的案例中用戶的賬號和密碼信息被提交到了黑客的網(wǎng)站服務(wù)器w#w.clickaider.net,黑客在接收到用戶賬號和密碼信息以后,就可以使用正確的賬號和密碼信息登錄,由此而帶來的危害是無法想像的。
新浪微博遭受XSS跨站腳本攻擊實例分析
相對于用戶隱私泄露,SNS網(wǎng)絡(luò)的XSS蠕蟲的危害更大。目前,Ajax語言在大型交互網(wǎng)站上廣泛應(yīng)用,然而在Ajax快速流行的同時,也帶來了不安全的隱患。黑客可以使用Ajax語言編寫蠕蟲病毒,實現(xiàn)病毒的幾何數(shù)級傳播,其感染速度和攻擊效果非常可怕。
XSS漏洞攻擊過程分析
那么XSS漏洞又是怎么實現(xiàn)將代碼植入到Web應(yīng)用程序中的呢?跨站腳本攻擊(Cross Site Scripting)是指攻擊者利用網(wǎng)站程序?qū)τ脩糨斎脒^濾不足,輸入可以顯示在頁面上對其他用戶造成影響的HTML代碼,從而盜取用戶資料、利用用戶身份進(jìn)行某種動作或者對訪問者進(jìn)行病毒侵害的一種攻擊方式。
XSS通??梢苑譃閮纱箢悾阂活愂谴鎯π蚗SS,主要出現(xiàn)在讓用戶輸入數(shù)據(jù),供其他瀏覽此頁的用戶進(jìn)行查看的地方,包括留言、評論、博客日志和各類表單等。應(yīng)用程序從數(shù)據(jù)庫中查詢數(shù)據(jù),在頁面中顯示出來,攻擊者在相關(guān)頁面輸入惡意的腳本數(shù)據(jù)后,用戶瀏覽此類頁面時就可能受到攻擊。這個流程簡單可以描述為——惡意用戶的Html輸入web程序?進(jìn)入數(shù)據(jù)庫?web程序?用戶瀏覽器。另一類是反射型XSS,主要是將腳本加入URL地址的程序參數(shù)里,參數(shù)進(jìn)入程序后在頁面直接輸出腳本內(nèi)容,用戶點擊類似的惡意鏈接就可能受到攻擊。
由此可見,如果Web應(yīng)用程序?qū)τ脩糨斎氲臄?shù)據(jù)信息沒有做嚴(yán)格過濾的話,就會導(dǎo)致被寫入的惡意代碼被解析并執(zhí)行,結(jié)合Ajax的異步提交功能,自然也就實現(xiàn)了在植入惡意代碼的同時,又可以將惡意代碼進(jìn)行對外發(fā)送的功能,即實現(xiàn)了代碼的感染,同時也實現(xiàn)了代碼的傳播,也就形成了XSS蠕蟲。出現(xiàn)最早也是最著名的XSS蠕蟲病毒是MySpace的Samy XSS蠕蟲了。
Samy蠕蟲實例回放
MySpace支持交友功能,好友信息會顯示在個人空間的好友列表中,但是,如果想通過MySpace添加其他人為自己的好友,需要得到對方的驗證通過才可以。2005年10月,一個名叫Samy的人在網(wǎng)上發(fā)布了一片文章,在文章中他說找到了一種方法可以借助MySpace網(wǎng)站自身存在的漏洞實現(xiàn)自動化添加自己到別人的空間中,并且經(jīng)過測試,在3個小時內(nèi)添加了2429個好友,同時收到了6373個來自MySpace上其他人添加自己為好友的請求,由此而導(dǎo)致了大量的惡意數(shù)據(jù)和垃圾信息在MySpace上傳播,對網(wǎng)站和用戶都造成了巨大損害。
最近幾年,XSS蠕蟲在大型SNS網(wǎng)絡(luò)上爆發(fā)也很常見,自2005年MySpace Samy XSS蠕蟲爆發(fā)以后,2009年,著名的社交網(wǎng)絡(luò)Twitter在這一年的時間里連續(xù)6次爆發(fā)多規(guī)模傳播的XSS蠕蟲攻擊病毒。在最近幾年,國內(nèi)大型SNS網(wǎng)站及其他一些博客網(wǎng)站也有XSS蠕蟲爆發(fā)的記錄,如人人網(wǎng)的多次XSS蠕蟲攻擊事件、搜狐博客網(wǎng)站的XSS蠕蟲攻擊事件、百度空間的XSS蠕蟲攻擊事件及最近剛剛爆發(fā)的新浪微博XSS蠕蟲大規(guī)模攻擊事件等。在2007年10月,人人網(wǎng)爆發(fā)XSS蠕蟲攻擊事件中,攻擊者沒有植入任何惡意代碼,所做的事情僅僅是測試一下蠕蟲的傳播效果,其中流量效果圖如圖6所示。
圖6:人人網(wǎng)XSS蠕蟲爆發(fā)期惡意代碼所在網(wǎng)站流量監(jiān)測狀態(tài)圖
從圖6中我們可以看到惡意攻擊者用于測試的網(wǎng)站流量在幾天時間里大增,這些天應(yīng)該是蠕蟲感染的時間。日訪問人數(shù)從0猛增到每天500人/百萬人。也就是說,攻擊者測試的地址每天會被訪問5億次,考慮到傳播過程中會存在一個人訪問多次的現(xiàn)象,所以粗略估計至少有幾百萬人受到該XSS蠕蟲的攻擊。值得慶幸的是,本次XSS蠕蟲攻擊事件攻擊者僅僅是為了測試蠕蟲的傳播效果,如果將惡意掛馬行為或者是釣魚攻擊行為與XSS蠕蟲攻擊相結(jié)合的話,由此造成的損失將是巨大的。
新浪微博遭受XSS攻擊實例分析
通過以上對SNS網(wǎng)站面臨的主要問題的了解可以發(fā)現(xiàn),一旦SNS網(wǎng)站存在安全漏洞,那么惡意黑客攻擊者通過安全漏洞可以做的事情是相當(dāng)豐富的,諸如竊取賬號密碼信息、傳播惡意代碼、盜取用戶隱私等,那么真實的此類攻擊事件又是如何發(fā)生和進(jìn)行的呢?下面我們結(jié)合新浪微博的XSS蠕蟲攻擊事件,對黑客惡意利用漏洞至XSS蠕蟲大范圍擴散的過程進(jìn)行詳細(xì)分析和描述,并對該XSS蠕蟲的惡意腳本文件進(jìn)行一下簡要的分析。
首先,黑客通過對新浪微博的分析測試發(fā)現(xiàn)新浪名人堂部分由于代碼過濾不嚴(yán),導(dǎo)致XSS漏洞的存在,并可以通過構(gòu)造腳本的方式植入惡意代碼。通過分析發(fā)現(xiàn),在新浪名人堂部分中,當(dāng)提交hxxp://weibo.com/pub/star/g/xyyyd”> ?type=update時,新浪會對該字符串進(jìn)行處理,變成類似hxxp://weibo.com/pub/star.php?g=xyyyd”> ?type=update,而由于應(yīng)用程序沒有對參數(shù)g做充足的過濾,且將參數(shù)值直接顯示在頁面中,相當(dāng)于 weibo.com 在頁面中嵌入了一個來自于 2kt.cn的JS腳本。該JS腳本是黑客可以控制的文件,使得黑客可以構(gòu)造任意JS腳本嵌入到weibo.com的頁面中,且通過Ajax技術(shù)完全實現(xiàn)異步提交數(shù)據(jù)的功能,進(jìn)而黑客通過構(gòu)造特定的JS代碼實現(xiàn)了受此XSS蠕蟲攻擊的客戶自動發(fā)微博、添加關(guān)注和發(fā)私信等操作。
然后,黑客為了使該XSS蠕蟲代碼可以大范圍的感染傳播,會通過發(fā)私信或發(fā)微博的方式誘惑用戶去點擊存在跨站代碼的鏈接,尤其是針對V標(biāo)認(rèn)證的用戶,因為此類用戶擁有大量的關(guān)注者,所以如果此類用戶中毒,必然可以實現(xiàn)蠕蟲的大范圍、快速的傳播。
圖7:大量用戶中毒后發(fā)送的含毒微博信息
最后,當(dāng)大量的加V認(rèn)證賬戶和其他普通用戶中毒后,這些用戶就會通過發(fā)微博和發(fā)私信的方式將該XSS蠕蟲向其他用戶進(jìn)行傳播,進(jìn)而導(dǎo)致了該XSS蠕蟲的大范圍、快速的傳播與感染。
圖8:含毒微博信息的主要內(nèi)容和XSS蠕蟲鏈接
新浪微博攻擊事件發(fā)生之后,我們第一時間發(fā)現(xiàn)了2tk.cn網(wǎng)站上面的惡意腳本,文件名為t.js,鏈接地址為 www.2kt.cn/images/t.js,經(jīng)過提取保存,腳本代碼如下:
圖9:新浪微博XSS蠕蟲病毒代碼
通過分析發(fā)現(xiàn),雖然該XSS蠕蟲在傳播過程中沒有插入惡意的掛馬代碼,但是卻嚴(yán)重影響了用戶對正常數(shù)據(jù)的瀏覽與訪問,且該XSS蠕蟲會在用戶不知情的情況下就執(zhí)行相應(yīng)的惡意操作,因此認(rèn)為該腳本屬于惡意腳本范疇。通過進(jìn)一步詳細(xì)分析發(fā)現(xiàn)該XSS蠕蟲執(zhí)行以下三個操作:
操作1:發(fā)表一篇微博信息,代碼如圖10所示。
圖10:XSS蠕蟲代碼中自動發(fā)布微博功能代碼
從代碼中我們可以看到,執(zhí)行的第一個操作即是在受到XSS蠕蟲攻擊的用戶自己的頁面上發(fā)布一條微博,微博的題目為隨機題目,且這些題目均為目前網(wǎng)絡(luò)環(huán)境中比較熱門或有爭議的題目,如“郭美美事件的一些未注意到的細(xì)節(jié)”、“建黨大業(yè)中穿幫的地方”、“讓女人心動的100句詩歌”等。如此熱門的題目也必然會引來更多的XSS蠕蟲攻擊受害者。
操作2:就是關(guān)注惡意攻擊者的微博賬號,代碼如圖11所示。
圖11:XSS蠕蟲代碼中自動關(guān)注惡意攻擊者微博賬號的功能代碼
從代碼中我們可以看到,第二個操作就是關(guān)注加uid為2201270010的賬戶,該賬戶就為此次攻擊事件的操縱者,即名稱為hellosamy的用戶。
操作3:通過私信的方式發(fā)送給受攻擊賬戶的好友,將這些帶毒鏈接進(jìn)行傳播,代碼如圖12所示。
圖12:XSS蠕蟲代碼中自動向好友發(fā)送含毒私信功能代碼
從代碼中我們可以了解到惡意攻擊者除了通過發(fā)布微博信息傳播惡意鏈接以外,還會通過私信的方式將帶有惡意鏈接的信息發(fā)送到好友賬號中,且題目仍然為上面提到的熱門話題,進(jìn)而實現(xiàn)惡意鏈接的快速傳播和感染。
SNS網(wǎng)站的用戶和流量是巨大的,同時也容易招致嚴(yán)重的安全問題和隱患。如何能夠保護(hù)用戶的隱私信息不被竊取,保護(hù)用戶不受到惡意代碼的攻擊,這不僅僅是網(wǎng)站管理員必須關(guān)心的問題,同時也是我們廣大SNS用戶需要關(guān)注的問題,這些都需要管理員和用戶共同去維護(hù),保護(hù)SNS在網(wǎng)絡(luò)環(huán)境中的這一片凈土。
【注:基于安全考慮,防止用戶誤點造成不必要的損失,以上網(wǎng)址已作特殊處理,所有網(wǎng)絡(luò)鏈接“http”均已被替換為“hxxp”,特此說明?!?/p>