專利名稱:基于統計特征的網頁惡意腳本檢測方法
技術領域:
本發明專利屬于計算機安全領域,主要利用惡意腳本中的統計特征快速、準確地檢測網頁中是否含有惡意腳本,從而實現對網絡中的有害網頁進行快速檢測,并預先阻攔惡意腳本的運行,為上網用戶提供安全的網絡環境。
背景技術:
計算機病毒、木馬、間諜軟件和惡意代碼是近幾年來計算機網絡最主要的安全威脅。在計算機病毒、木馬、間諜軟件和惡意代碼的傳播途徑中除垃圾郵件外,還有一條重要的途徑就是利用構造特殊的網頁將病毒、木馬傳播到訪問該網頁的用戶計算機中。這種網頁主要利用操作系統、瀏覽器、插件等的各種漏洞將可執行代碼傳播到用戶計算機上進行執行,或利用系統中的解析器、控件的執行權限將網頁中的惡意代碼運行。由于這些特殊網頁的配置和編碼較為復雜,并且為了能夠躲避殺毒軟件查殺,大多由人工配置并且采用第三方軟件進行加密變形處理,因而成為黑客用來傳播木馬程序最為有效的方法。
網頁木馬即利用網頁代碼來傳播的木馬,本質在于網頁,而非木馬本身。這些特殊網頁通常是將木馬程序的執行代碼編碼成為網頁的組成部分,并配合特殊網頁代碼來激活木馬程序執行,因此在黑客群體和殺毒軟件公司、網絡安全防御單位將其稱為網頁木馬。
2004年6月末,殺毒軟件公司從病毒的發作數量、危害程度綜合考慮,總結并發布了2004年十大病毒及病毒發展趨勢報告。報告結果顯示間諜軟件、QQ木馬和網絡游戲木馬等網頁木馬成為熱點。雖然木馬類病毒在傳播數量上還不及網絡蠕蟲,但其越來越明顯的盜竊特性,會給受害用戶造成更大更直接的損失。
2005年8月3日中國專業反病毒廠商之一日月光華軟件公司官方網站(中國殺毒網http://www.viruschina.com/)遭到黑客襲擊,網站被篡改,并攜帶病毒,經過反病毒廠商測試該網站共有三個病毒Exploit.HTML.mht.bb、Backdoor.PcShare.5.r和trojan.PSW.LMIR.U,網民瀏覽后電腦可能被植入木馬,而被黑客控制。這些病毒和木馬程序的傳播靠的就是網頁木馬。
在對網頁木馬的檢測中殺毒軟件公司積累了大量的經驗和特征碼,然而系統漏洞、瀏覽器漏洞和第三方插件的漏洞層出不窮,而且入侵者也在不斷地對網頁木馬進行更新升級,并且采用加密和插入干擾字符的方法來躲避檢測。用戶要躲避網頁木馬的攻擊,必須不斷的安裝補丁程序或者升級系統。但是每年每月甚至每一天都會有新的漏洞出現,就在2005年7月,國際報道美國微軟稱黑客正在瘋狂地試圖利用Windows中的兩處嚴重安全缺陷。其中的一個缺陷影響″色彩管理模塊″—處理顏色的一個Windows組件;另一個缺陷與微軟″Java虛擬機″的JView Profiler部分有關。微軟稱,該缺陷可以被用于控制用戶的個人電腦。在對漏洞信息的獲取上用戶和黑客是不對等的,黑客會最先知道和利用漏洞,而用戶不可能得到及時升級,這些用戶的計算機將長期受到黑客的控制。因此切斷網絡木馬的傳播途徑是防范木馬最有效的方法,網頁木馬檢測最主要的是要能檢測出隱藏在網頁代碼中的漏洞利用代碼。隨著新的漏洞的出現就會有新的網頁木馬產生,所以檢測、查殺網頁木馬將是個長期、艱巨的任務。
傳統的殺毒技術對病毒、木馬和惡意網頁的檢測主要靠特征碼匹配檢測的方法,這種方法對特征固定不變傳播的病毒程序十分有效但對經過加密、插入干擾處理的網頁腳本則沒有效果,對于新出的漏洞利用網頁腳本和新出的病毒、木馬程序的檢測就更是無能為力。本發明針對網頁木馬的構造原理和本質特征來進行檢測,能有效地檢測網頁木馬。
發明內容
本發明的目的是查找出隱藏的惡意網頁代碼、凈化網絡環境、保護網絡用戶而提出的一種統計特征的網頁惡意腳本的檢測方法,從而可快速判斷惡意腳本的存在,對其進行預先阻攔。
本發明的基本原理是利用惡意網頁代碼必定經過加密處理,而加密處理后的網頁中的正常字符和非正常字符的比例有著明顯的差異,所以利用網頁的字符統計特征來檢測惡意腳本。本發明提出的基于統計特征的網頁惡意腳本檢測方法,包括以下幾個步驟(1).清除網頁中的干擾語句。第一步是清除網頁中的00碼。所謂00碼是指ASCII值為00的字符,在網頁中加入00碼并不影響網頁的運行,但會影響對惡意腳本的檢測,所以在統計工作進行之前,需要將網頁中的00碼清除掉。第二步是清除網頁中的注釋語句。網頁中的注釋語句是以′*/′開頭以′*/′結尾,或以′//′開頭的語句,它是對網頁中某段代碼的說明,在網頁運行時不起任何作用,但會影響對非正常字符的統計,所以需要將網頁中的注釋語句清除掉。第三步是清除網頁中多余的空格和橫向跳格(Tab)以及多余的回車和換行。
(2).統計網頁中的非正常字符。未經過加密處理的正常網頁中的字符除了正常的斷句的標點符號以及空格外,多數字符都是英文字母,而經過加密處理的惡意腳本中的字符多為一些難以識別的亂碼,因此,可以通過統計網頁中的非正常字符來判斷網頁中是否有惡意腳本。第一步需要獲取網頁中的javascript腳本文件。第二步是對網頁中的非正常字符進行統計。根據對大量網頁的分析,總結出的異常字符大致有%(%所占比例會占到腳本文件的20%左右,該比例適用于Unescape加密。)、#、$、%、&、*、+、,、(、)、^、~(適用于encode加密,所占比例為10%左右。)。對統計結果進行分析,當異常字符所占比例大于特定比例(例如%所占比例大于20%,即可判斷該腳本經過Unescape加密),就可以判定該腳本經過加密處理,可能為惡意腳本。
(3).統計字符間跨度。所謂字符間跨度是指相鄰字符的ASCII值之差的絕對值與字符權重的乘積。未經過加密處理的正常網頁內容是可以理解的有正常語法、詞法的語言,而經過加密處理后的惡意網頁卻是無法正常理解的語言,因此可以對字符間的跨度進行統計,該方法正是利用了正常語法、詞法的特點對網頁內容進行分析。第一步需要設定符合語法詞法習慣的正常字符跨度。第二步需要判斷網頁中是否包含腳本文件。如果網頁中包含腳本文件的話,就需要對腳本進行提取,并對腳本進行統計;如果不包含腳本文件的話,則需要對整個網頁內容進行統計。第三步為不同的字符設置不同的權重。將英文字母的權重設為1,非英文字母的權重設為2。第四步開始對字符間跨度進行統計。在得到每兩個字符間的跨度之后,就可以統計出字符間的平均跨度。第五步將求出的字符間平均跨度與所設定的正常字符間跨度26相比較,若超出了正常跨度,就可以判斷該網頁經過加密處理,可能為惡意腳本。
(4).創建腳本字典并匹配網頁,通過收集大量正常script腳本創建字典,再與新的網頁進行匹配統計。
(5).設置單個方法權重,將統計網頁中的非正常字符的權重設為3,統計字符間跨度的權重設為5,匹配腳本字典的權重設為2。
(6).得出是否為惡意網頁的總置信度。首先設定置信度5為判斷網頁為正常網頁或惡意網頁的臨界值。若統計非正常字符的結果判斷網頁可能為惡意網頁,則置信度為3,統計字符間跨度判斷網頁可能為惡意網頁的置信度為5,匹配腳本字典判斷網頁可能為惡意網頁的置信度為2,只有當這個置信度之和等于或超出5時,即總置信度超出或等于5時,就可以確定該網頁為惡意網頁。
本發明提出的利用網頁的字符統計特征來檢測惡意腳本的方法,具有以下優點(1)本發明提出的基于統計特征的網頁惡意腳本檢測方法,可以檢測出殺毒軟件不能檢測出的經過加密處理的惡意腳本。
(2)本發明提出的基于統計特征的網頁惡意腳本檢測方法,具有簡單、易行的特點,非常適合用于網絡安全機構對網絡服務器上的網頁木馬進行檢測。
圖1是基于統計特征的網頁惡意腳本檢測方法的總體流程圖。
圖2是清除網頁中的干擾語句流程圖。
圖3是獲取腳本流程圖。
圖4是統計非正常字符流程圖。
圖5是字符跨度統計流程圖。
圖6是創建腳本字典及匹配流程圖。
具體實施例方式
本發明提出的基于統計特征的網頁惡意腳本檢測方法,其總體流程如圖1所示。首先需要清除網頁中的干擾語句。第一步是清除網頁中的00碼。所謂00碼是指ASCII值為00的字符,在網頁中加入00碼并不影響網頁的運行,但會影響對惡意腳本的檢測,所以在統計工作進行之前,需要將網頁中的00碼清除掉。第二步是清除網頁中的注釋語句。網頁中的注釋語句是以’*/’開頭以’*/’結尾,或以’//’開頭的語句,它是對網頁中某段代碼的說明,在網頁運行時不起任何作用,但會影響對非正常字符的統計,所以需要將網頁中的注釋語句清除掉。第三步是清除網頁中多余的空格和橫向跳格(Tab)以及多余的回車和換行。清除網頁中的干擾語句的流程如圖2所示。
在清除掉網頁中的干擾語句后就可以對網頁中的非正常字符進行統計了。未經過加密處理的正常網頁中的字符除了正常的斷句的標點符號以及空格外,多數字符都是英文字母,而經過加密處理的惡意腳本中的字符多為一些難以識別的亂碼,因此,可以通過統計網頁中的非正常字符來判斷網頁中是否有惡意腳本。第一步需要獲取網頁中的javascript腳本文件。為什么要取得網頁中的腳本文件呢?這是因為網頁加密方法絕大多數是作用于網頁中的腳本文件的,所以要將網頁中的腳本截取出來進行處理。先在網頁中找到script開始標志″<SCRIPT″,以及script結束標志″</SCRIPT>″,然后取得script開始標志和結束標志之間的內容,即javascript腳本內容。取得網頁中的javascript腳本文件的流程如圖3所示。第二步是對網頁中的非正常字符進行統計。根據對大量網頁的分析,總結出的異常字符大致有%(%所占比例會占到腳本文件的20%左右,該比例適用于Unescape加密。)、#、$、%、&、*、+、,、(、)、^、~(適用于encode加密,所占比例為10%左右。)。對統計結果進行分析,當異常字符所占比例大于特定比例(例如%所占比例大于20%,即可判斷該腳本經過Unescape加密),就可以判定該腳本經過加密處理,可能為惡意腳本。對網頁中的非正常字符進行統計的流程如圖4所示。
對網頁中的字符間跨度進行統計。。所謂字符間跨度是指相鄰字符的ASCII值之差的絕對值與字符權重的乘積。未經過加密處理的正常網頁內容是可以理解的有正常語法、詞法的語言,而經過加密處理后的惡意網頁卻是無法正常理解的語言,因此可以對字符間的跨度進行統計,該方法正是利用了正常語法、詞法的特點對網頁內容進行分析。第一步需要設定符合語法詞法習慣的正常字符跨度。根據對正常未加密網頁的分析,首先正常字符的ASCII值是在65-90以及97-122之間,因此正常字符間的跨度應該設為26。在確定了正常字符間跨度之后,第二步需要判斷網頁中是否包含腳本文件。如果網頁中包含腳本文件的話,就需要對腳本進行提取,并對腳本進行統計;如果不包含腳本文件的話,則需要對整個網頁內容進行統計。第三步為不同的字符設置不同的權重。將英文字母的權重設為1,非英文字母的權重設為2。第四步開始對字符間跨度進行統計。首先得到所統計網頁或腳本的字符總數。然后判斷每個字符是否為英文字母,并求出字符間的ASCII差值,如果相鄰兩字符中至少有一個為非英文字母,則這兩個字符間的跨度為字符間ASCII差值乘以非英文字母的權重2;如果相鄰兩字符均為英文字母,則這兩個字符間的跨度為字符間ASCII差值乘以英文字母的權重1。在得到每兩個字符間的跨度之后,就可以統計出字符間的平均跨度,即相鄰兩字符間跨度之和與總字符數相除。第五步將求出的字符間平均跨度與所設定的正常字符間跨度26相比較,若超出了正常跨度,就可以判斷該網頁經過加密處理,可能為惡意腳本。對字符間跨度進行統計的流程如圖5所示。
創建腳本字典并匹配網頁。通過收集大量正常script腳本創建字典,再與新的網頁進行匹配統計。腳本字典匹配方法是通過收集大量正常javascript腳本,然后對這些正常腳本進行分析,將正常腳本中所使用到的單詞放入腳本字典中。腳本字典創建完成后,如需要檢測某一未知網頁時,只需要將該網頁腳本的單詞與腳本字典對照匹配即可,如果與腳本字典中所收集的單詞不相符的詞語的出現比例達到或超過10%,則可以判斷所檢測的網頁可能為惡意腳本加密網頁。創建腳本字典及匹配流程如圖6所示。
接下來需要對以上三種方法設置單個方法的權重。因為在統計網頁中的非正常字符、統計字符間跨度以及匹配腳本字典這三中方法中,每種方法對惡意腳本的檢測成功率有所不同,因此需要為這三種方法設置權重。將統計網頁中的非正常字符的權重設為3,統計字符間跨度的權重設為5,匹配腳本字典的權重設為2。
最后就可以得出被檢測網頁是否為惡意網頁的總置信度。首先設定置信度5為判斷網頁為正常網頁或惡意網頁的臨界值。若統計非正常字符的結果判斷網頁可能為惡意網頁,則置信度為3,統計字符間跨度判斷網頁可能為惡意網頁的置信度為5,匹配腳本字典判斷網頁可能為惡意網頁的置信度為2,只有當這個置信度之和等于或超出5時,即總置信度超出或等于5時,就可以確定該網頁為惡意網頁。
權利要求
1.一種基于統計特征的網頁惡意腳本檢測方法,其特征在于利用惡意腳本中的統計特征快速、準確地檢測網頁中是否含有惡意腳本,從而實現對網絡中的有害網頁進行快速檢測,并預先阻攔惡意腳本的運行,為上網用戶提供安全的網絡環境。其處理的具體方法是a.清除網頁中的干擾語句以便于統計;b.統計網頁中的非正常字符的出現概率;c.對相鄰字符間的跨度進行統計;d.創建腳本字典并統計網頁與腳本字典的匹配結果;e.為以上三種統計方法設置單個方法的權重;f.得出待檢測網頁是否含有惡意腳本的總置信度;g.置信度之和等于或超出5時,就可以確定該網頁為含有惡意腳本的網頁。
2.如權利要求1所述的一種統計特征的網頁惡意腳本檢測方法,其特征在于包括清除網頁中的00碼,清除網頁中的注釋語句,清除網頁中多余的空格和橫向跳格(Tab)以及多余的回車和換行。
3.如權利要求1所述的一種基于統計特征的網頁惡意腳本檢測方法,其特征在于統計網頁中的非正常字符的出現概率中,第一步需要獲取網頁中的javascript腳本文件;第二步是對網頁中的非正常字符進行統計;根據對大量網頁的分析,總結出的異常字符大致有%(%所占比例會占到腳本文件的20%左右,該比例適用于Unescape加密)、#、$、%、&、*、+、,、(、)、^、~(適用于encode加密,所占比例為10%左右);對統計結果進行分析,當異常字符所占比例大于特定比例(例如%所占比例大于20%,即可判斷該腳本經過Unescape加密),就可以判定該腳本經過加密處理,可能為惡意腳本。
4.如權利要求1所述的一種基于統計特征的網頁惡意腳本檢測方法,其特征在于對相鄰字符間的跨度進行統計,所謂字符間跨度是指相鄰字符的ASCII值之差的絕對值與字符權重的乘積,第一步需要設定符合語法詞法習慣的正常字符跨度為26;第二步需要判斷網頁中是否包含腳本文件;如果網頁中包含腳本文件的話,就需要對腳本進行提取,并對腳本進行統計;如果不包含腳本文件的話,則需要對整個網頁內容進行統計;第三步為不同的字符設置不同的權重,將英文字母的權重設為1,非英文字母的權重設為2;第四步開始對字符間跨度進行統計,在得到每兩個字符間的跨度之后,就可以統計出字符間的平均跨度;第五步將求出的字符間平均跨度與所設定的正常字符間跨度26相比較,若超出了正常跨度,就可以判斷該網頁經過加密處理,可能為惡意腳本。
5.如權利要求1所述的一種基于統計特征的網頁惡意腳本檢測方法,其特征在于創建腳本字典并統計網頁與腳本字典的匹配結果通過收集大量正常script腳本創建字典,再與新的網頁進行匹配統計;腳本字典匹配方法是通過收集大量正常javasript腳本,然后對這些正常腳本進行分析,將正常腳本中所使用到的單詞放入腳本字典中;腳本字典創建完成后,如需要檢測某一未知網頁時,只需要將該網頁腳本的單詞與腳本字典對照匹配即可,如果與腳本字典中所收集的單詞不相符的詞語的出現比例達到或超過10%,則可以判斷所檢測的網頁可能為惡意腳本加密網頁。
6.如權利要求1所述的一種基于統計特征的網頁惡意腳本檢測方法,其特征在于為權利要求1中的b,c,d三種方法設置權重并得出待檢測網頁是否含有惡意腳本的總置信度,將統計網頁中的非正常字符的權重設為3,統計字符間跨度的權重設為5,匹配腳本字典的權重設為2;首先設定置信度5為判斷網頁為正常網頁或惡意網頁的臨界值;若統計非正常字符的結果判斷網頁可能為惡意網頁,則置信度為3,統計字符間跨度判斷網頁可能為惡意網頁的置信度為5,匹配腳本字典判斷網頁可能為惡意網頁的置信度為2,只有當這個置信度之和等于或超出5時,即總置信度超出或等于5時,就可以確定該網頁為惡意網頁。
全文摘要
本發明屬于計算機安全領域,主要利用惡意腳本中的統計特征快速、準確地檢測網頁中是否含有惡意腳本。本發明的基本原理是利用惡意網頁代碼必定經過處理,而處理后的網頁中的正常字符和非正常字符的比例有著明顯的差異,所以利用網頁的字符統計特征(包括字符頻率統計、相鄰字符跨度值統計、與字典匹配度統計)來檢測惡意腳本。本發明用于檢測網頁中的惡意腳本,從而實現對網絡中的有害網頁進行快速檢測,并預先阻攔惡意腳本的運行,為上網用戶提供安全的網絡環境。
文檔編號H04L29/06GK1924866SQ20061015253
公開日2007年3月7日 申請日期2006年9月28日 優先權日2006年9月28日
發明者陶然, 李志勇, 張昊, 王越, 杜華 申請人:北京理工大學