殷水軍, 劉嘉勇, 劉 亮
(四川大學(xué) 信息安全研究所,四川 成都 610065)
隨著互聯(lián)網(wǎng)的不斷發(fā)展以及動(dòng)態(tài)腳本語(yǔ)言的大量使用,當(dāng)前的商業(yè)Web幾乎可以做任何事情,比如在線(xiàn)購(gòu)物、股票交易、網(wǎng)上銀行等。大量動(dòng)態(tài)內(nèi)容的存在,提高了用戶(hù)的體驗(yàn),但是卻給Web應(yīng)用程序帶來(lái)了安全隱患。跨站腳本攻擊(XSS)和網(wǎng)絡(luò)釣魚(yú)(Phishing)攻擊就是其中流行的兩種攻擊方式。國(guó)際Web應(yīng)用安全組織(WASC)最新數(shù)據(jù)表明,采樣分析了10297個(gè)網(wǎng)站,其中31.47%站點(diǎn)存在XSS漏洞,且XSS在發(fā)現(xiàn)的漏洞中占到總數(shù)的41.41%,高居榜首[1]。由中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報(bào)告(2008上半年)指出,2008年上半年國(guó)家互聯(lián)網(wǎng)應(yīng)急中心(CNCERT)共接收 3291件非掃描類(lèi)網(wǎng)絡(luò)安全事件,其中網(wǎng)絡(luò)仿冒事件的數(shù)量達(dá) 890件,占27.04%,同比增長(zhǎng) 38%,被仿冒的網(wǎng)站大都是國(guó)外的著名金融交易機(jī)構(gòu)[2],可見(jiàn)兩者危害之大。
跨站腳本攻擊可以竊取用戶(hù)的 cookie,但是竊取的cookie一般不會(huì)包含用戶(hù)的賬號(hào)、密碼等信息,即使有,也是經(jīng)過(guò)加密處理的,獲取了的信息也是密文,想恢復(fù)成明文幾乎不可能,而網(wǎng)絡(luò)釣魚(yú)攻擊正好可以彌補(bǔ)這個(gè)不足。通過(guò)跨站腳本攻擊和網(wǎng)絡(luò)釣魚(yú)攻擊的結(jié)合,提出了一種針對(duì)Web-mail郵箱的跨站網(wǎng)絡(luò)釣魚(yú)攻擊方法,能夠獲取用戶(hù)郵箱的cookie,賬號(hào)、密碼和用戶(hù)的個(gè)人信息。
跨站腳本攻擊,是一種迫使Web站點(diǎn)回顯可執(zhí)行代碼的攻擊技術(shù),而這些可執(zhí)行代碼由攻擊者提供、最終為用戶(hù)瀏覽器加載。XSS的攻擊目標(biāo)是為了盜取客戶(hù)端的cookie或者其他網(wǎng)站用于識(shí)別客戶(hù)端身份的敏感信息,獲取到合法用戶(hù)的信息后,攻擊者可以假冒最終用戶(hù)與網(wǎng)站進(jìn)行交互。對(duì)Web應(yīng)用程序進(jìn)行跨站腳本攻擊主要有兩種類(lèi)型:持久型XSS和反射型XSS,文獻(xiàn)[3]中有詳細(xì)的介紹。
跨站腳本攻擊的防御可以從兩個(gè)方面來(lái)考慮,一個(gè)是網(wǎng)絡(luò)用戶(hù)客戶(hù)端,一個(gè)是網(wǎng)站的開(kāi)發(fā)服務(wù)端。在文獻(xiàn)[1,3]中都有介紹,但是這些文獻(xiàn)給出的方法都有很大的缺陷和不足。
在網(wǎng)絡(luò)用戶(hù)客戶(hù)端方面,禁止瀏覽器運(yùn)行腳本,影響了一些正常網(wǎng)頁(yè)的顯示;在訪(fǎng)問(wèn)敏感網(wǎng)站后,主動(dòng)清理歷史記錄、cookie記錄、表單記錄、密碼記錄,并重啟瀏覽器后才訪(fǎng)問(wèn)其他網(wǎng)站,在很大程度上都比較繁瑣,浪費(fèi)了用戶(hù)瀏覽網(wǎng)頁(yè)的時(shí)間;這些方法不是實(shí)質(zhì)性的措施。在文獻(xiàn)[4]中,針對(duì)上面的不足提出了解決的方法,它首先在客戶(hù)端判斷輸入是否有腳本標(biāo)簽,如果有再進(jìn)行判斷是否存在特殊字符,如果有,則進(jìn)行跨站代碼分析。存在XSS攻擊則阻止,不存在則進(jìn)行正常請(qǐng)求響應(yīng),它沒(méi)有影響正常網(wǎng)頁(yè)的顯示,也沒(méi)有讓用戶(hù)去做大量繁瑣的無(wú)用功。
在網(wǎng)站的開(kāi)發(fā)方面,則主要注重在輸入數(shù)據(jù)的驗(yàn)證、過(guò)濾、編碼等,但一些攻擊者還是能夠繞過(guò)這些機(jī)制。在文獻(xiàn)[5-6]中,針對(duì)Web運(yùn)用程序提出了一些方案。
網(wǎng)絡(luò)釣魚(yú)攻擊是一種網(wǎng)絡(luò)詐騙手法,主要通過(guò)電子郵件、網(wǎng)頁(yè)等途徑散布虛假信息,誘騙不知情的網(wǎng)絡(luò)用戶(hù)連接上仿冒的網(wǎng)站(也稱(chēng)為釣魚(yú)網(wǎng)站),比如假冒的網(wǎng)上銀行、在線(xiàn)購(gòu)物等,騙取用戶(hù)的網(wǎng)銀賬號(hào)和密碼等重要信息。
網(wǎng)絡(luò)釣魚(yú)攻擊可以分成三個(gè)步驟:建立一個(gè)模仿目標(biāo)網(wǎng)站的假網(wǎng)站;在假網(wǎng)站上上傳釣魚(yú)頁(yè)面;群發(fā)郵件,引誘用戶(hù)到假網(wǎng)站;在文獻(xiàn)[7]中,對(duì)上述的三個(gè)步驟都做了詳細(xì)的介紹。
對(duì)于網(wǎng)絡(luò)釣魚(yú)的防御方法,在文獻(xiàn)[8]中分了三個(gè)方面進(jìn)行分析:基于郵件服務(wù)器;基于瀏覽器;基于協(xié)議的改進(jìn)。在郵件服務(wù)器方面,作者針對(duì) SMTP協(xié)議的漏洞,人為地增加對(duì)發(fā)件人身份的認(rèn)證機(jī)制,進(jìn)而將釣魚(yú)郵件用類(lèi)似于過(guò)濾垃圾郵件的方法屏蔽掉;在瀏覽器方面則是防止腳本語(yǔ)言的運(yùn)行;在協(xié)議的改進(jìn)方面,傳統(tǒng)SSL協(xié)議只保證回話(huà)的機(jī)密性,由于證書(shū)機(jī)構(gòu)可能錯(cuò)發(fā)證書(shū),因此不能保證基于SSL協(xié)議會(huì)話(huà)一定是與合法站點(diǎn)進(jìn)行的,只有當(dāng)進(jìn)一步檢查證書(shū)內(nèi)容時(shí)才能得出結(jié)論,而這一點(diǎn)是一般用戶(hù)不可能做到的。
跨站腳本攻擊給Web網(wǎng)絡(luò)帶來(lái)了很大的安全隱患,它可以獲取cookie,并且可以和網(wǎng)頁(yè)木馬,蠕蟲(chóng)等結(jié)合來(lái)進(jìn)行攻擊。其中獲取 cookie是攻擊的重點(diǎn),但是現(xiàn)在很多的網(wǎng)站基于安全考慮,并不一定把重要的信息(如賬號(hào)和密碼)放在 cookie里,即使有,也進(jìn)行了加密。而且現(xiàn)在有很多的瀏覽器(如IE8, IE7, Mozilla Firefox, Netscape Navigator等)都支持 HTTPOnly cookie[9],雖然 HTTPOnly cookie不能阻止XSS攻擊,但是它能夠阻止客戶(hù)端利用腳本來(lái)竊取一些重要的cookie信息。
網(wǎng)絡(luò)釣魚(yú)攻擊通過(guò)誘騙用戶(hù)提供其個(gè)人賬號(hào)和密碼等個(gè)人資料,獲取用戶(hù)的某種身份信息,進(jìn)而竊取用戶(hù)的個(gè)人財(cái)產(chǎn)。但是它的不足之處在于要模仿目標(biāo)網(wǎng)站建立假冒網(wǎng)站,如果用戶(hù)仔細(xì)的話(huà),辨認(rèn)假冒網(wǎng)站還是很容易的,比如域名就會(huì)不同。
如果結(jié)合跨站腳本攻擊和網(wǎng)絡(luò)釣魚(yú)攻擊,再利用Web-mail郵箱系統(tǒng),就可以很好的避開(kāi)了兩者的不足。因此提出了一種針對(duì)Web-mail郵箱的跨站網(wǎng)絡(luò)釣魚(yú)攻擊方法。
攻擊者以銀行、網(wǎng)上商業(yè)公司、系統(tǒng)通知、好友或者廣告等形式向用戶(hù)發(fā)送一封惡意的郵件,而這封惡意郵件里嵌入了腳本代碼,當(dāng)用戶(hù)登錄郵箱查看郵件時(shí),點(diǎn)擊了攻擊者所發(fā)送的郵件,從而腳本代碼被執(zhí)行。
被嵌入郵件里的腳本代碼有兩個(gè)功能:一個(gè)是發(fā)送用戶(hù)郵箱的 cookie給攻擊者。另一個(gè)就是鏈接到攻擊者已經(jīng)做好的網(wǎng)絡(luò)釣魚(yú)頁(yè)面。如果想獲取用戶(hù)的賬號(hào)及密碼,那么釣魚(yú)頁(yè)面可以做成郵箱的超時(shí)登錄頁(yè)面,當(dāng)然腳本中應(yīng)該設(shè)置好超時(shí)的時(shí)間。如果想獲取用戶(hù)的個(gè)人相關(guān)信息,那么釣魚(yú)頁(yè)面可以做成銀行或者網(wǎng)上商業(yè)公司的調(diào)查頁(yè)面。圖1展示了針對(duì)郵箱的跨站網(wǎng)絡(luò)釣魚(yú)攻擊的流程。
圖1 針對(duì)郵箱的跨站網(wǎng)絡(luò)釣魚(yú)攻擊的流程
2.2.1 構(gòu)造釣魚(yú)頁(yè)面
從原理分析里可以知道,釣魚(yú)頁(yè)面的構(gòu)造是根據(jù)獲取信息的要求而定的,如果是想獲取用戶(hù)的個(gè)人相關(guān)信息,則釣魚(yú)頁(yè)面可以構(gòu)造成相關(guān)的調(diào)查用戶(hù)的信息。如果想獲取用戶(hù)的賬號(hào)和密碼時(shí),其頁(yè)面可以構(gòu)造成郵箱的超時(shí)頁(yè)面,現(xiàn)在的大多數(shù)郵箱中,有很多的郵箱都有超時(shí)設(shè)置,也就是當(dāng)用戶(hù)在一段時(shí)間內(nèi)沒(méi)有對(duì)郵箱進(jìn)行任何操作時(shí),郵箱會(huì)自動(dòng)跳轉(zhuǎn)到超時(shí)頁(yè)面,讓用戶(hù)重新登錄。
2.2.2 構(gòu)造并發(fā)送帶有惡意腳本的郵件
在發(fā)送帶有惡意腳本的郵件之前,要測(cè)試用戶(hù)郵箱的漏洞,在文獻(xiàn)[10]中已經(jīng)很詳細(xì)的介紹了漏洞的測(cè)試方法,在文獻(xiàn)[11]中有很多測(cè)試漏洞的語(yǔ)句。
在測(cè)試好漏洞之后,就是構(gòu)造郵件,在所構(gòu)造的郵件里面最重要的部分就是跨站腳本代碼的編寫(xiě)??缯灸_本的作用在2.1節(jié)攻擊原理里已經(jīng)介紹,其部分代碼可以如下:
上面的代碼鏈接到超時(shí)頁(yè)面,而超時(shí)頁(yè)面里有接收cookie的程序代碼,從而也就獲取了用戶(hù)郵箱的 cookie,另外超時(shí)頁(yè)面也就被用戶(hù)所調(diào)用了。
當(dāng)被攻擊用戶(hù)瀏覽該惡意郵件時(shí),也就實(shí)現(xiàn)了上面所講述的攻擊過(guò)程。
2.2.3 接收用戶(hù)信息
當(dāng)用戶(hù)瀏覽郵件后,會(huì)鏈接到攻擊者所構(gòu)造的釣魚(yú)頁(yè)面,如果用戶(hù)根據(jù)釣魚(yú)頁(yè)面的要求填寫(xiě)了相關(guān)的信息并提交,釣魚(yú)頁(yè)面會(huì)把用戶(hù)信息提交給 receive.php文件,receive.php的作用就是保存用戶(hù)的信息并鏈接到真正的郵箱頁(yè)面。其部分代碼[12]如下:
通過(guò)receive.php文件,獲取并保存用戶(hù)信息到攻擊者建立的數(shù)據(jù)庫(kù)。查看數(shù)據(jù)庫(kù)就可以看到用戶(hù)的信息了。
對(duì)于這里所提出的針對(duì) Web-mail郵箱的跨站網(wǎng)絡(luò)釣魚(yú)攻擊方法,其防御方法是比較多的。因?yàn)槠浣Y(jié)合了跨站腳本攻擊和網(wǎng)絡(luò)釣魚(yú)攻擊,因此針對(duì)兩種攻擊的防御方法對(duì)所提出的攻擊方法都是可行的,上面已經(jīng)介紹,在此不做復(fù)述。
另外針對(duì)所提出的攻擊方法,如果攻擊者想要獲取用戶(hù)的密碼、賬號(hào)和個(gè)人信息,其中最重要的一步就是受害用戶(hù)自己去填寫(xiě)這些信息。所以防御方法就顯而易見(jiàn),就是用戶(hù)不要隨便填寫(xiě)自己的相關(guān)信息,對(duì)于不熟悉和不信任的網(wǎng)站要求自己填寫(xiě)個(gè)人調(diào)查信息,需慎重。對(duì)于 Web-mail郵箱的超時(shí)操作要求,不要隨意的重新輸入賬號(hào)和密碼進(jìn)行登錄,可以直接關(guān)掉瀏覽器,然后再重啟瀏覽器登錄郵箱。
介紹了跨站腳本攻擊和防御,網(wǎng)絡(luò)釣魚(yú)攻擊和防御。通過(guò)分析兩種攻擊在獲取信息時(shí)的不足,提出了一種針對(duì)Web-mail郵箱的跨站網(wǎng)絡(luò)釣魚(yú)攻擊方法。這種攻擊方法彌補(bǔ)了兩種攻擊的不足之處,可以獲得更多的用戶(hù)信息。例如用戶(hù)郵箱的cookie,賬號(hào)、密碼,及用戶(hù)的個(gè)人信息。還有待于更好完善的地方,比如在獲取用戶(hù)賬號(hào)和密碼時(shí),并沒(méi)有對(duì)賬號(hào)和密碼進(jìn)行驗(yàn)證,這是需要進(jìn)一步研究的地方。
[1] 趙旭. 應(yīng)該了解的跨站腳本十二問(wèn)[J]. 網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2009(03):4-37.
[2] 國(guó)家互聯(lián)網(wǎng)應(yīng)急中心,CNCERT/CC2008年上半年網(wǎng)絡(luò)安全工作報(bào)告[EB/OL]. (2008-05-01).[2009-08-15].http://www.cert.org.cn/UserFiles/File/CISR2008fh.pdf.
[3] 吳耀斌,王科,龍?jiān)兰t.基于跨站腳本的網(wǎng)絡(luò)漏洞攻擊與防范[J].計(jì)算機(jī)系統(tǒng)應(yīng)用, 2008(01):38-44.
[4] TIWARI S, BANSAL R, BANSAL D. Optimized Client Side Solution for Cross Site Scripting[J]. Networks, 2008(16):1.
[5] HARTLEY D. Secure Ecommerce Web Application Design Principles Beyond PCI DSS[J].Computer Fraud & Security, 2009(06):13-17.
[6] GOLLMANN D.Securing Web Applications[J]. Information Security Technical Report, 2008(I3):1-9.
[7] Forte D. Anatomy of a Phishing Attack: A High-level Overview[J].Network Security,2009(04):17-19.
[8] 倪天華,朱程榮.網(wǎng)絡(luò)釣魚(yú)防御方法研究[J].計(jì)算機(jī)技術(shù)與發(fā)展,2008(09):115-118..
[9] HTTPOnly-OWASP.HTTPOnly[EB/OL].(2009-08-15).[2009-08-15].http://www.owasp.org/index.php/HTTPOnly#Browsers_Supportin g_HTTPOnly.
[10] 王蕊,葛昕.Web應(yīng)用程序跨站腳本漏洞測(cè)試研究[J].科協(xié)論壇,2008(06):89-90.
[11] RSNAKE.XSS (Cross Site Scripting) Cheat Sheet Esp: for filter evasion [EB/OL]. (2009-08-15)[2009-08-15]. http://ha.ckers.org/xss.html.
[12] NEXUS.Applying XSS to Phishing Attacks [EB/OL].(2007-05-03)[2009-08-15]. http://www.xssed.com/article/5/Paper_ Applying_XSS_to_Phishing_Attacks/.