吳森焱,羅 熹,王偉平,覃 巖
1(中南大學(xué) 計算機學(xué)院,湖南 長沙 41008 3)
2(湖南警察學(xué)院 信息技術(shù)系,湖南 長沙 41 0083)
隨著互聯(lián)網(wǎng)的快速普及,用戶在生活和工作中享受到了互聯(lián)網(wǎng)帶來的便利服務(wù),同時也面臨著惡意網(wǎng)頁的安全威脅.惡意URL 指所對應(yīng)的網(wǎng)頁中,含有對用戶造成危害的惡意代碼.這些惡意代碼在用戶訪問網(wǎng)頁的過程中,利用用戶的瀏覽器或插件中存在的漏洞攻擊用戶,自動下載惡意軟件.根據(jù)賽門鐵克發(fā)布統(tǒng)計報告,2018年發(fā)現(xiàn)的新增惡意URL 達(dá)到近3 億個,惡意URL 已經(jīng)成為互聯(lián)網(wǎng)安全中最主要的威脅之一[1].
攻擊者利用惡意URL 進(jìn)行攻擊的整體流程通常包括:首先,攻擊者入侵正常網(wǎng)站取得管理權(quán)限,并在頁面中插入自動重定向代碼;這些代碼會將用戶引導(dǎo)到惡意URL,一旦用戶訪問這個被篡改網(wǎng)站的URL,用戶會在不知情的情況下被強制性自動跳轉(zhuǎn)到惡意網(wǎng)站;惡意網(wǎng)站根據(jù)用戶的請求信息判斷用戶的客戶端環(huán)境,對于符合攻擊條件的用戶,則直接返回包含惡意代碼的惡意頁面;當(dāng)用戶的瀏覽器在解析和執(zhí)行這些惡意頁面的過程中,惡意代碼就會自動執(zhí)行,利用瀏覽器或插件的漏洞取得高級的系統(tǒng)權(quán)限,自動將惡意軟件下載到用戶客戶端,對用戶造成持續(xù)性的危害.惡意URL 的整個攻擊流程不需要用戶參與交互,攻擊方式非常隱蔽.
目前,針對惡意網(wǎng)站的檢測方法多是對頁面代碼進(jìn)行靜態(tài)分析或者采用動態(tài)執(zhí)行的方式來進(jìn)行檢測.其中,基于頁面代碼靜態(tài)分析的方法通過對頁面代碼進(jìn)行靜態(tài)匹配與分析,然后基于啟發(fā)式規(guī)則和機器學(xué)習(xí)進(jìn)行檢測,常見的頁面特征包括隱藏標(biāo)簽的數(shù)量、字符串的最大長度和頁面中URL 的數(shù)量等.基于頁面代碼靜態(tài)分析的方法檢測速度較快,通常用于初步的篩選和過濾.基于動態(tài)執(zhí)行的方法是在受控環(huán)境(如客戶端蜜罐)中執(zhí)行源代碼,監(jiān)控觸發(fā)的行為與系統(tǒng)狀態(tài)變化,但只有在特定的環(huán)境下才會觸發(fā)惡意URL 的攻擊行為.
盡管研究人員提出了多種檢測方法,惡意URL 會采用多種逃避檢測的方法,例如用代碼混淆來逃避靜態(tài)分析中的特征提取,從而使得基于靜態(tài)特征的方法失效;用客戶端環(huán)境探測來識別用戶客戶端類型,逃避基于行為的動態(tài)執(zhí)行檢測;以及用頁面重定向跳轉(zhuǎn)將用戶逐步引向真正的惡意站點,從而逃避靜態(tài)特征提取.這些逃避手段給惡意URL 的檢測帶來了挑戰(zhàn).面對上述問題,我們從3 個方面擴展了惡意URL 的檢測特征,將重定向跳轉(zhuǎn)、客戶端環(huán)境探測等特點補充為檢測依據(jù),提出了融合多種特征的惡意URL檢測方法.本文的主要貢獻(xiàn)包括:
(1)在特征選擇方面,融合了頁面內(nèi)容、JavaScript 函數(shù)參數(shù)和Web 會話流程這3 個方面的25 個特征,提出了惡意URL 的檢測方法——HADMW,其中包含了重定向跳轉(zhuǎn)、客戶端探測、HTML5 新出現(xiàn)標(biāo)簽和事件函數(shù)等新的頁面特征,從JavaScript 函數(shù)的參數(shù)長度和參數(shù)內(nèi)容中提取的函數(shù)參數(shù)特征,以及從會話流程中的協(xié)議、響應(yīng)碼和響應(yīng)資源類型等方面提取的Web 會話流程特征;
(2)通過HpHosts 和ZeusTracker 等公開網(wǎng)站收集了1 萬多的惡意URL 數(shù)據(jù)集,并對提出的檢測方法進(jìn)行了測試,結(jié)果表明:HADMW 與部分特征組合方法相比具有更好的精確性和召回率,分別達(dá)到了96.2%和94.6%,說明特征融合有效提高了分類器的準(zhǔn)確性;
(3)將HADMW 與現(xiàn)有開源項目以及免費版本的安全軟件進(jìn)行對比測試,結(jié)果表明:相比于現(xiàn)有檢測工具,HADMW 取得了更好的檢測效果.
本文第1 節(jié)介紹相關(guān)工作.第2 節(jié)詳細(xì)介紹選取的特征與原因.第3 節(jié)介紹本文檢測方法的基本思想.第4節(jié)介紹特征提取的過程與特征處理方法.第5 節(jié)介紹實驗測試的數(shù)據(jù)集、實驗設(shè)計和實驗結(jié)果.最后,第6 節(jié)是對本文工作的總結(jié).
目前,國內(nèi)外安全廠商和科研人員針對惡意URL 的檢測方法展開多方面研究,并提出了多種檢測方法,主要包括采用基于黑名單過濾和簽名匹配的方法,以及基于特征的檢測方法.
基于黑名單過濾是一種常見的方法,該方法通過維護(hù)黑名單列表來檢測惡意URL[2].著名的Google Safe Browsing 就是Google 公司基于該方法提供的工具,用于保護(hù)瀏覽器用戶的安全[3].基于簽名匹配的方法通過將頁面源代碼與簽名進(jìn)行匹配來檢測惡意URL,由于頁面中惡意代碼變化非???因此,基于簽名匹配的方法很難全面地檢測惡意URL.基于特征的檢測方法依據(jù)安全專家的相關(guān)經(jīng)驗和知識來選取具有區(qū)分性的特征,不同類型的特征適用于不同的檢測場景.相關(guān)研究包括以下類型.
(1)基于靜態(tài)頁面特征的方法
基于靜態(tài)頁面特征的方法是一種從頁面源代碼中選取特征、基于啟發(fā)式規(guī)則和機器學(xué)習(xí)進(jìn)行分類的檢測方法,常見的頁面特征包括隱藏標(biāo)簽的數(shù)量、字符串的最大長度和頁面中URL 的數(shù)量等.文獻(xiàn)[4]提出從頁面中的HTML,JavaScript 以及URL 這3 個方面分別選取特征進(jìn)行檢測.文獻(xiàn)[5]提出根據(jù)長字符串和編碼函數(shù)的數(shù)量等特征結(jié)合機器學(xué)習(xí)算法進(jìn)行分類.文獻(xiàn)[6]使用字符串最大熵值和字符串的長度等作為特征,并訓(xùn)練多個分類器來檢測惡意代碼.基于靜態(tài)頁面特征的方法檢測速度較快,適合于快速篩選可疑的頁面,但存在誤判率較高的問題.文獻(xiàn)[7]認(rèn)為網(wǎng)頁中單詞語義包含了釣魚網(wǎng)頁行為和內(nèi)容的線索,提出了一種基于上下文內(nèi)容和關(guān)鍵詞密度的釣魚網(wǎng)頁檢測方法,從HTML 中判斷網(wǎng)頁中關(guān)鍵詞集合是否存在,并提取關(guān)鍵詞集合的頻率和密度等特征,使用機器學(xué)習(xí)對網(wǎng)頁進(jìn)行分類但該方法不適用于惡意頁面的檢測.
(2)基于會話交互特征的方法
基于會話交互特征的方法從網(wǎng)絡(luò)流量中提取會話交互過程,關(guān)注正常網(wǎng)站和惡意URL 在會話交互模式中的區(qū)別.文獻(xiàn)[8]提出使用客戶端蜜罐捕獲會話過程的數(shù)據(jù),提取會話中重定向跳轉(zhuǎn)和逃避檢測行為等特征.文獻(xiàn)[9]提出使用會話流量中的字節(jié)總數(shù)、平均每個包字節(jié)數(shù)等特征構(gòu)建模型進(jìn)行檢測.文獻(xiàn)[10]提出通過收集網(wǎng)絡(luò)流量用于構(gòu)建用戶訪問鏈,并提取短時間段中域名的數(shù)量等特征,使用決策樹來識別惡意重定向鏈.文獻(xiàn)[11]提出通過記錄瀏覽器與網(wǎng)站間的交互,將整個過程抽象為圖表示,聚合重定向鏈得到重定向圖,并從圖中提取特征.文獻(xiàn)[12]提出基于重定向行為進(jìn)行檢測的方法,側(cè)重于會話訪問的數(shù)據(jù),包括訪問時間、Referer 引用等特征.但是使用單一會話交互特征的方法檢測準(zhǔn)確性較弱.文獻(xiàn)[13]直接根據(jù)網(wǎng)絡(luò)代理獲取的惡意網(wǎng)站訪問流程包含的URL 序列進(jìn)行分類,提取其中的URL 字符串、域名、文件名和路徑長度以及域名注冊國家等特征,使用卷積神經(jīng)網(wǎng)絡(luò)CNN 來檢測惡意URL.該方法本質(zhì)上也是利用了URL 重定向特征,但由于代理獲取的訪問序列中包含頁面加載資源、外部腳本等噪聲,導(dǎo)致該方法檢測率較低.
(3)基于動態(tài)行為特征的方法
動態(tài)行為特征指源代碼在瀏覽器的執(zhí)行過程中觸發(fā)的行為以及系統(tǒng)底層API 調(diào)用等特征,如注冊表修改和進(jìn)程創(chuàng)建等.現(xiàn)有的檢測方法通過執(zhí)行源代碼,監(jiān)控觸發(fā)的行為與系統(tǒng)狀態(tài)變化,提取行為特征進(jìn)行檢測.文獻(xiàn)[14]提出使用高交互蜜罐模擬客戶端,記錄與服務(wù)器間的交互信息,同時監(jiān)控系統(tǒng)狀態(tài)的改變,從而發(fā)現(xiàn)存在的威脅.文獻(xiàn)[15]提出基于動態(tài)行為的網(wǎng)頁木馬檢測方法,針對惡意腳本的可疑操作提取行為,監(jiān)控動態(tài)執(zhí)行函數(shù),根據(jù)定義的規(guī)則提取行為特征,該方法可對抗代碼混淆的干擾,但采用動態(tài)分析檢測效率較低.文獻(xiàn)[16]專注于惡意攻擊的事后取證與分析,提出一個取證引擎JSgraph,記錄瀏覽器中JavaScript 程序執(zhí)行的細(xì)粒度細(xì)節(jié),重點關(guān)注于JavaScript 對DOM 的修改,實現(xiàn)對用戶遭受的基于JavaScript 的惡意網(wǎng)站攻擊過程進(jìn)行事后取證分析.該方法沒有檢測惡意頁面,而是用于提取惡意頁面攻擊行為的細(xì)粒度行為.基于動態(tài)行為特征的方法對惡意URL 的檢測準(zhǔn)確率較高,但是這種方法檢測過程中需要加載和運行源代碼,當(dāng)惡意頁面代碼具有環(huán)境檢測能力來逃避檢測時,可能無法捕獲到惡意動態(tài)行為特征.
近年來出現(xiàn)了結(jié)合靜態(tài)分析和動態(tài)檢測的方案.文獻(xiàn)[17]中的方案先采用靜態(tài)特征分類,從HTML 和JavaScript 代碼以及URL 這3 個方面提取特征進(jìn)行分類.對于靜態(tài)分類為可疑的對象采用動態(tài)分析,即通過動態(tài)執(zhí)行監(jiān)控應(yīng)用程序接口的調(diào)用信息來進(jìn)一步判定.文獻(xiàn)[18]分析了惡意URL 與客戶端的交互模式,從3 個方面提取了特定內(nèi)容特征、特定交互特征和特定連接特征,提出根據(jù)會話交互模式構(gòu)建分類模型的方法,使用決策樹對惡意URL 進(jìn)行分類.但是選取的特征對檢測效果的影響很關(guān)鍵.
綜上所述,現(xiàn)有的檢測方法中,單一依靠靜態(tài)頁面特征或會話交互特征檢測準(zhǔn)確性較弱.而動態(tài)行為特征方法面臨的問題是:惡意代碼可能通過探測用戶客戶端的環(huán)境來識別檢測引擎,從而終止惡意行為以逃避檢測的問題.不同于疊加使用的方法,我們的方法無需對系統(tǒng)底層API 調(diào)用行為進(jìn)行捕獲,而直接將頁面特征和會話特征進(jìn)行了結(jié)合,面向逃避檢測問題,在頁面特征方面,我們提出了包含重定向跳轉(zhuǎn)、客戶端探測、HTML5 新出現(xiàn)標(biāo)簽和事件函數(shù)以及惡意VBScript 腳本代碼的新特征.同時,為了更加準(zhǔn)確地檢測,選取關(guān)鍵JavaScript 函數(shù)的參數(shù)長度和參數(shù)內(nèi)容作為檢測特征.
隨著針對惡意URL檢測方法的不斷改進(jìn),目前惡意URL 的逃避檢測手段也變得越來越多樣化,惡意URL采用的主要逃避檢測手段包括頁面代碼混淆、頁面代碼注入、客戶端環(huán)境探測和頁面重定向跳轉(zhuǎn),而且惡意URL 通常會將多種手段結(jié)合來進(jìn)行逃避檢測.
頁面代碼混淆通常用于開發(fā)者對頁面代碼進(jìn)行保護(hù)和壓縮,而攻擊者采用代碼混淆手段則是用于隱藏惡意代碼,從而逃避安全軟件檢測.惡意URL 利用JavaScript 腳本代碼中的字符串操作函數(shù)對惡意代碼進(jìn)行加密混淆和模糊處理,然后使用動態(tài)執(zhí)行函數(shù)執(zhí)行惡意代碼.其中最常見的代碼混淆方式是對頁面中的字符串進(jìn)行的操作,如對字符串進(jìn)行拆分、拼接和編碼等.混淆后的惡意代碼與原來的惡意代碼完全不相同,給很多頁面內(nèi)容分析方法造成了較大困難.如圖1所示是一段混淆前的惡意代碼,攻擊者在頁面上插入一個將寬度和高度設(shè)置為0.1、目的地址設(shè)置為惡意URL 的隱藏的iframe 標(biāo)簽.
Fig.1 Sample of unobfuscated malicious JS code圖1 未混淆的JS 惡意代碼樣本
而經(jīng)過混淆后的惡意代碼如圖2所示,攻擊者首先將要傳輸?shù)淖侄涡畔⒗胑ncodeURIComponent 函數(shù)進(jìn)行編碼,然后將多次使用“+”將惡意 URL 的真實地址進(jìn)行字符串拼接,實現(xiàn)混淆惡意 URL 地址,再通過appendChild 函數(shù)對頁面的DOM 結(jié)構(gòu)進(jìn)行操作.惡意代碼在執(zhí)行的過程中,將拼接的惡意iframe 標(biāo)簽插入到頁面中.基于以上對惡意代碼的分析可以看出:代碼混淆的特點主要體現(xiàn)在頁面源代碼中,攻擊者在源代碼中進(jìn)行混淆操作.
Fig.2 The malicious JS code after obfuscation圖2 進(jìn)行混淆后后的惡意代碼JS 樣本
攻擊者通常并不會直接將惡意代碼插入頁面中,而是利用頁面代碼注入的方式引入外部的惡意代碼,其中,將惡意代碼注入網(wǎng)頁中的方式包括使用HTML 標(biāo)簽注入外部惡意代碼和使用JavaScript 腳本動態(tài)注入惡意代碼.相比于直接將惡意代碼寫在頁面中,攻擊者使用HTML 標(biāo)簽注入外部惡意代碼的方式更加隱蔽,如圖3所示是一段利用iframe 標(biāo)簽來注入外部惡意代碼的示例,使用iframe 標(biāo)簽來加載外部惡意代碼,并將標(biāo)簽的屬性設(shè)置為不可見狀態(tài),在用戶不知情的情況下注入外部惡意代碼.這些惡意標(biāo)簽直接在頁面文件中,因此,通過分析頁面文件比較容易找到注入惡意代碼的源標(biāo)簽.
Fig.3 Sample of JS forinjected external code injection by iframe tag圖3 利用iframe 標(biāo)簽來注入外部代碼樣本
除了使用iframe 標(biāo)簽進(jìn)行代碼注入外,攻擊者還會利用JavaScript 腳本代碼的動態(tài)特性,實現(xiàn)動態(tài)地注入惡意代碼,例如JavaScript 語言中自帶的eval 函數(shù)可以動態(tài)執(zhí)行腳本代碼,以及使用document.write 函數(shù)修改頁面的DOM 結(jié)構(gòu)實現(xiàn)外部惡意代碼注入.如圖4所示是一段利用document.write 函數(shù)動態(tài)創(chuàng)建一個指向惡意URL的iframe 標(biāo)簽,實現(xiàn)注入外部惡意代碼.基于以上對惡意代碼分析可以看出:頁面代碼注入的特點主要體現(xiàn)在頁面源代碼中,攻擊者通過動態(tài)執(zhí)行將惡意標(biāo)簽注入到頁面中.
Fig.4 JS for A sample of dynamica HTML taglly creatgenerationed HTML tag圖4 動態(tài)寫入創(chuàng)建HTML 標(biāo)簽生成JS 代碼示例樣本
針對不同客戶端環(huán)境之間存在的差異性,攻擊者通常精心編寫JavaScript 腳本代碼對客戶端環(huán)境進(jìn)行探測,實現(xiàn)更加精準(zhǔn)地攻擊特定用戶群體,而且針對客戶端環(huán)境的探測也可以有效地識別檢測引擎.如圖5 中是一段對客戶端環(huán)境進(jìn)行探測的惡意JavaScript 代碼,其中,第2 行~第6 行JavaScript 腳本代碼實現(xiàn)判斷客戶端是否為真實瀏覽器的功能.因為模擬瀏覽器不會造成ActiveXObject 異常,但是惡意代碼故意拋出ActiveXObject 異常,因此只有支持處理異常的真實瀏覽器才會繼續(xù)執(zhí)行后續(xù)的操作.
惡意代碼通過客戶端的UserAgent 字段獲取瀏覽器指紋信息,并將其存儲在變量ua 中,使用條件分支語句進(jìn)行判斷.如果變量ua 包含“msie 6”或“msie 8”字符串,則分別執(zhí)行不同的重定向代碼,即客戶端瀏覽器為IE6 的用戶會被重定向跳轉(zhuǎn)到“http://exploit.com/IE6/”的網(wǎng)址,而客戶端瀏覽器為IE8 的用戶被重定向到“http://exploit.com/IE8/”的網(wǎng)址,其他不符合瀏覽器版本的用戶則不會發(fā)生重定向跳轉(zhuǎn).只有瀏覽器是IE6 和IE8 版本的用戶才會被跳轉(zhuǎn)到真正的惡意URL.基于以上分析可以看出:客戶端環(huán)境探測的特點主要體現(xiàn)在頁面源代碼和會話流程中,攻擊者通過客戶端環(huán)境探測代碼識別用戶的客戶端,并針對不同客戶端環(huán)境的用戶,分別重定向到不同的惡意網(wǎng)站.
Fig.5 Fig.5 A sample ofJS for client environment recognitiondetection圖5 客戶端環(huán)境識別樣本
為了使檢測引擎難以跟蹤和發(fā)現(xiàn)惡意URL 的真實地址,攻擊者還會在頁面中插入進(jìn)行自動重定向跳轉(zhuǎn)的惡意代碼,以此來逃避安全軟件的檢測.其中,惡意網(wǎng)頁最常使用Meta 標(biāo)簽設(shè)置頁面進(jìn)行刷新重定向,如圖6所示的惡意代碼是在頁面中設(shè)置Meta 標(biāo)簽中的http-equiv,content 和url 屬性值,從而實現(xiàn)在等待0.1s 后進(jìn)行自動刷新,然后重定向跳轉(zhuǎn)到惡意URLexploit.com.
Fig.6 A sample JS forof automatically redirected malicious codeion圖6 自動重定向跳轉(zhuǎn)的惡意代碼JS 樣本
基于以上分析可以看出:頁面重定向跳轉(zhuǎn)的特點主要體現(xiàn)在頁面源代碼和會話流程中,攻擊者通過重定向代碼將用戶導(dǎo)向惡意網(wǎng)站,以此來逃避檢測引擎的跟蹤.
特征選擇的過程,即根據(jù)正常網(wǎng)站和惡意網(wǎng)站各方面的差異性選擇具有明顯區(qū)別度的特征.在本節(jié)中,我們根據(jù)對真實存活的惡意URL 的會話流程進(jìn)行統(tǒng)計與分析.我們發(fā)現(xiàn):在惡意URL 的攻擊流程中,存在客戶端環(huán)境識別、多次重定向跳轉(zhuǎn)、典型的逃避檢測行為以及發(fā)送有效攻擊執(zhí)行載荷等典型特點,因此,我們主要從3個方面設(shè)計特征,包括頁面內(nèi)容特征、JavaScript 函數(shù)參數(shù)特征和Web 會話流程特征.
在選取頁面特征之前,我們首先從惡意樣本公布網(wǎng)站VirusShare(https://virusshare.com/)收集了近期公布的真實惡意頁面樣本,而正常頁面來源于Alexa 中受歡迎的正常網(wǎng)站.我們借助于人工分析,發(fā)現(xiàn)這些惡意頁面與正常頁面在HTML 和JavaScript 方面存在的差異.
正常頁面在通常情況下頁面整體HTML 結(jié)構(gòu)比較規(guī)范,頁面中不會包含很多的特殊字符和敏感字符串;而惡意頁面在HTML 結(jié)構(gòu)上與正常頁面相比存在較多的差異,例如,惡意頁面中通常包含某些可利用的HTML 標(biāo)簽和存在風(fēng)險的JavaScript 函數(shù),并且為了防止被檢測引擎分析,惡意頁面還會結(jié)合包括代碼混淆、代碼注入和客戶端環(huán)境識別等方式來逃避檢測.攻擊者通過混淆惡意代碼來隱藏真正目的,從而逃避檢測引擎,其中最常見的混淆方式是對字符串做操作,如字符串的拆分替換和編碼轉(zhuǎn)義,以及加密等操作.
除了以上的差異,我們還發(fā)現(xiàn):最新的惡意頁面更多地結(jié)合了HTML5 新出現(xiàn)標(biāo)簽和事件函數(shù),以及惡意VBScript 腳本代碼進(jìn)行攻擊.此外,惡意URL 還通過精心編寫的惡意代碼進(jìn)行自動的重定向跳轉(zhuǎn),從而逃避檢測引擎的跟蹤.同時,為了實現(xiàn)精準(zhǔn)化地攻擊特定用戶人群,惡意URL 在對用戶進(jìn)行攻擊之前,還會通過多種方式探測用戶的客戶端環(huán)境,判斷用戶客戶端是否滿足攻擊條件.我們在收集的樣本中分別隨機選取了1 000 個正常頁面和惡意頁面進(jìn)行了統(tǒng)計,圖7 顯示了樣本統(tǒng)計中新提出頁面特征的累積分布圖.
Fig.7 Cumulative distribution diagram of the new page features圖7 新頁面特征的累積分布圖
從圖中可以看出:在客戶端重定向總次數(shù)上,約40%的惡意頁面大于1,而只有20%左右的正常頁面跳轉(zhuǎn)總數(shù)大于1;而在客戶端環(huán)境探測總數(shù)上,大約73%的正常頁面都沒有進(jìn)行客戶端環(huán)境探測,而50%以上的惡意頁面都會進(jìn)行環(huán)境探測.除此之外,相比于正常頁面,惡意頁面中還會包含較多的控件標(biāo)簽、觸發(fā)事件函數(shù)和VBScript 敏感字符串.
因此,我們共選取了12 個頁面特征,這些頁面內(nèi)容特征中包含了相關(guān)研究的已有特征和擴充的新特征,見表1,其中,以*標(biāo)注的為HADMW 擴充的新特征.
Table 1 ESxtractedelected page features表1 選取的頁面特征
下面將對這些新特征進(jìn)行重點解釋.
(1)客戶端重定向總數(shù)
為了防止被安全軟件檢測和分析,攻擊者通常會在頁面中插入重定向跳轉(zhuǎn)的代碼,而且利用中轉(zhuǎn)網(wǎng)站多次的重定向跳轉(zhuǎn),從而實現(xiàn)隱藏最終的惡意服務(wù)器.我們對存活惡意URL 的頁面代碼進(jìn)行人工分析發(fā)現(xiàn),惡意URL 采用3 種方式自動重定向跳轉(zhuǎn),包括惡意代碼通過Meta 標(biāo)簽設(shè)置自動刷新refresh 屬性的時間進(jìn)行自動重定向、將惡意URL 的地址賦值給location 對象的href 屬性以及利用window.open 函數(shù)打開一個新的瀏覽器窗口的方式跳轉(zhuǎn)到惡意URL.這些方式都可以實現(xiàn)自動d2 將客戶端重定向跳轉(zhuǎn)惡意URL,因此,我們選取客戶端重定向跳轉(zhuǎn)代碼使用的總數(shù)量作為特征.
(2)客戶端環(huán)境探測總數(shù)
為了實現(xiàn)精準(zhǔn)化攻擊特定客戶端環(huán)境的用戶,攻擊者會精心構(gòu)造惡意代碼,利用JavaScript 腳本自帶的“navigator.userAgent”對象和自定義的控件函數(shù)來判斷用戶的環(huán)境是否滿足攻擊條件.惡意代碼獲取用戶的客戶端瀏覽器版本信息,然后通過多次條件匹配進(jìn)行判斷,只將滿足攻擊條件的用戶強制重定向跳轉(zhuǎn)到真實的惡意URL.而對于不滿足攻擊條件的用戶,惡意代碼則重定向跳轉(zhuǎn)到其他正常的網(wǎng)站.同時,越來越多的攻擊者利用現(xiàn)有的檢測瀏覽器版本的JavaScript 庫PluginDetect 對用戶的客戶端環(huán)境進(jìn)行探測.攻擊者利用現(xiàn)有的JavaScript 庫來檢測瀏覽器版本等信息,可以使惡意代碼更加容易逃避檢測.因此,我們將頁面源代碼中客戶端環(huán)境探測代碼使用的總數(shù)量作為特征.
(3)控件標(biāo)簽總數(shù)
控件標(biāo)簽是一類用于引入外部控件資源的標(biāo)簽,惡意頁面利用控件標(biāo)簽引入包含漏洞的外部控件資源,從而獲取系統(tǒng)的高級權(quán)限.我們選取了控件標(biāo)簽的數(shù)量作為特征,關(guān)注的控件標(biāo)簽包括Object 標(biāo)簽和Embed 標(biāo)簽.
(4)觸發(fā)事件函數(shù)總數(shù)
觸發(fā)事件是一類用于在進(jìn)行某個操作后自動觸發(fā)執(zhí)行后續(xù)動作的標(biāo)簽屬性.攻擊者將要執(zhí)行的惡意代碼與觸發(fā)事件進(jìn)行綁定,從而在事件觸發(fā)后自動的執(zhí)行惡意代碼.其中最常使用的觸發(fā)事件包括onload 和onclick事件,我們發(fā)現(xiàn),最新的惡意頁面結(jié)合了HTML5 中增加的onerror 和onscroll 事件來自動地觸發(fā)執(zhí)行惡意代碼.
(5)VBScript 敏感字符串總數(shù)
由于IE 瀏覽器使用范圍廣且存在較多的安全問題,惡意頁面越來越多地使用惡意VBScript 腳本對IE 瀏覽器進(jìn)行攻擊.因此,我們不只局限于對JavaScript 代碼的分析,還關(guān)注頁面中VBScript 代碼.為了執(zhí)行執(zhí)行惡意操作,惡意 VBScript 代碼中通常會包含敏感的字符串,我們將在頁面 VBScript 代碼中包含的“CreateObject”“WriteData”“svchost.exe”和“cmd.exe”字符串的總數(shù)量作為特征.
在對符合攻擊條件的用戶實施攻擊的過程中,惡意URL 會將包含惡意代碼的頁面發(fā)送給用戶.我們發(fā)現(xiàn):這些惡意代碼在執(zhí)行的過程中,JavaScript 關(guān)鍵函數(shù)的參數(shù)在長度和與內(nèi)容方面與正常代碼存在較大的區(qū)別,惡意代碼的關(guān)鍵函數(shù)的參數(shù)中含有更多敏感字符串,而在靜態(tài)頁面內(nèi)容分析的過程中難以獲得準(zhǔn)確的參數(shù)值.
因此,我們通過動態(tài)代碼執(zhí)行的方式獲取JavaScript 關(guān)鍵函數(shù)的參數(shù),并對關(guān)鍵函數(shù)的參數(shù)長度和參數(shù)內(nèi)容進(jìn)行更加細(xì)粒度的檢測,共選取了6 個JavaScript 函數(shù)參數(shù)特征,見表2.
Table 2 Extracted JavaScript function parameter features表2 選取的JavaScript 函數(shù)參數(shù)特征
下面將對選取的JavaScript 函數(shù)參數(shù)特征進(jìn)行詳細(xì)解釋.
(1)動態(tài)執(zhí)行函數(shù)參數(shù)特征
動態(tài)執(zhí)行函數(shù)是 JavaScript 中可以將傳入函數(shù)的參數(shù)字符串作為代碼執(zhí)行的一類函數(shù),包括 eval,setTimeout 和setInterval 函數(shù).為了逃避靜態(tài)分析檢測,攻擊者通常將惡意代碼作為字符串傳入eval 等動態(tài)執(zhí)行函數(shù)參數(shù)中,然后在頁面代碼解析過程中,動態(tài)地執(zhí)行這些惡意代碼來實施攻擊.惡意代碼中,傳入動態(tài)執(zhí)行函數(shù)的參數(shù)的長度普遍較長,而且參數(shù)內(nèi)容中經(jīng)常包含“iframe”“frame”“script”和“l(fā)ink”等敏感字符串,因此,選取動態(tài)執(zhí)行函數(shù)參數(shù)的平均長度和含敏感字符串的總數(shù)量作為特征.
(2)動態(tài)生成函數(shù)參數(shù)特征
動態(tài)生成函數(shù)是JavaScript 中可以實現(xiàn)插入標(biāo)簽和修改頁面DOM 結(jié)構(gòu)的一類函數(shù),包括document.write和document.writeln 函數(shù).惡意頁面為了逃避簽名匹配檢測,通常在頁面解析的過程中利用document.write 等函數(shù)動態(tài)的創(chuàng)建惡意標(biāo)簽.惡意代碼中,傳入動態(tài)生成函數(shù)的字符串參數(shù)的長度普遍較長,在參數(shù)內(nèi)容中通常會包含“iframe”“frame”“script”和“l(fā)ink”等敏感字符串,用于動態(tài)地創(chuàng)建這些標(biāo)簽,因此,選取動態(tài)生成函數(shù)參數(shù)的平均長度和含敏感字符串的總數(shù)量作為特征.
(3)escape 和unescape 函數(shù)參數(shù)特征
除了利用動態(tài)執(zhí)行函數(shù)和動態(tài)生成函數(shù)外,惡意頁面還經(jīng)常利用escape 函數(shù)對惡意代碼進(jìn)行編碼,然后在執(zhí)行的過程中,再通過unescape 函數(shù)進(jìn)行解碼還原得到初始的惡意代碼,通過一系列的編碼和解碼操作,可以混淆惡意代碼.惡意代碼中,傳入escape 和unescape 函數(shù)的字符串參數(shù)的通常較長,而且參數(shù)內(nèi)容中包含敏感字符串,用于后續(xù)創(chuàng)建惡意標(biāo)簽.
除了以上提出的頁面特征和JavaScript 函數(shù)參數(shù)特征,我們通過對大量的樣本進(jìn)行分析,發(fā)現(xiàn)了惡意URL與正常網(wǎng)站在會話過程中存在的差異,主要體現(xiàn)在會話過程中的重定向、會話協(xié)議、響應(yīng)碼和響應(yīng)資源類型等方面.
(1)會話樣本分析
我們從惡意流量公布網(wǎng)站Malware-traffic-analysis 下載了200 個惡意URL 會話流量包進(jìn)行統(tǒng)計與分析,這些流量包中包含了惡意URL 整個攻擊過程的全部會話流量.同時作為對比,我們在虛擬機環(huán)境中收集了200個訪問正常網(wǎng)站的會話流量包,模擬了一系列用戶訪問正常網(wǎng)站的行為,包括訪問社交網(wǎng)站、搜索引擎以及使用郵箱和點擊分享鏈接等.
我們關(guān)注用戶客戶端與網(wǎng)站服務(wù)器之間的交互過程,因此提取流量包中網(wǎng)站服務(wù)器的響應(yīng)頭信息和響應(yīng)內(nèi)容.表3 是從會話流量中提取的整個會話過程中網(wǎng)站服務(wù)器數(shù)量和重定向次數(shù)的統(tǒng)計結(jié)果.我們將同一會話過程中不同的IP 對應(yīng)為不同的網(wǎng)站服務(wù)器,從表中可以看出:在一個會話過程中,服務(wù)器數(shù)量最小值始終為1 個,即最簡單的會話只涉及客戶端和一臺服務(wù)器的交互過程;而在惡意URL 會話過程中,服務(wù)器數(shù)量最大值為58個,平均值為7.8 個,這些值都明顯大于正常網(wǎng)站會話過程中服務(wù)器數(shù)量的最大值和平均值.同時,在惡意URL 會話過程中平均會發(fā)生4.8 次的重定向跳轉(zhuǎn),而正常網(wǎng)站會話過程重定向平均值為0.45 次.
Table 3 Comparison of the number of servers and number of redirects in the session表3 會話中服務(wù)器數(shù)量和重定向數(shù)量的對比
除了會話過程中,服務(wù)器數(shù)量和重定向次數(shù)方面的差異,我們又從會話流量包中提取了服務(wù)器的響應(yīng)頭信息,包括協(xié)議信息、響應(yīng)碼和響應(yīng)資源類型等內(nèi)容.我們對正常網(wǎng)站和惡意URL 會話流量中響應(yīng)頭信息進(jìn)行統(tǒng)計,如圖8所示.從圖中可以看出:與正常網(wǎng)站的會話過程相比,惡意URL 會話過程中,相關(guān)響應(yīng)頭信息的統(tǒng)計分布明顯不同.其中,惡意URL 返回的以3 開頭的服務(wù)器端重定向響應(yīng)碼的數(shù)量明顯高于正常網(wǎng)站會話過程中的數(shù)量.我們分析原因是,惡意URL 通常會通過多次服務(wù)器端重定向跳轉(zhuǎn)來逃避安全軟件的檢測.
Fig.8 Comparison of the number of HTTP response types圖8 HTTP 響應(yīng)類型數(shù)目比較
同時,從圖中可以看出:以4 開頭的客戶端錯誤的響應(yīng)碼和以5 開頭的服務(wù)器端錯誤的響應(yīng)碼數(shù)量也明顯高于正常網(wǎng)站會話過程中的數(shù)量.我們分析,這是因為惡意URL 為了避免被用戶察覺到異常,對于不滿足攻擊條件的用戶通常會直接返回請求錯誤,所以會話請求錯誤的響應(yīng)碼數(shù)量更多.而在正常網(wǎng)站的訪問過程中,對于大部分的用戶請求,正常網(wǎng)站都能夠正常響應(yīng),很少發(fā)生請求錯誤的情況.
而且,正常網(wǎng)站中使用HTTPS 進(jìn)行通信的數(shù)量明顯大于惡意URL.我們分析正常網(wǎng)站通常會向認(rèn)證組織申請認(rèn)證證書,并在訪問過程中更多地使用安全的HTTPS 協(xié)議進(jìn)行會話通信,而惡意URL 很少能夠取得認(rèn)證組織的證書,因此在會話過程中很少使用HTTPS 協(xié)議進(jìn)行通信.
此外,惡意服務(wù)器通常利用瀏覽器中存在漏洞的控件進(jìn)行攻擊,因此在會話過程中,惡意服務(wù)器會針對不同的控件響應(yīng)特殊類型的資源文件.惡意URL 經(jīng)常利用存在漏洞的控件類型包括Java 和Adobe Fla sh Player 等.表4 為經(jīng)常被惡意URL 利用的5 種資源類型文件類型與Content-Type 字段的對應(yīng)表.我們在惡意URL 會話的HTTP 響應(yīng)頭中發(fā)現(xiàn)較多響應(yīng)的特殊資源文件,雖然在正常網(wǎng)站的訪問過程中也會響應(yīng)這些類型的資源文件,但是與正常網(wǎng)站相比,惡意URL 在整個會話過程中響應(yīng)特殊資源文件的數(shù)量更多,而且這些特殊資源文件的大小更大.
Table 4 Mapping of resource type and Content-Type表4 資源類型與Content-Type 字段對應(yīng)表
惡意URL 在接收到用戶的請求后,通常會對用戶的客戶端環(huán)境進(jìn)行判斷,只有符合攻擊條件的用戶才會被導(dǎo)向漏洞利用服務(wù)器.在這個過程中,還會進(jìn)行多次的重定向跳轉(zhuǎn),導(dǎo)致整個會話過程中重定向鏈的長度變得較長;而在正常網(wǎng)站的會話過程中,較少發(fā)生多次的重定向跳轉(zhuǎn).因此我們認(rèn)為,使用會話重定向鏈的最大長度能夠體現(xiàn)出惡意URL 這方面的差異.
我們發(fā)現(xiàn),在惡意URL 的會話過程中請求的URL 平均長度相比正常網(wǎng)站會話過程中請求URL 的平均長度更長.為了逃避安全廠商的黑名單檢測,惡意URL 的URL 地址通常存活時間較短,而且經(jīng)常更改和變換,攻擊者通常注冊較長的臨時域名地址來逃避黑名單的匹配檢測.
(2)Web 會話流程特征
根據(jù)以上對正常網(wǎng)站和惡意URL 會話過程的統(tǒng)計與分析,針對正常網(wǎng)站和惡意URL 在會話過程中的重定向、會話協(xié)議、響應(yīng)碼和響應(yīng)資源類型等方面存在的差異,共選取相應(yīng)的7 個Web 會話流程特征,見表5.
Table 5 Extracted Web session flow features表5 Web 會話流程特征
根據(jù)上述提出的12 個頁面特征、6 個JavaScript 函數(shù)參數(shù)特征和7 個Web 會話特征,結(jié)合機器學(xué)習(xí),我們提出了融合多種特征的惡意URL檢測方法.惡意URL檢測方法的整體示意圖如圖9所示:首先,通過數(shù)據(jù)采集器模擬客戶端環(huán)境,自動化地對存活的待檢測網(wǎng)站發(fā)起會話通信,記錄整個會話過程中關(guān)鍵函數(shù)代碼的執(zhí)行和頁面重定向跳轉(zhuǎn)過程等信息,將其保存在本地會話日志記錄中;根據(jù)待檢測網(wǎng)站的頁面源代碼和會話日志記錄,分別提取頁面特征、JavaScript 函數(shù)參數(shù)特征和Web 會話流程特征,并對待檢測網(wǎng)站的特征進(jìn)行標(biāo)準(zhǔn)化處理,得到待檢測網(wǎng)站的特征組合序列;然后將其輸入到已經(jīng)經(jīng)過訓(xùn)練的分類器模型中進(jìn)行檢測,得到待檢測網(wǎng)站的分類結(jié)果.
Fig.9 Diagram of detection approach圖9 整體檢測方法示意圖
為了盡最大化地觸發(fā)惡意URL的攻擊,誘導(dǎo)惡意URL 發(fā)送包含惡意代碼的頁面,我們配置客戶端請求的用戶代理字段,模擬了10 種經(jīng)常被攻擊的客戶端環(huán)境,包括Windows XP 、Windows7 操作系統(tǒng)搭配Internet Explorer 6.0,7.0,8.0 版本瀏覽器、Chrome 45.0.2623.87 版本瀏覽器、MacOSX 10_6_8 操作系統(tǒng)搭配Safari 5.1.1版本瀏覽器和Linux 系統(tǒng)搭配Chrome 45.0.2623.87 版本瀏覽器.這些模擬客戶端環(huán)境覆蓋了大多數(shù)正常用戶的常用客戶端環(huán)境.相比于使用真實客戶端環(huán)境進(jìn)行動態(tài)檢測,我們使用模擬的瀏覽器環(huán)境解析和執(zhí)行頁面代碼.我們將提取的頁面特征、JavaScript 函數(shù)參數(shù)特征和Web 會話特征組成待檢測網(wǎng)站的特征組合序列.如果惡意URL 針對不同類型的客戶端環(huán)境響應(yīng)不同的代碼,則在不同環(huán)境下會得到不同的特征組合序列.因此,每個待檢測網(wǎng)站在10 種模擬客戶端環(huán)境下共生成10 條特征組合序列.我們認(rèn)為:有任一種客戶端環(huán)境的特征組合序列被分類器判斷為惡意URL,就將待檢測網(wǎng)站分類到惡意URL 集合.
為了準(zhǔn)確地提取到本方法提出的頁面特征、JavaScript 函數(shù)參數(shù)特征和Web 會話流程特征,我們使用了開源客戶端框架Thug[19].Thug 是一款低交互式客戶端采集器,旨在模擬瀏覽器的行為以檢測惡意內(nèi)容,可以對頁面重定向跳轉(zhuǎn)行為進(jìn)行跟蹤,同時對會話過程中的服務(wù)器響應(yīng)頭等內(nèi)容進(jìn)行記錄.
(1)改寫擴展Thug
我們關(guān)注在代碼動態(tài)執(zhí)行過程中JavaScript 關(guān)鍵函數(shù)的參數(shù)值,因此我們在Thug 提供的開放接口的基礎(chǔ)上,分別對動態(tài)執(zhí)行函數(shù)、動態(tài)生成函數(shù)、escape 和unescape 函數(shù)進(jìn)行定制化改寫,實現(xiàn)在動態(tài)調(diào)用JavaScript函數(shù)的過程中記錄和匹配函數(shù)的參數(shù).如圖10所示是改寫動態(tài)執(zhí)行函數(shù)eval 的代碼:首先,根據(jù)規(guī)則重新定義eval 函數(shù),獲取傳入eval 函數(shù)的參數(shù)值,并將參數(shù)值賦給一個臨時變量;然后獲取變量的的字符串長度,通過多個條件語句匹配參數(shù)中是否包含敏感字符串,統(tǒng)計包含敏感字符串的總數(shù)量.
Fig.10 Rewrited dynamic execution function of eval圖10 改寫動態(tài)執(zhí)行函數(shù)eval
(2)特征提取
同時,我們從獲取的頁面源代碼和日志記錄中分別提取頁面特征和Web 會話特征.改寫后的Thug 模擬客戶端瀏覽器向待檢測網(wǎng)站發(fā)起會話請求,并將所有響應(yīng)的頁面源代碼保存到本地.我們使用正則表達(dá)式匹配頁面源代碼,提取12 個頁面特征.在與待檢測網(wǎng)站的會話過程中,Thug 記錄網(wǎng)站服務(wù)器發(fā)送給客戶端的響應(yīng)頭信息和響應(yīng)體內(nèi)容.我們根據(jù)定義的規(guī)則,從日志中分別提取會話協(xié)議、響應(yīng)碼和響應(yīng)資源類型等內(nèi)容,統(tǒng)計Web 會話流程特征.如圖11所示的代碼是從日志記錄中提取會話過程中,服務(wù)器響應(yīng)特殊資源文件數(shù)量與會話請求錯誤數(shù)量的特征.我們根據(jù)資源文件類型與Content-Type 字段的對應(yīng)表,匹配服務(wù)器返回的文件類型是否為關(guān)注的5 種特殊資源文件.同時根據(jù)服務(wù)器返回的響應(yīng)狀態(tài)碼,匹配客戶端請求錯誤和服務(wù)器端錯誤響應(yīng)碼的數(shù)量.
Fig.11 Extraction features of response resources and request error圖11 提取響應(yīng)資源與請求錯誤特征
在使用多種特征進(jìn)行分類的過程中,由于不同類型的特征性質(zhì)不同,這些特征通常具有不同的數(shù)量級和量綱.為了盡可能地減少特征在數(shù)值分布上所造成的影響,需要對原始的特征數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化處理.數(shù)據(jù)標(biāo)準(zhǔn)化是通過對數(shù)據(jù)進(jìn)行按比例縮放,落入一個較小的特定區(qū)間中,消除數(shù)據(jù)的單位限制,轉(zhuǎn)化為無量綱的純數(shù)值,使得不同量級的特征可以進(jìn)行加權(quán).其中最典型的數(shù)據(jù)標(biāo)準(zhǔn)化方法是Min-Max 標(biāo)準(zhǔn)化[20],即對原始數(shù)據(jù)進(jìn)行線性區(qū)間變換,計算方式如公式(1)所示:
其中,x表示原始值,max 表示樣本最大值,min 表示樣本的最小值,x*表示經(jīng)過標(biāo)準(zhǔn)化處理后的值.
我們使用Min-Max 標(biāo)準(zhǔn)化方法將特征值轉(zhuǎn)換為無量綱數(shù)據(jù),每個樣本的特征組合序列由25 個經(jīng)標(biāo)準(zhǔn)化處理后的特征值和分類值組成.我們將經(jīng)過標(biāo)準(zhǔn)化處理后的特征組合序列輸入到分類器中進(jìn)行訓(xùn)練,得到相應(yīng)的分類器模型.對于分類器算法的選擇,分別選取了常用的5 種機器學(xué)習(xí)算法,在實驗部分通過對比不同分類器的檢測效果,最終確定選取的分類器.
我們的方法在動態(tài)執(zhí)行的過程中提取JavaScript 參數(shù)特征和Web 會話特征,需要網(wǎng)站保持可訪問狀態(tài).因此我們從多個來源重新建立了正常網(wǎng)站和惡意URL 數(shù)據(jù)集,分別包括:
①正常網(wǎng)站數(shù)據(jù)集:正常網(wǎng)站來源于Alexa(https://www.alexa.com/topsites),將Alexa 公布的受歡迎的網(wǎng)站的主頁作為初始URL,使用爬蟲請求網(wǎng)頁來獲取頁面中的鏈接.為了確保正常網(wǎng)站數(shù)據(jù)集的可信性,從正常網(wǎng)站的主頁和主頁中鏈接隨機選擇組成正常網(wǎng)站數(shù)據(jù)集,共收集了8 69 7 個有效存活的正常網(wǎng)站的URL;
②惡意URL 數(shù)據(jù)集1:為了盡可能的增加惡意URL 的樣本數(shù)量,分別從著名的惡意URL發(fā)布網(wǎng)站HpHosts(https://hosts-file.net/)和ZeusTracker(https://www.abuse.ch)收集了自2016年1月~2019年2月期間內(nèi)公布的仍存活的惡意URL,共收集了6 928 個有效存活惡意URL 的URL;
③惡意URL 數(shù)據(jù)集2:從安全研究網(wǎng)站Malwaredomainlist(https://www.malwaredomainlist.com/mdl.php),UrlQuery(https://urlquery.net/)和Malc0de(http://malc0de.com/bl/)網(wǎng)站獲取自2016年1月~2019年2月期間內(nèi)公布的存活的惡意URL,并與惡意URL 數(shù)據(jù)集1 中的惡意URL 匹配,剔除已有的惡意URL,共收集了2000 個有效存活惡意URL 的URL.
融合多種特征的檢測方法采用機器學(xué)習(xí)進(jìn)行分類檢測,因此,我們將收集的正常網(wǎng)站和惡意URL 數(shù)據(jù)集劃分?jǐn)?shù)據(jù)集1 和數(shù)據(jù)集2,見表6.
Table 6 The Dataset表6 數(shù)據(jù)集
評價分類器模型的效果通常會使用不同的指標(biāo)來進(jìn)行綜合評估,其中,True Positive(TP),True Negative(TN),False Positive(FP)和False Negative(FN)是進(jìn)行評估的基準(zhǔn)數(shù)據(jù).基于基準(zhǔn)評價數(shù)據(jù),通常用于評估分類結(jié)果的的指標(biāo)包括精確率(precision)、召回率(recall)、F值(F-measure)、誤判率和漏判率,具體是:
①精確率:指測試集中被正確判為惡意頁面的數(shù)量占所有被判為惡意頁面數(shù)量的百分比;
②召回率:指測試集中惡意頁面被正確判為惡意頁面的數(shù)量所占全部惡意頁面數(shù)量的比值;
③F值:需要綜合全面地考慮精確率和召回率,而F值是對精確率和召回率的加權(quán)調(diào)和平均,因此,當(dāng)F值比較高時,可以說明檢測方法更有效;
④誤判率:指測試集中正常頁面被誤判為惡意網(wǎng)頁的數(shù)量占全部真正正常頁面數(shù)量的百分比;
⑤漏判率是指測試集中惡意頁面被漏判為正常頁面的數(shù)量占全部真正惡意頁面數(shù)量的百分比.
對于分類器的選擇,我們在數(shù)據(jù)集1 上分別采用5 種不同的機器學(xué)習(xí)算法訓(xùn)練分類器,并進(jìn)行十折交叉驗證,評估不同機器學(xué)習(xí)算法的分類效果,計算10 輪的惡意URL 的平均精確率、平均召回率和F值,結(jié)果見表7.
Table 7 Ten-fold cross-validation results of different algorithms表7 不同算法十折交叉驗證結(jié)果
從測試結(jié)果中可以看出,融合多種特征的檢測方法在5 種不同的機器學(xué)習(xí)算法上都取得較好的分類結(jié)果.相比于其他4 種機器學(xué)習(xí)算法,隨機森林算法使用多個子決策樹預(yù)測類別的眾數(shù)作為最終的輸出分類結(jié)果,其中,使用隨機森林算法的效果最好,平均精確率達(dá)到了98.6%,平均召回率達(dá)到97.5%,F值達(dá)到了0.98.經(jīng)過綜合比較,最終我們選擇隨機森林算法作為分類器的算法.
同時,為了評估融合多種特征方法的泛化能力,我們使用隨機森林算法作為分類器,用數(shù)據(jù)集1 作為訓(xùn)練集,對數(shù)據(jù)集2 進(jìn)行測試,測試結(jié)果見表8.從測試結(jié)果可以看出:融合多種特征的檢測方法的精確率達(dá)到了96.2%,召回率達(dá)到了94.6%,誤判率為3.8%,漏判率為5.4%,F值達(dá)到0.95.
Table 8 Test result ofon dataset 2表8 數(shù)據(jù)集2 測試結(jié)果
為了找到惡意URL 被漏判的原因,我們上述檢測中漏判的108 個惡意URL 進(jìn)行人工分析,發(fā)現(xiàn)其中有72個惡意URL 采用誘導(dǎo)用戶點擊跳轉(zhuǎn)的攻擊方式,即:頁面本身不含有惡意代碼,當(dāng)用戶手動點擊頁面中的鏈接后,才會重定向到最終的惡意URL,這類頁面屬于惡意URL 的引導(dǎo)頁面.而我們在特征采集過程采用了自動化訪問的方式,只檢測當(dāng)前頁面,對頁面中的鏈接不會進(jìn)行自動觸發(fā),我們進(jìn)而對這些人工觸發(fā)的惡意URL 進(jìn)行再次檢測,發(fā)現(xiàn)可以檢測出這些惡意頁面.
漏判結(jié)果中還有24 個惡意URL對模擬的客戶端未返回包含惡意代碼的頁面.在人工分析的過程中,我們更換了客戶端環(huán)境和IP 地址再次訪問,發(fā)現(xiàn)惡意URL 返回了包含惡意代碼的頁面.我們分析,主要原因是模擬的客戶端環(huán)境和發(fā)起請求的IP 地址不滿足惡意URL 的攻擊條件,沒有觸發(fā)惡意行為.根據(jù)上述分析,如果檢測環(huán)境增加自動觸發(fā)鏈接以及部署足夠多樣的采集環(huán)境,將有助于進(jìn)一步減少漏判.
為了評估不同方面特征對于檢測效果的影響大小,我們分別使用全部25 個特征組合、單獨使用12 個頁面特征、6 個JavaScript 函數(shù)參數(shù)特征、7 個Web 會話流程特征以及頁面特征與Web 會話流程一起的5 種特征組合,使用隨機森林算法在數(shù)據(jù)集1 上進(jìn)行訓(xùn)練,并對數(shù)據(jù)集2 進(jìn)行測試.測試結(jié)果見表9.
Table 9 Test results comparison of different feature combination methods表9 不同特征組合的測試結(jié)果
使用全部特征組合的檢測效果最好,精確率達(dá)到96.2%,召回率達(dá)到94.6%;而僅使用JavaScript 函數(shù)參數(shù)特征時,檢測效果最差.我們對僅使用JavaScript 函數(shù)參數(shù)特征漏判而全部特征組合成功檢測出的惡意網(wǎng)站進(jìn)行人工分析,發(fā)現(xiàn)這些惡意網(wǎng)站在會話過程中進(jìn)行了多次重定向跳轉(zhuǎn),在重定向的初始頁面中未包含惡意代碼,可以看出,采用全部特征組合可以有效地檢測出使用逃避手段的惡意網(wǎng)站.同時,從表中測試結(jié)果可以看出:將頁面特征與Web 會話流程特征相結(jié)合一起時,分類器的檢測效果得到了提高.
如圖12所示為不同特征組合的ROC 曲線,從圖中可以看出:相對于其他4 個特征組合,使用全部特征的組合曲線更靠近坐標(biāo)軸的左上方,意味著它能夠在保證較低假陽率的情況下,有更高的真陽率.這在AUC 值上更加明顯,使用全部特征的組合模型的AUC 值達(dá)到0.98.同時,從圖中可以看出:頁面特征與Web 會話流程特征相結(jié)合時,提高了分類器的檢測效果.
Fig.12 ROC curve of different feature combination methods圖12 不同特征組合的ROC 曲線
在使用隨機森林算法的進(jìn)行學(xué)習(xí)過程中,信息增益通常被用作選擇特征的重要指標(biāo).信息增益是指特征為分類器提供信息的多少,即:在確定某一條件下,信息的不確定性減少的程度.當(dāng)特征為分類器模型提供的信息量越多,則表示該特征在分類器中更加重要,相應(yīng)地,它的信息增益越大.我們計算特征在隨機森林算法的學(xué)習(xí)過程中的信息增益,表10 顯示了排在前10 位的最高信息增益的特征列表.從表中可以看出:前10 位最高信息增益的特征中,包含了提出的3 大類特征,其中,我們提出的新的頁面特征和Web 會話流程特征的信息增益較大,對準(zhǔn)確分類的貢獻(xiàn)度更大.
Table 10 Top 10 features with the highest information gain表10 前10 位最高信息增益的特征
(1)與開源項目比較
我們將提出的檢測方法命名為HADMW.HADMW 在檢測過程中動態(tài)執(zhí)行頁面源代碼,因此將HADMW 與相似功能的動態(tài)檢測工具進(jìn)行比較,選擇了開源項目Capture-HPC[21]和PhoneyC[22].我們在2019年2月獲取和搭建了Capture-HPC 和PhoneyC,并將數(shù)據(jù)集2 分別使用這兩個開源項目進(jìn)行測試,并將檢測結(jié)果與HADMW的結(jié)果進(jìn)行對比,如表11所示:Capture-HPC 的F值為0.79,PhoneyC 的F值為0.87.可以看到,HADMW 比Capture-HPC 和PhoneyC 擁有更好的檢測效果.在時間開銷方面,HADMW 檢測每個惡意網(wǎng)站的平均時間為8.9s,而Capture-HPC 和PhoneyC 的平均時間為14.7s 和17.2s.實驗結(jié)果表明:HADMW 可以檢測出更多的惡意URL,檢測效率也優(yōu)于Capture-HPC 和PhoneyC.
同時,由于HADMW 使用了動態(tài)特征獲取,我們也對比了其特征獲取時間與靜態(tài)方法的對比.HADMW 特征獲取的時間包括獲取頁面源代碼和動態(tài)執(zhí)行源代碼,與靜態(tài)方法相比,多了動態(tài)執(zhí)行源代碼的過程.我們使用改寫擴展Thug,對1 000 條URL 上進(jìn)行了測試和觀察,動態(tài)方法檢測每個惡意URL 的平均時間為8.9s,其中,獲取頁面源代碼平均需要3.84s,動態(tài)執(zhí)行頁面源代碼平均需要5.06s.相比于獲取頁面源代碼所需要的時間,動態(tài)方法增加了執(zhí)行頁面源代碼的時間開銷,增加了約1.3 倍的特征獲取時間.
Table 11 Comparison with open source tools表11 與兩款開源工具對比
(2)與安全軟件比較
根據(jù)AV-TEST 組織發(fā)布的在2018年用戶最受歡迎的安全軟件的測試報告[23],我們選擇了兩款得分最高的安全軟件Bitdefender 和ESET,使用最新發(fā)布的版本對數(shù)據(jù)集2 進(jìn)行測試,結(jié)果見表12.Bitdefender 的F值為0.92,ESET 的F值為0.93.可以看到,HADMW 比這兩款安全軟件檢測效果更好.我們分析認(rèn)為,原因是:HADMW在特征的選取方面針對惡意URL 的逃避檢測手段,從頁面源代碼、JavaScript 關(guān)鍵函數(shù)參數(shù)以及整體攻擊會話流程方面選取特征對惡意URL 進(jìn)行檢測;相比之下,安全軟件的掃描檢測通常是基于頁面中惡意代碼進(jìn)行檢測.綜合比較表明,HADMW 的檢測效果優(yōu)于現(xiàn)有安全軟件.
Table 12 Comparison with other security software表12 與其他安全軟件對比
(3)與近期研究比較
文獻(xiàn)[15,17]結(jié)合了動靜態(tài)兩方面的特征,都對惡意網(wǎng)頁檢測做了不錯的嘗試,但我們在公開資料中均未找到其方法對應(yīng)的實現(xiàn)或源代碼,也沒有找到其公開的數(shù)據(jù)集.為了能夠較清晰地對比結(jié)果,我們將文獻(xiàn)[15,17]中提取的特征、測試數(shù)據(jù)集以及文獻(xiàn)自身公布的測試結(jié)果展示在表13 中.可以看出:HADMW 測試數(shù)據(jù)集中的樣本來源和數(shù)量更多,在準(zhǔn)確率、召回率方面都有不錯的表現(xiàn).
Table 13 Comparison with other existing approaches表13 與現(xiàn)有檢測方法對比
Table 13 Comparison with other existing approaches(Continued)表13 與現(xiàn)有檢測方法對比(續(xù))
我們將數(shù)據(jù)集2 中的惡意網(wǎng)站在10 種模擬客戶端環(huán)境下特征值序列進(jìn)行了分析,統(tǒng)計了這些特征值序列被分類器模型判斷為惡意網(wǎng)站的分布,得到每個惡意網(wǎng)站對10 種客戶端環(huán)境進(jìn)行攻擊的數(shù)量,統(tǒng)計結(jié)果如圖13(a)所示,其中,對3 種客戶端環(huán)境進(jìn)行攻擊的惡意網(wǎng)站數(shù)量最多.我們發(fā)現(xiàn):惡意網(wǎng)站通常會對多種不同的客戶端環(huán)境實施攻擊,從而使得攻擊效益盡可能的最大化.
除此之外,我們統(tǒng)計了不同類型的客戶端環(huán)境被惡意網(wǎng)站攻擊的數(shù)量,結(jié)果如圖14(b)所示.其中,針對Windows XP 操作系統(tǒng)搭配IE6.0 版本瀏覽器的環(huán)境被惡意網(wǎng)站攻擊的數(shù)量最多,而且我們發(fā)現(xiàn):操作系統(tǒng)和瀏覽器版本越低,被攻擊的數(shù)量越多.我們分析認(rèn)為,是因為版本較低的瀏覽器和操作系統(tǒng)通常存在較多公開的可被利用的漏洞.
Fig.13 The number and type distribution of client environments attacked by malicious websites圖13 惡意網(wǎng)站攻擊的客戶端環(huán)境數(shù)目和類型分布
如今,互聯(lián)網(wǎng)中充斥著大量的惡意URL,攻擊者利用這些惡意URL 傳播惡意軟件和竊取隱私數(shù)據(jù).本文基于真實存活的惡意URL 的統(tǒng)計,詳細(xì)分析了惡意URL 逃避手段的特點,從頁面內(nèi)容、JavaScript 函數(shù)參數(shù)和Web 會話流程這3 個方面設(shè)計了25 個具有區(qū)分度的特征,提出了一種基于多種特征檢測惡意URL 的方法HADMW.測試結(jié)果表明:HADMW 取得了96.2%的精確率和94.6%的召回率;同時,與單純頁面特征的方法和現(xiàn)有檢測工具相比,HADMW 取得了更好的檢測效果.
在實驗過程中,我們發(fā)現(xiàn)部分惡意URL 采用誘導(dǎo)用戶點擊跳轉(zhuǎn)的攻擊方式,這些URL 只有在用戶手動點擊后,才會重定向到最終的惡意URL.這種惡意URL 在攻擊過程中誘導(dǎo)用戶點擊頁面,而本文提出的方法采用自動化訪問的方式進(jìn)行檢測.在接下來的工作中,我們準(zhǔn)備增加模擬用戶點擊操作的功能,以及擴充更多的客戶端環(huán)境.