仇永泉,林果園,陳 偉
(中國礦業大學 計算機科學與技術學院,江蘇 徐州221116)
根據中國互聯網信息中心 (CNNIC)在2011年7月發布的 《第28次中國互聯網絡發展狀況統計報告》,我國網民數量達到4.85億,而且正處于快速增長階段。2011年上半年,遇到過病毒或木馬攻擊的網民為2.17億人,占網民的44.7%。有過賬號或密碼被盜經歷的網民達到1.21億人,占24.9%[1-2]。同時,隨著互聯網的高速發展和網民數量的增多,網頁種植木馬和病毒的技術也在不斷發展,惡意網頁正給我國網民帶來嚴重的威脅。
當前,新興的網頁安全檢測的方法主要包括靜態檢測算法和客戶端蜜罐。靜態檢測算法的誤判率比較高,而且無法發現未知攻擊,但是其檢測速度快。客戶端蜜罐檢測方法是一種基于網頁行為模式的動態檢測惡意網頁攻擊的方法,雖然客戶端蜜罐檢測方法準確率要比靜態檢測算法要高,而且能識別未知攻擊行為,但是其檢測速度比靜態檢測算法慢得多[3]。同時,客戶端蜜罐是將蜜罐和爬蟲結合在一起[4],通過爬蟲爬取網絡URL來尋找可能存在的通過客戶端軟件執行的惡意軟件[5],這樣就會造成大量的爬蟲在網絡中爬行占用網絡的流量,影響網絡的穩定。
本文設計的網頁安全檢測系統是利用客戶端蜜罐的思想,將BHO技術應用到網頁安全檢測中,通過開發定制的IE瀏覽器的BHO插件進行網頁行為模式數據的采集,使用數據挖掘的方法找出網頁行為模式的內在聯系,應用異常檢測技術進行系統的設計和網頁的安全檢測,提出一個基于BHO技術的網頁安全檢測系統。
BHO是一個COM進程內服務,是實現了特定接口的COM組件,注冊于注冊表中某一鍵下。BHO只適用于Windows系統下的IE瀏覽器和文件瀏覽器,并且必須依靠瀏覽器才能運行。瀏覽器作為BHO插件的容器,當瀏覽器的IE實例啟動時就會自動加載已經注冊的BHO實例,建立交互連接,如圖1所示。由于BHO的 “寄生性”,BHO實例與IE實例運行于相同的上下文環境,具有相同的生命周期,當創建它的瀏覽器窗體銷毀時BHO實例才被釋放[6]。

圖1 瀏覽器調用BHO的工作原理
BHO寄生在瀏覽器中,從而成為一個鉤掛在瀏覽器的鉤子,因此在瀏覽器工作過程中,BHO能截獲很多瀏覽器事件。以IE瀏覽器為例,當用戶通過IE瀏覽器上網時,BHO能獲取從新URL的導航到用戶瀏覽新網頁整個過程的瀏覽器事件,同時還能接收到瀏覽器的前進或后退、瀏覽器退出的消息等等。這樣,BHO就像一個間諜一樣監控著瀏覽器的一切信息。此外,BHO也能模擬用戶的行為自動與Web服務器進行交互,這樣BHO也能實現客戶端蜜罐的所有功能。目前,很多公司都開發出各種功能的BHO插件,比如文件下載、安全保護、廣告過濾、自動填表等等,然而由于BHO“間諜性”和強大功能,很多黑客也通過BHO插件實施攻擊行為。
BHO通過其IDispatch接口的Invoke方法,實現與瀏覽器的交互,從而實現各種復雜的功能。因為BHO能獲取瀏覽器發生的所有事件,它就像一個鉤子掛在了瀏覽器上,所以BHO對瀏覽器進程的所有行為都能清晰地進行捕捉,同時還可以獲取瀏覽器的界面信息,當前網頁的源文件等等。
對于網頁的安全檢測分析來說,這是至關重要的。犯罪取證分析中的諾卡德交換原理認為,兩個對象接觸時,物質會在這兩個對象之間產生交換或傳遞[7]。此原理應用于數字領域,就是兩臺計算機通過網絡通信時,信息會在兩者之間交換,它們之間都會留下相應的 “足跡”。
同時分析發現,一個病毒或惡意程序無論如何偽裝或者改變攻擊方法,因為它最終的目的都是獲取系統的執行權限,執行帶有破壞性的操作,所以其所觸發的惡意行為和留下 “足跡”的是具有一定的規律,系統通過對病毒與惡意程序行為模式的分析和總結,就能夠檢測出新病毒或變形病毒[8]。
除此以外,因為BHO是鉤掛在瀏覽器中,當BHO插件過多的干預瀏覽器的工作 (如對網頁數據進行分析和檢測,這些工作都相對耗時),這樣就會影響用戶上網體驗。因此系統中相對耗時的工作應該交給后臺進程完成,BHO插件的功能要盡量的簡單。
根據以上分析,本文提出了如圖2所示的基于BHO技術的網頁安全檢測系統。系統主要有兩大模塊組成:①BHO模塊,主要完成對網頁行為數據的采集與訪問控制;②后臺模塊,主要完成網頁數據的預處理,網頁正常訪問模式和黑白名單的構建與更新,對新的未知網頁的安全檢測。

