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