章強華 韓榮杰
近幾年,隨著互聯(lián)網(wǎng)及其應(yīng)用不斷發(fā)展,互聯(lián)網(wǎng)安全態(tài)勢也不斷發(fā)展變化。各種針對Web應(yīng)用的攻擊形式不斷出現(xiàn),相對于傳統(tǒng)的網(wǎng)絡(luò)層攻擊,這些攻擊從應(yīng)用層入手,可以輕易避開防火墻等傳統(tǒng)安全防護設(shè)備,利用Web應(yīng)用的漏洞,直接對Web應(yīng)用展開攻擊。這一類攻擊行為往往懷有經(jīng)濟性企圖,例如竊取用戶賬戶密碼信息、獲取用戶權(quán)限、欺騙用戶進行某種操作等,其目的性更明確,影響范圍廣,危害較大。其中以點擊劫持式的攻擊形式尤其讓人防不勝防。
相識Click Jacking
2008年,SecTheory公司的羅伯特·漢森(Robert Hansen)和白帽安全公司的杰羅麥亞·格羅斯曼(Jeremiah Grossman)首次提出了點擊劫持漏洞(Click Jacking)。它是一種基于視覺欺騙的WEB會話劫持攻擊,通過在網(wǎng)頁的輸入控件上覆蓋一個不可見的框(Frame),當(dāng)用戶操作該控件時,實際上是在其之上的不可見的框 (Frame)中進行操作。
點擊劫持的基本方法是允許攻擊者強制Web用戶在想要點擊良性鏈接的時候,點擊到惡意鏈接,攻擊者可以構(gòu)建一個惡意的Web頁面,用以在用戶的電腦上安裝rootkit或者其他惡意軟件,然后用看起來無害的網(wǎng)頁呈現(xiàn)所有頁面,比如,其中一個就含有基于Flash的游戲。當(dāng)用戶點擊頁面上的各種鏈接和按鈕的時候,實際上點擊的是被攻擊者控制的隱藏的鏈接。
相知Click Jacking
伴隨著WEB2.0的出現(xiàn),以及HTML5的發(fā)展,很多應(yīng)用操作都已經(jīng)向WEB上移植,使基于WEB的攻擊層出不窮,信息安全也開始過渡到以Web環(huán)境為基礎(chǔ)、Web應(yīng)用為載體新時代.相對于WEB安全十多年的發(fā)展史,點擊劫持算是一種較新型的攻擊手法,其發(fā)展十分迅速,在百度搜索點擊劫持攻擊結(jié)果中可以看到151000條記錄。
點擊劫持攻擊剛被提出來的時候,主要攻擊模式包括“鼠標(biāo)拖放”劫持和“觸摸劫(tap jacking)”兩種。其中,一是結(jié)合Iframe、CSS等技術(shù)隱藏目標(biāo)網(wǎng)頁;二是結(jié)合社會工程學(xué)、JavaScript技術(shù)、Flash 以及AJAX 技術(shù)實現(xiàn)欺騙點擊、鼠標(biāo)跟隨、鼠標(biāo)點擊劫持等,目的是欺騙和劫持用戶鼠標(biāo)點擊目標(biāo)按鈕,并進行各種“后臺”操作,獲取用戶敏感信息,控制攝像頭等終端PC資源。例如,將一個彈出框外觀設(shè)計成與QQ消息框一模一樣的形式,用戶潛意識中會不假思索點擊查看最新的消息,從而觸發(fā)惡意攻擊。
拖放劫持
在Black Hat Europe 2010大會上,Paul Stone提出了基于點擊劫持延伸的另外一種攻擊模式——鼠標(biāo)“拖放劫持”攻擊。它具有以下四項特點:
操作簡單:點擊某個對象,并按住鼠標(biāo)按鈕不放,將鼠標(biāo)移動到另一個區(qū)域,然后釋放鼠標(biāo)按鈕將對象“放”在這里。
可見即可拖:瀏覽器中可以拖放對象一直在不斷的增加,而且允許頁面上任何控件成為放置目標(biāo),隨著HTML5的發(fā)展,支持拖放操作的API函數(shù)也會相應(yīng)增多而且功能強大。HTML5中拖動時依次觸發(fā)以下事件:Dragstart、Drag、Dragend;放置時依次觸發(fā)以下事件:Dragenter、Dragover、Dragleave或 Drop。
dataTransfer 對象:dataTransfer 對象使得自定義處理拖曳操作成為可能。dataTransfer對象可于源對象和目標(biāo)對象中使用,通過event對象完成這種功能。典型用法是,setdata方法用于源事件,以指定格式給對象賦予數(shù)據(jù);相應(yīng)的,getData方法用于目標(biāo)事件以便確保獲取的數(shù)據(jù)和數(shù)據(jù)格式。
跨域操作:拖放不受同源策略限制,用戶可以把一個域的內(nèi)容拖放到另外一個不同的域,而這樣的操作是“點擊劫持”無法做到的。跨域操作可以拖放鏈接,這些鏈接中可能會有session key,token,password,也可以拖放內(nèi)容,把頁面拖拽到文本編輯模式中,這樣就可以看到源代碼。這些HTML源代碼中可能會有type="hidden"等敏感信息。
觸屏劫持
近幾年,移動互聯(lián)網(wǎng)發(fā)展十分迅速,通過智能移動終端上網(wǎng)的用戶數(shù)已遠(yuǎn)超PC用戶。針對現(xiàn)有智能移動設(shè)備,斯坦福大學(xué)的研究人員從攻擊電腦瀏覽器的類似方式點擊劫持引申出一個新的概念:觸屏劫持。
當(dāng)前的智能移動設(shè)備觸屏即包含了PC上的鼠標(biāo)和鍵盤全部功能,智能設(shè)備屏幕小,視覺攻擊更容易。在智能移動設(shè)備觸屏上,手指的點擊與松開、拖與放都有特定的API函數(shù)接口,完全可以編寫瀏覽器識別的WEB腳本。此外,針對移動終端的WEB應(yīng)用安全還未得到足夠重視(因為攻擊事件還相對少),因此,點擊劫持變種為觸屏劫持(Tap jacking)并在觸屏上實現(xiàn)是完全可能的。
防御Click Jacking
點擊劫持是用巧妙的視覺欺騙的方式對WEB會話進行劫持。通過對點擊劫持攻擊模式分析,可以發(fā)現(xiàn)其實現(xiàn)必須滿足以下幾個前提:一是惡意網(wǎng)頁必須能夠以一定方式存在于正常網(wǎng)頁中,這需要依賴Iframe等一些特定技術(shù)實現(xiàn)方式;二是客戶端瀏覽器Cookie,攻擊者能夠利用用戶身份進行惡意攻擊;三是網(wǎng)頁之上必須有欺騙鼠標(biāo)操作交互,誘騙用戶點擊、拖放。針對以上特點,筆者設(shè)計實現(xiàn)對于點擊劫持的防御解決方案。
點擊劫持防御主要包含客戶端防御和服務(wù)器端防御兩個方面。對于客戶端來說,目前幾乎所有的瀏覽器都提供了防御點擊劫持的安全機制,例如支持X-Frame-Options。對于客戶端來說,及時更新瀏覽器、修復(fù)安全漏洞,提高個人安全意識,不隨意訪問、點擊不安全的頁面,都能夠有效地防止這一類惡意攻擊。
針對服務(wù)器端的防御方法,目前有三種:
支持X-Frame-Options。X-Frame-Options是由微軟提出來的防御點擊劫持的一種方法,WEB開發(fā)人員可以在HTML responses中加入一個X-Frame-Options字段,瀏覽器會根據(jù)X-Frame-Options字段中參數(shù)來判斷頁面是否可以被IFRAME標(biāo)簽包含,通過拒絕或限制iframe 載入,黑客就無法通過Iframe 隱藏特定的網(wǎng)頁。
使用Frame Busting代碼。這種方法是使用javascript腳本來對頁面進行控制,達到頁面無法被IFRAME標(biāo)簽包含。但是如果用戶瀏覽器禁用JavaScript 腳本執(zhí)行,則Frame Busting 代碼也無法正常運行,所以這一方法只能提供有限的防御。
使用驗證碼認(rèn)證用戶。在網(wǎng)站頁面上增加認(rèn)證碼來識別用戶,確定是用戶的發(fā)出的點擊命令才執(zhí)行。例如,在許多網(wǎng)站上設(shè)置的交互認(rèn)證碼,要求用戶輸入圖形中的字符、選擇相似圖形等。
(作者單位:國網(wǎng)浙江杭州市蕭山區(qū)供電公司)endprint