圖2 基于BHO技術的網頁安全檢測系統
根據以上的功能分析和設計思路,本文提出如圖3所示的基于BHO技術的網頁安全檢測模型[9]。本模型由數據采集和訪問控制的BHO模塊,網頁數據分析模塊 (web data analysis,WDA)以及網頁安全檢測模塊 (web security check,WSC)組成。其它重要的符號定義如下:
(1)WD:網頁信息數據庫 (web database),用于存儲BHO采集到的網頁行為模式數據和網頁安全檢測系統產生的各種數據。
(2)WAC:網頁訪問分類器 (web access classifier),用于對當前訪問網頁進行分類的關聯規則集。
(3)BlackList:黑名單,存儲惡意網頁的URL名單。
(4)WhiteList:白名單,存儲安全網頁的URL名單。
模型的具體工作流程如下:
步驟1 初始化WD。
步驟2 WDA模塊對WD進行數據預處理。
步驟3 WDA模塊根據數據庫的資料構建 WAC、BlackList和 WhiteList。
步驟4 BNO模塊分析當前訪問網頁的URL,如果URL屬于黑名單,則BHO模塊進行安全警告和相應的安全保護措施并直接跳轉到步驟7;如果URL屬于白名單,則BHO模塊直接放行該URL并跳轉到步驟7;如果URL不屬于黑名單和白名單,則BHO模塊先對該URL放行跳轉到該網頁,同時在跳轉過程中對網頁進行數據采集和日志記錄。

圖3 基于BHO技術的網頁安全檢測系統模型
步驟5 WSC模塊調用WAC分析步驟4收集的當前訪問頁面數據,返回檢測結果;
步驟6 BHO模塊根據步驟5返回的結果進行處理。如果返回的結果是當前訪問網頁是安全網頁,則BHO模塊更新WD的數據,同時WDA模塊更新WAC和WhiteList;如果返回的結果是當前訪問網頁是惡意網頁,則BHO模塊更新WD的數據,WDA模塊更新WAC和BlackList,同時,BHO模塊彈出警告,并且根據步驟4的日志記錄,對當前訪問的惡意網頁所發生的網頁行為進行回滾操作,從而阻止網頁的入侵行為。
步驟7 流程結束。
模型中的步驟1到步驟3主要是模型建立的前期部署,當系統的WAC和黑白名單已經建立后,則直接從步驟4開始執行。
由于BHO插件能截獲IE瀏覽器所發生的各種事件,就能在不同的事件發生過程中收集各種數據。為了使網頁安全檢測系統更可靠,本系統需要采集網頁的系統調用信息、文件的下載信息、進程的調用信息。采集的數據分別用一個四元組T= (U,N,P,C)表示:
系統調用= (URL,系統調用名稱,系統調用路徑,網頁安全標識);
文件下載= (URL,文件名稱,文件路徑,網頁安全標識);
進程調用= (URL,進程名稱,進程路徑,網頁安全標識);
網頁安全標識C是被采集網頁的安全分類,分為安全和惡意兩類。
數據采集完畢后,數據將存放的見表1的數據庫的表中。

