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

圖1 針對郵箱的跨站網絡釣魚攻擊的流程
2.2.1 構造釣魚頁面
從原理分析里可以知道,釣魚頁面的構造是根據獲取信息的要求而定的,如果是想獲取用戶的個人相關信息,則釣魚頁面可以構造成相關的調查用戶的信息。如果想獲取用戶的賬號和密碼時,其頁面可以構造成郵箱的超時頁面,現在的大多數郵箱中,有很多的郵箱都有超時設置,也就是當用戶在一段時間內沒有對郵箱進行任何操作時,郵箱會自動跳轉到超時頁面,讓用戶重新登錄。
2.2.2 構造并發送帶有惡意腳本的郵件
在發送帶有惡意腳本的郵件之前,要測試用戶郵箱的漏洞,在文獻[10]中已經很詳細的介紹了漏洞的測試方法,在文獻[11]中有很多測試漏洞的語句。
在測試好漏洞之后,就是構造郵件,在所構造的郵件里面最重要的部分就是跨站腳本代碼的編寫??缯灸_本的作用在2.1節攻擊原理里已經介紹,其部分代碼可以如下:

上面的代碼鏈接到超時頁面,而超時頁面里有接收cookie的程序代碼,從而也就獲取了用戶郵箱的 cookie,另外超時頁面也就被用戶所調用了。
當被攻擊用戶瀏覽該惡意郵件時,也就實現了上面所講述的攻擊過程。
2.2.3 接收用戶信息
當用戶瀏覽郵件后,會鏈接到攻擊者所構造的釣魚頁面,如果用戶根據釣魚頁面的要求填寫了相關的信息并提交,釣魚頁面會把用戶信息提交給 receive.php文件,receive.php的作用就是保存用戶的信息并鏈接到真正的郵箱頁面。其部分代碼[12]如下:

通過receive.php文件,獲取并保存用戶信息到攻擊者建立的數據庫。查看數據庫就可以看到用戶的信息了。
對于這里所提出的針對 Web-mail郵箱的跨站網絡釣魚攻擊方法,其防御方法是比較多的。因為其結合了跨站腳本攻擊和網絡釣魚攻擊,因此針對兩種攻擊的防御方法對所提出的攻擊方法都是可行的,上面已經介紹,在此不做復述。
另外針對所提出的攻擊方法,如果攻擊者想要獲取用戶的密碼、賬號和個人信息,其中最重要的一步就是受害用戶自己去填寫這些信息。所以防御方法就顯而易見,就是用戶不要隨便填寫自己的相關信息,對于不熟悉和不信任的網站要求自己填寫個人調查信息,需慎重。對于 Web-mail郵箱的超時操作要求,不要隨意的重新輸入賬號和密碼進行登錄,可以直接關掉瀏覽器,然后再重啟瀏覽器登錄郵箱。
介紹了跨站腳本攻擊和防御,網絡釣魚攻擊和防御。通過分析兩種攻擊在獲取信息時的不足,提出了一種針對Web-mail郵箱的跨站網絡釣魚攻擊方法。這種攻擊方法彌補了兩種攻擊的不足之處,可以獲得更多的用戶信息。例如用戶郵箱的cookie,賬號、密碼,及用戶的個人信息。還有待于更好完善的地方,比如在獲取用戶賬號和密碼時,并沒有對賬號和密碼進行驗證,這是需要進一步研究的地方。
[1] 趙旭. 應該了解的跨站腳本十二問[J]. 網絡安全技術與應用,2009(03):4-37.
[2] 國家互聯網應急中心,CNCERT/CC2008年上半年網絡安全工作報告[EB/OL]. (2008-05-01).[2009-08-15].http://www.cert.org.cn/UserFiles/File/CISR2008fh.pdf.
[3] 吳耀斌,王科,龍岳紅.基于跨站腳本的網絡漏洞攻擊與防范[J].計算機系統應用, 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] 倪天華,朱程榮.網絡釣魚防御方法研究[J].計算機技術與發展,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應用程序跨站腳本漏洞測試研究[J].科協論壇,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/.