摘要:Web應(yīng)用在移動終端的廣泛普及給用戶提供了便利的服務(wù),與此同時惡意Web網(wǎng)頁中的Javascript代碼也會帶來嚴(yán)重的安全問題,如何檢測惡意網(wǎng)頁一直是一個熱點安全問題。本文首先介紹常見的惡意網(wǎng)頁攻擊技術(shù),并在此基礎(chǔ)上針對性地提出惡意網(wǎng)頁攻擊的檢測方法;最后闡述了一種基于JavaScript的輕量級惡意網(wǎng)頁檢測技術(shù)。
關(guān)鍵詞:惡意網(wǎng)頁;攻擊技術(shù);檢測方法;Javascript
中圖分類號:G642 文獻標(biāo)識碼:A
文章編號:1009-3044(2019)34-0029-02
和傳統(tǒng)的終端設(shè)備一樣,移動終端在使用過程中也面臨嚴(yán)重的安全風(fēng)險,這不僅和移動終端自身的安全設(shè)置有關(guān),也在很大程度上受到訪問的Web網(wǎng)站的安全性的影響。
終端在訪問網(wǎng)絡(luò)頁面時,如果頁面能夠利用終端的設(shè)置漏洞對其進行攻擊,則認(rèn)為這樣的網(wǎng)頁就是惡意網(wǎng)頁,一般認(rèn)為那些可以偷偷獲取用戶敏感信息、或引誘使用者下載惡意程序的頁面都是惡意網(wǎng)頁。
目前惡意網(wǎng)頁已經(jīng)發(fā)展成一種嚴(yán)重的安全問題,相關(guān)研究表明它已經(jīng)成為互聯(lián)網(wǎng)上針對移動終端的主要工具,針對移動終端的攻擊技術(shù)也呈現(xiàn)出多樣化。更加嚴(yán)重的是,為了增加惡意Web頁面的攻擊范圍和能力,惡意網(wǎng)頁開始向云端發(fā)展,攻擊手段更加隱蔽。
1 惡意網(wǎng)頁攻擊技術(shù)
產(chǎn)生惡意網(wǎng)頁的一個必要前提是提供惡意的Web服務(wù),這些服務(wù)只有將惡意頁面推送到用戶終端才能實現(xiàn)惡意攻擊。常見的惡意攻擊途徑包括[1]:(1)瀏覽器及其插件。用戶使用Web應(yīng)用最常用的入口就是瀏覽器,因此它就成為惡意網(wǎng)頁攻擊的首要途徑。Web應(yīng)用設(shè)計過程中的技術(shù)能力、測試水平等因素會導(dǎo)致Web應(yīng)用存在BUG,一旦遇到特殊的場景會觸發(fā)不可預(yù)料的行為,也就是常說的漏洞。(2)社交網(wǎng)絡(luò)。目前產(chǎn)生了各種各樣的社交應(yīng)用,包括基于桌面的社交程序、基于瀏覽器的社交論壇等。為了吸引用戶進入預(yù)先構(gòu)建的惡意網(wǎng)站,攻擊者會發(fā)布諸如紅包、色情圖片等,一旦用戶點擊就會進入惡意網(wǎng)頁。(3)電子郵件。公開的電子郵件經(jīng)常受到攻擊者的青睞,惡意網(wǎng)頁會給大量的目標(biāo)用戶發(fā)送有吸引力的郵件,目標(biāo)用戶一旦點擊就會進入惡意站點。
上述攻擊途徑只是惡意網(wǎng)頁的傳播方式,它們的實現(xiàn)依賴于底層的惡意網(wǎng)頁攻擊技術(shù)。常見的惡意網(wǎng)頁攻擊技術(shù)包括[2]:Iframe攻擊、目標(biāo)重定向攻擊、xss跨站腳本攻擊,混淆代碼攻擊以及頁面下載攻擊等。
Iframe攻擊指的是攻擊者在用戶查看的網(wǎng)頁內(nèi)嵌入使用惡意代碼鏈接的頁面,用戶不能區(qū)分此惡意頁面與期望訪問的頁面。因此,這種攻擊方式具有一定的隱蔽性,用戶難以察覺。在網(wǎng)頁實現(xiàn)過程中可以通過多種方式嵌入Iframe,最常見的方式是借助document的write方法和getElementByID方法。在用戶受到Iframe攻擊后,其在網(wǎng)絡(luò)頁面中輸入的各種信息,比如用戶資料、資金賬號及密碼等都會被攻擊者獲取;另外,攻擊者還可以在此基礎(chǔ)上進行其他各種方式的攻擊。Iframe攻擊的典型特征是會使用Iframe標(biāo)簽,所以對JavaScript代碼反混淆后如果發(fā)現(xiàn)含有ifame標(biāo)簽,則說明JavaScript代碼可能有惡意代碼。
目標(biāo)重定向攻擊指的是改變用戶想要訪問的目標(biāo)頁面,將其重定向到一個和目標(biāo)頁面非常相似的惡意頁面。重定向功能的出發(fā)點在于縮短網(wǎng)址、避免網(wǎng)絡(luò)頁面出現(xiàn)斷開鏈接等現(xiàn)象,但是常被攻擊者用于重定向到惡意頁面。重定向攻擊是XSS等攻擊方式的前提,和Iframe攻擊有一定的相似性,只不過重定向攻擊是直接到達(dá)一個新的惡意頁面,Iframe攻擊是在目標(biāo)頁面中嵌入一個惡意頁面。網(wǎng)頁重定向攻擊也有多種實現(xiàn)方式,比如利用document的location方法或window的location方法。在對頁面反混淆后,如果發(fā)現(xiàn)重定向方法就可以認(rèn)為是存在重定向攻擊。 XSS攻擊又稱為跨站腳本攻擊。有些網(wǎng)絡(luò)頁面中的動態(tài)功能沒有嚴(yán)格區(qū)分頁面內(nèi)容及JavaScript代碼,這樣惡意頁面中的動態(tài)內(nèi)容就能夠繞過同源策略攻擊Web客戶端[3]。如果Web應(yīng)用沒有進行嚴(yán)格的過濾或轉(zhuǎn)義,那么惡意代碼就有了用武之地??缯灸_本攻擊最主要的目的是竊取Web客戶端的緩存或會話信息。
應(yīng)用代碼在保持功能不變的前提下可以進行一定的變形,這就是常說的“混淆”。攻擊者也常常會采取混淆的方式隱藏惡意代碼,從而逃過安全工具的檢查。只要靜態(tài)分析工具不能檢測出經(jīng)過混淆的惡意代碼,它就可以存活更長的時間。
2 JavaScript攻擊實例及其檢測方法
在瀏覽器的版本比較舊的情況下,上面的代碼會借助瀏覽器漏洞給代碼中指定的img元素鏈接一個可執(zhí)行文件,并將此元素隱藏起來;這樣一來,即使用戶加載了含有可執(zhí)行程序的網(wǎng)頁也不會發(fā)現(xiàn),從而在用戶感覺不到異常的情況下執(zhí)行惡意代碼。
一個典型的瀏覽器劫持攻擊代碼如下:
Hijack函數(shù)會修改正常函數(shù)的實現(xiàn),從而達(dá)到瀏覽器劫持的目的。
為了得到類似上述惡意代碼的行為特征,可以獲取代碼內(nèi)詞匯間的順序關(guān)系。上述惡意代碼邏輯上看起來是正常的,傳統(tǒng)的分詞工具難以進行有效分詞,本文實際分詞時采取了如下過程:(1)代碼清洗。先去掉注釋行、空白以及各種標(biāo)簽以外的內(nèi)容。(2)生成語法樹。借助Esprima把清洗后的代碼生成為語法樹。(3)分詞。對于html標(biāo)簽根據(jù)等號進行分詞,并且丟棄其他標(biāo)簽相關(guān)賦值語句中的字符串。這樣一來就可以把待檢測代碼轉(zhuǎn)換為相應(yīng)的語法樹分詞。然后就能進一步進行特征提取。
3 基于JavaScript的輕量級惡意網(wǎng)頁檢測
惡意頁面代碼和正常的代碼有本質(zhì)的不同[4]:對于嵌入頁面的攻擊方式而言,惡意頁面的寬度經(jīng)常被設(shè)置為0,以防止用戶發(fā)現(xiàn)。在實現(xiàn)過程中,會加入一個始終為真的判斷語句,保證惡意代碼始終執(zhí)行。惡意頁面地址被拆分為多個短字符串,并在拼接后賦值給一個通過document的write方法動態(tài)生成的變量;如果惡意頁面的地址發(fā)生變化,也只需要將不同的拆分字符串賦值即可。因此,此類惡意代碼的顯著特征是有較多的字符串變量,以及很多通過“+”連接的字符串。
不論檢測哪種類型的惡意網(wǎng)頁,都離不開一個重要環(huán)節(jié)——頁面特征提取。特征提取可以提取頁面的特征,如果提取后的頁面符合滿足惡意網(wǎng)頁的特征,則可以認(rèn)為其是惡意網(wǎng)頁。在提取網(wǎng)頁的特征前,需要先把Javascript代碼進行相應(yīng)轉(zhuǎn)換。主要的特征提取步驟包括[5]:(1)對待分析網(wǎng)頁進行詞法分析,輸出為有效的功能性代碼,不再含有注釋以及空白行。(2)將功能性代碼轉(zhuǎn)換成特征詞表示的代碼。原樣保留關(guān)鍵詞、運算符等不變量,并用NUM代替數(shù)值,用ID代替變量及函數(shù)名。對于字符串則根據(jù)其長度進行不同的處理。
例如,對于表達(dá)式
parl=c0+“stringl”;
可以將其邏輯轉(zhuǎn)換為
ID=IDO+str0; 這樣一來既可以保留原來的代碼邏輯結(jié)構(gòu),又能夠大大簡化原有的代碼量;最重要的是,還可以盡量保留代碼的信息熵,也就是說代碼特征整體上不發(fā)生變化。在經(jīng)過這樣的處理后,每個網(wǎng)頁都可以用特征詞、不變量以及它們出現(xiàn)的頻數(shù)來代替。
提取完網(wǎng)頁的特征后,就可以據(jù)此構(gòu)建特征向量。主要有兩種特征向量構(gòu)造方法:一種是借助每個頁面特征值的頻數(shù)的比例構(gòu)建,另外一種是根據(jù)某特征詞是否出現(xiàn)構(gòu)建。不論哪種構(gòu)建方法,特征向量的維度一般不超過50,從而保證最后的特征檢測矩陣是一個低維矩陣。
在完成特征提取及特征向量構(gòu)建后,可以設(shè)計出一個包括數(shù)據(jù)收集、頁面分析、異常檢測等組成部分的輕量級惡意網(wǎng)頁檢測系統(tǒng)。整個檢測系統(tǒng)框架如圖l所示:
在實際測試時,本文把Alexa網(wǎng)站上公布的頁面視為正常頁面,將malwaredomains網(wǎng)站公布的頁面視為惡意網(wǎng)頁,將其組成訓(xùn)練數(shù)據(jù)集進行訓(xùn)練,然后識別待檢測的頁面,對于惡意網(wǎng)頁檢測具有較好的檢測效果。
參考文獻:
[1]張海艦,方舟,陳新.基于深度學(xué)習(xí)技術(shù)的惡意APP檢測方案[J].網(wǎng)絡(luò)安全技術(shù)與應(yīng)用,2017(8):109-112.
[2]馬洪亮,王偉,韓臻.面向drive-by-download攻擊的檢測力一法[J].華中科技大學(xué)學(xué)報:自然科學(xué)版,2018,15(7):9-13.
[3]沙鴻州,劉慶云,柳廳文,等.惡意網(wǎng)頁識別研究綜述[f].計算機學(xué)報,2018。38(9):21-25.
[4]徐青.JavaScript惡意代碼檢測技術(shù)研究[D].西南交通大學(xué),2018.
[5] Wang Y,Cai W D,Wei P C.A deep learning approach for de-tecting malicious JavaScrpt code[J]. Security&CommunicationNetworks, 2016, 9(11):1520-1534.
【通聯(lián)編輯:王力】
收稿日期:2019-09-11
作者簡介:姜文秀(1980-),女,江蘇江都人,講師,碩士,研究方向為數(shù)據(jù)庫、數(shù)據(jù)挖掘、嵌入式。