表1 數據表格式
此時,數據庫的數據表存在大量的冗余,需要對數據進行預處理,使數據更能反映現實的狀況。事實上,一個網站中會存在多個網頁,這些網頁之間存在著一定的聯系,它們很多時候都由采用相同的模板自動生成,所以采集到的數據有大量的重復數據,需要對數據進行整合。
(1)對具有相同一級域名的數據進行整合。把數據中具有相同一級域名的數據的URL替換為同一個域名,把數據從單一的網頁整合為以網站為單位的數據集。
(2)對同一個網站中重復的數據進行清除。因為網頁調用到的基本系統調用、系統進程等都被重復的采集,所以需要清除這些冗余數據。
(3)對部分無用數據進行清除。網頁加載的過程中,主機會下載到各種的圖片和視頻等一般數據,這些數據對網頁安全的分析作用不大,但會影響到分類系統的準確性,所以為了提高系統的效率,這些數據也可以清除。
經過以上的數據預處理,這樣數據就變成了以網站為單位,包含網站運行時的各種運行信息的數據集。本數據集記錄了一個網站運行過程中,所調用到的系統調用和進程,下載過的各種文件信息。這樣,系統得到了安全網頁數據集和惡意網頁數據集。
依據采集到的兩個網頁數據集為訓練集,本文將采用監督學習的基于類關聯規則 (CAR)的算法來進行分類[10],構建網頁訪問分類器。
類關聯規則中,其右側是一個類標,左側是一些條件。這樣,數據集的一個四元組可以產生如表2的7條關聯規則。同時本文分析發現,四元組中的U屬性URL與網頁是否安全沒有必然聯系,其對于類別S的影響不明顯,所以關聯規則U→C、U,N→C、U,C→C、U,N,P→C可以忽略。此外,屬性P是對屬性N系統路徑的一個描述,兩者存在一定的依賴關系,同時如今部分病毒采用把自身的名稱改為系統正常程序的名稱的偽裝方式,所以屬性N和P單獨考慮意義不大,所以關聯規則N→C、P→C也可以忽略,這樣分類模型將采用四元組產生的N,P→C此關聯規則進行建立。

表2 四元組產生的關聯規則
模型構建前,系統把數據集中的四元組轉換為U,P→C的關聯規則,并通過式 (1)和式 (2)分別計算關聯規則的支持度和置信度,獲得關聯規則集A,如圖4所示。
支持度

置信度

式中:X——關聯規則的前件,Y——關聯規則的后件;(X∪Y).count——關聯規則X→Y或 {X,Y}在整個數據集中的數目;X.count—— {X}在各個數據集中的數目;n——整個數據集的數據數目。
其中,支持度表示了規則在數據集合中使用的頻繁程度;置信度表示了X發生后,Y發生地概率。
接著,系統分別就安全網頁和惡意網頁采用兩個不同的最低支持度minsup_1和minsup_2、不同的最低置信度minconf_1和minconf_2,分別從關聯規則集A中選出大于等于各自最低支持度的規則和最低置信度,組成關聯規則集B和C;最后,把規則集B和C合并成網頁訪問分類器,即關聯規則集D。對于模型中的最低支持度和最低置信度的取值,需要根據實際應用境況來確定。本文的最低支持度minsup_1和minsup_2的取值為65%和5%;最低置信度minconf_1和minconf_2取值都為75%。

