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