圖4 網頁訪問分類器的構建
需要注意的是網頁數據集和關聯規則集A將一直保存在系統數據庫中,為以后分類器的更新系統的自主學習提供數據來源。
網頁訪問分類器的更新使得系統具有自主學習的能力。系統可以根據以前判斷的經驗為以后將要做出的判斷進行修正,不斷地完善分類器。分類器的更新主要是更新關聯規則集A以及相關規則的支持度和置信度,把符合要求的關聯規則加入關聯規則集D中,具體步驟如下:
(1)待測網頁分類后,系統對網頁信息進行處理,具體過程參考上文數據采集與預處理,并添加到對應分類的數據集中;
(2)將新添加到數據集中的網頁數據產生的新關聯規則添加到關聯規則集A中,并重新計算關聯規則集A各規則的支持度和置信度;
(3)最后按照圖4的過程,重新生成新的關聯規則集D;
瀏覽器訪問網頁時,BHO首先會檢查將要導航的URL情況,在瀏覽器的BeforeNavigate2事件中,檢查模型的黑白名單進行相應的處理,若是網頁的URL不在黑名單中,則會網頁進行安全檢測。對網頁進行安全性檢測時,系統會首先收集網頁的信息,通過一個三元組w= (url,b,c)表示收集網頁的系統調用、文件下載以及進程調用的URL、名稱和路徑信息。
根據頁面訪問分類模型判斷網頁安全性的原理:將待檢測的網頁的信息使用網頁訪問分類模型進行分析,如果待測頁面與惡意頁面的相似度高,則網頁存在風險,可能發生入侵行為。其檢測算法描述如下:
步驟1 根據網頁檢測安全關聯規則集D,分析待檢測網頁的各項信息數據 (url,bi,ci),通過式 (3),計算出待測網頁各個數據項的不安全性權重

步驟2 在步驟1基礎上通過式 (4),計算待檢測網頁的不安全性權重W,其中n表示待檢測網頁的數據項總數

步驟3 通過式 (5),計算關聯規則集D中惡意網頁不安全性的總權重,其中m表示關聯規則集D中分類為惡意網頁的關聯規則的條數

步驟4 將步驟2和步驟3獲得的待檢測網頁的不安全性權重與惡意網頁的不安全性總權重進行比較,通過式(6)計算待檢測網頁的不安全系數Smal

步驟5 待檢測網頁的不安全系數Smal與不安全閥值S進行比較,如果Smal<S,則返回待檢測網頁是安全網頁;否則返回待檢測網頁是惡意網頁。
不安全閥值S的取值太小會造成誤報,取值太大則會造成漏報,所以不安全閥值S的大小需要根據實驗測試來設置。本文將采用以下方法來選擇合適的閥值:
(1)設置不安全閥值S的初始值為0.5;
(2)依據設置的閥值S進行系統訓練,如果訓練結果誤判為惡意網頁的數量明顯增多,則增大S的取值;反之,如果發現惡意網頁的漏報數量明顯增多,則減少S的取值。
(3)根據系統訓練結果不斷地調整不安全閥值S的取值,直到達到最優的訓練結果。
實驗系統運行于Windows XP系統中,瀏覽器版本是Internet Explore 6.0。本系統開發的BHO插件先通過命令regsvr32XXX.dll進行注冊。這樣瀏覽器運行時,就會自動加載本系統的BHO插件。BHO插件會在用戶瀏覽網頁過程中采集網頁行為數據。
本次實驗采集了5000個安全網頁和500個惡意網頁的數據進行系統訓練。本實驗以Google提供的網頁安全性數據庫中的安全網頁和公安部公布的惡意網站為數據來源,分別對安全網頁和惡意網頁進行數據采集。在本文的不安全閥值S為0.45情況下,實驗使用85個安全頁面和15個惡意頁面進行測試,結果如圖5所示,系統對安全網頁檢測正確率接近85%,對惡意網頁檢測正確率有80%,檢測效果理想。

圖5 實驗結果
系統雖然可以有效地辨別安全網頁和惡意網頁,但是由于系統構建網頁訪問分類器需要的最低支持度minsup和最低置信度minconf、網頁檢測的不安全閥值S都是通過實驗測試來確定,還不能準確地計算得到,所以系統暫時不能達到不出現誤判的準確檢測。
本文在分析了靜態檢測方法和客戶端蜜罐檢測方法的不足,結合客戶端蜜罐的思想,引入BHO技術作為網頁信息的采集模塊。基于BHO的 “寄生性”和 “間諜性”,BHO插件只采集和截獲用戶與Web服務器進行交互時的網頁行為數據,不向外發送信息,這樣既可以準確地采集網頁的行為信息并對攻擊行為進行攔截,同時也彌補了客戶端蜜罐的爬蟲占用網絡流量的缺點。其次,系統將此采集到的數據通過類關聯規則進行網頁訪問分類器的構建,這樣就能在網頁下載的過程中通過分類器進行未知網頁的安全檢測,彌補了客戶端蜜罐檢測方法檢測速度慢的缺點。實驗結果表明本系統可以有效地檢測惡意網頁,但是由于系統的檢測參數當前是依賴實驗測試來確定,所以系統進一步研究將是研究參數合理的設置方法,從而提高系統檢測的準確性。
[1]CNNIC.The 28th China Internet development statistics report[EB/OL] .[2011-07-19].http://www.cnnic.net.cn/dtygg/dtgg/201107/t20110719_22132.html(in Chinese). [中國互聯網信息中心.第28次中國互聯網絡發展狀況統計報告 [EB/OL] .[2011-07-19].http://www.cnnic.net.cn/dtygg/dtgg/201107/t20110719_22132.html.]
[2]Kaspersky Lab. Malicious website evolution:January-June 2007 [EB/OL] .[2007-10-22].http://www/viruslist.com/en/analysis?pubid=204791968.
[3]WANG Qing.Malicious web page detection system based on on-line learning algorithm [D].Harbin:Harbin Institute of Technology,2010(in Chinese).[王慶.基于在線學習算法的惡意網頁檢測系統 [D].哈爾濱:哈爾濱工業大學,2010.]
[4]Moshchuk A,Bragin T,Gribble s D,et al.A crawler-based study of spyware on the web [EB/OL] .[2007-01-05].http://www.CS.washington.edu/homes/gribble/papem/spycrawler.pdf.
[5]SUN Xiaoyan,WANG Yang,ZHU Yuefei,et al.Design and implementation of mal-webpage detection system based on honeyclient[J].Computer Applications,2007,27 (7):1613-1615(in Chinese).[孫曉妍,王洋,祝躍飛,等.基于客戶端蜜罐的惡意網頁檢測系統的設計與實現 [J].計算機應用,2007,27 (7):1613-1615.]
[6]Dino Esposito.Browser helper objects:The browser the way you want it[EB/OL] .[1999-01-15.]http://msdn.microsoft.com/en-us/library/bb250436%28VS.85%29.aspx.
[7]Harlan Carvey.Windows forensics analysis [M].WANG Zhihui,et al transl.Beijing:Science Press,2009 (in Chinese).[Harlan Carvey.Windows取證分析 [M].王智慧,等譯.北京:科學出版社,2009.]
[8]QIN Zhenquan,LI Kaibin,LI Mingchu.Webpage security evaluation model based on PageRank and system calls [J].Journal of Chinese Computer Systems,2010,31 (10):2068-2072(in Chinese).[覃振權,李凱斌,李明楚.基于PageRank和系統調用的網頁安全檢測模型 [J].小型微型計算機系統,2010,31 (10):2068-2072.]
[9]Beomsoo Park,Sungjin Hong,Jaewook Oh,et al.Defending a web browser against spying with browser helper objects[C].Springer-Verlag Berlin Heidelberg,2005:638-639.
[10]Bing Liu.Web Data Mining [M].YU Yong,et al transl.Beijing:TsingHua University Press,2009 (in Chinese).[Bing Liu.Web數據挖掘 [M].俞勇,等譯.北京:清華大學出版社,2009.]