專(zhuān)利名稱(chēng):基于程序執(zhí)行特征的網(wǎng)頁(yè)木馬檢測(cè)方法
技術(shù)領(lǐng)域:
本發(fā)明屬于計(jì)算機(jī)安全領(lǐng)域,涉及一種網(wǎng)頁(yè)木馬檢測(cè)方法。
背景技術(shù):
計(jì)算機(jī)病毒、木馬、間諜軟件和惡意代碼是近幾年來(lái)計(jì)算機(jī)網(wǎng)絡(luò)面對(duì)的最 主要的安全威脅。在計(jì)算機(jī)病毒、木馬、間諜軟件和惡意代碼的傳播途徑中, 除垃圾郵件外,還有一條重要的途徑就是通過(guò)構(gòu)造特殊的網(wǎng)頁(yè)將病毒、木馬傳 播到訪(fǎng)問(wèn)該網(wǎng)頁(yè)的用戶(hù)計(jì)算機(jī)中。這種特殊的網(wǎng)頁(yè)主要利用操作系統(tǒng)、瀏覽器、 插件等的各種漏洞,將可執(zhí)行的惡意代碼傳播到用戶(hù)計(jì)算機(jī)上進(jìn)行執(zhí)行,或利 用系統(tǒng)中的解析器、控件的執(zhí)行權(quán)限將網(wǎng)頁(yè)中的惡意代碼自動(dòng)運(yùn)行。由于這些 特殊網(wǎng)頁(yè)的配置和編碼較為復(fù)雜,并且為了能夠躲避殺毒軟件的查殺,大多由 人工配置并采用第三方軟件進(jìn)行加密變形處理,因而成為黑客用來(lái)傳播木馬病 毒較為有效的方法。
網(wǎng)頁(yè)木馬即利用特殊網(wǎng)頁(yè)來(lái)傳播的木馬病毒,特殊網(wǎng)頁(yè)是木馬病毒的載體, 木馬病毒通過(guò)特殊網(wǎng)頁(yè)來(lái)達(dá)到傳播的目的。這些特殊網(wǎng)頁(yè)其本質(zhì)在于網(wǎng)頁(yè)而非 木馬病毒本身,這些特殊網(wǎng)頁(yè)通常是將木馬病毒的執(zhí)行代碼編碼成為該網(wǎng)頁(yè)的 組成部分,并配合特殊網(wǎng)頁(yè)自身的代碼來(lái)激活木馬程序,因此黑客群體、殺毒 軟件公司和網(wǎng)絡(luò)安全防御單位將其稱(chēng)之為網(wǎng)頁(yè)木馬。換而言之,網(wǎng)頁(yè)木馬是網(wǎng) 頁(yè)中內(nèi)嵌了一段能執(zhí)行木馬病毒的腳本程序,因此,網(wǎng)頁(yè)木馬的本質(zhì)是內(nèi)嵌特 殊腳本程序的網(wǎng)頁(yè)。
據(jù)江民反病毒預(yù)警中心、江民全球病毒監(jiān)測(cè)網(wǎng)提供的數(shù)據(jù)顯示,截至12月 份,江民反病毒中心共截獲計(jì)算機(jī)新病毒類(lèi)型總數(shù)為363000余種,這一數(shù)字是 2006年的六倍多,至此江民殺毒軟件KV系列病毒庫(kù)總量己經(jīng)超過(guò)80萬(wàn)。2007年 全年病毒累計(jì)感染電腦34414793臺(tái),新病毒感染電腦臺(tái)數(shù)為28879529臺(tái),其中 木馬病毒感染24875117臺(tái),占病毒總數(shù)的72.28%,而網(wǎng)頁(yè)木馬在木馬病毒中又 占到了3/4強(qiáng)。由此可見(jiàn),現(xiàn)在網(wǎng)絡(luò)安全面臨的主要威脅是木馬病毒,尤其是網(wǎng)
3頁(yè)木馬。
隨著計(jì)算機(jī)網(wǎng)絡(luò)攻防技術(shù)的不斷進(jìn)步,網(wǎng)頁(yè)木馬的傳播途徑也在悄悄的發(fā) 生變化。近幾年,利用微軟系統(tǒng)漏洞傳播一直是網(wǎng)頁(yè)木馬的最主要傳播途徑。 然而監(jiān)測(cè)結(jié)果顯示,目前越來(lái)越多的網(wǎng)頁(yè)木馬開(kāi)始繞開(kāi)微軟的系統(tǒng)漏洞,轉(zhuǎn)而 利用國(guó)產(chǎn)應(yīng)用軟件的漏洞來(lái)進(jìn)行傳播。由于國(guó)產(chǎn)軟件的漏洞修復(fù)動(dòng)作相對(duì)較慢, 因此中毒的機(jī)率就會(huì)增大,危害時(shí)間就會(huì)更長(zhǎng)。
雖然在對(duì)網(wǎng)頁(yè)木馬的檢測(cè)中殺毒軟件公司積累了大量的經(jīng)驗(yàn)和特征碼,但 是由于系統(tǒng)漏洞、瀏覽器漏洞和第三方插件的漏洞層出不窮,而且黑客也在不 斷地對(duì)網(wǎng)頁(yè)木馬進(jìn)行更新升級(jí),采用加密和插入干擾字符等手段來(lái)躲避檢測(cè)。 用戶(hù)要想躲避網(wǎng)頁(yè)木馬的攻擊,必須不斷的安裝補(bǔ)丁程序或者升級(jí)系統(tǒng),但是
每年每月甚至每一天都會(huì)有新的漏洞出現(xiàn)。就在2005年7月,國(guó)際報(bào)道美國(guó)微軟 稱(chēng)黑客正在瘋狂地試圖利用Windows中的兩處嚴(yán)重安全缺陷。其中的一個(gè)缺陷 影響〃色彩管理模塊〃一處理顏色的一個(gè)Windows組件;另一個(gè)缺陷與微軟"Java 虛擬機(jī)"的JViewProfiler部分有關(guān),微軟稱(chēng),該缺陷可以被用于控制用戶(hù)的個(gè)人 電腦。此外,在對(duì)漏洞信息的獲取上,用戶(hù)和黑客是不對(duì)等的。黑客會(huì)最先知 道和利用漏洞,而用戶(hù)卻不可能得到及時(shí)升級(jí),這些用戶(hù)的計(jì)算機(jī)很可能將長(zhǎng) 期受到黑客的控制。因此,切斷網(wǎng)絡(luò)木馬的傳播途徑成為防范網(wǎng)頁(yè)木馬最有效 的方法,而網(wǎng)頁(yè)木馬檢測(cè)方法最主要的是要能檢測(cè)出隱藏在網(wǎng)頁(yè)代碼中的漏洞 利用代碼。隨著新的漏洞的出現(xiàn)就會(huì)有新的網(wǎng)頁(yè)木馬產(chǎn)生,所以檢測(cè)、查殺網(wǎng) 頁(yè)木馬將是個(gè)長(zhǎng)期、艱巨的任務(wù)。
現(xiàn)有的網(wǎng)頁(yè)木馬檢測(cè)方法主要采用的是構(gòu)建一個(gè)龐大的掛馬網(wǎng)頁(yè)特征數(shù)據(jù) 庫(kù),然后對(duì)待檢測(cè)網(wǎng)頁(yè)進(jìn)行逐個(gè)特征匹配。如果待檢測(cè)網(wǎng)頁(yè)中有和特征數(shù)據(jù)庫(kù)
相匹配的特征的話(huà),就判斷該網(wǎng)頁(yè)是掛馬網(wǎng)頁(yè),如果沒(méi)有的話(huà)就判斷為非掛馬 網(wǎng)頁(yè)。這種方法存在著以下幾個(gè)弊端
(1) 這種檢測(cè)方法需要不斷地更新特征數(shù)據(jù)庫(kù),然而隨著特征數(shù)據(jù)庫(kù)變得 越來(lái)越龐大,就會(huì)使系統(tǒng)的檢測(cè)速度下降。
(2) 由于這種檢測(cè)方法只是對(duì)網(wǎng)頁(yè)進(jìn)行匹配檢測(cè),并沒(méi)有從木馬運(yùn)行機(jī)理 角度去分析,因此當(dāng)木馬病毒編寫(xiě)者對(duì)掛馬網(wǎng)頁(yè)屮的特征串進(jìn)行隨機(jī)替換時(shí), 這種檢測(cè)方法就無(wú)法檢測(cè)出該網(wǎng)頁(yè)是否為掛馬網(wǎng)頁(yè),從而造成漏檢。
(3) 由于這種檢測(cè)方法采用的是特征匹配,所以在檢測(cè)網(wǎng)頁(yè)的時(shí)候,只要
4出現(xiàn)特征匹配,系統(tǒng)就會(huì)斷定這個(gè)網(wǎng)頁(yè)是掛馬網(wǎng)頁(yè)。但是,實(shí)際情況中有的網(wǎng) 頁(yè)雖然和特征數(shù)據(jù)庫(kù)的特征相匹配,但卻并沒(méi)有掛馬,而是一個(gè)正常網(wǎng)頁(yè)。對(duì) 于這種情況,這種檢測(cè)方法就會(huì)造成誤檢。
因此,對(duì)于網(wǎng)頁(yè)木馬的檢測(cè),需要明確網(wǎng)頁(yè)木馬所要實(shí)現(xiàn)的功能,以及這 個(gè)功能在網(wǎng)頁(yè)代碼里是如何實(shí)現(xiàn)的。
網(wǎng)頁(yè)木馬的運(yùn)行原理是利用瀏覽器本身或第三方軟件的漏洞,網(wǎng)頁(yè)木馬編 寫(xiě)者通過(guò)編寫(xiě)漏洞利用代碼來(lái)獲得系統(tǒng)執(zhí)行權(quán)限,從而執(zhí)行下載木馬等操作, 以實(shí)現(xiàn)木馬的擴(kuò)散。因此,網(wǎng)頁(yè)木馬實(shí)現(xiàn)的關(guān)鍵就是編寫(xiě)漏洞利用代碼。
術(shù)語(yǔ)簡(jiǎn)介
Shellcode是一段機(jī)器指令,是溢出程序和當(dāng)今多數(shù)網(wǎng)絡(luò)病毒的核心,它通 常是和漏洞聯(lián)系在一起的。當(dāng)黑客發(fā)現(xiàn)系統(tǒng)漏洞或是第三方軟件漏洞時(shí),就會(huì) 編寫(xiě)溢出代碼來(lái)使程序溢出,使得黑客獲得程序的執(zhí)行權(quán)限,這樣黑客就可以 改變程序的流程,使程序跳轉(zhuǎn)到預(yù)先編制好的一段能完成黑客所需要功能的機(jī) 器指令上,從而實(shí)現(xiàn)病毒的注入或執(zhí)行。這段機(jī)器指令就是Shdlcode。
Heap Spray是一種溢出技術(shù),它是用來(lái)描述一段能實(shí)現(xiàn)堆溢出的代碼。通常 來(lái)說(shuō),這段代碼是通過(guò)往進(jìn)程堆里寫(xiě)入大量重復(fù)的字串來(lái)實(shí)現(xiàn)堆的溢出來(lái)獲得 對(duì)程序執(zhí)行指針的控制權(quán),進(jìn)而改變?cè)撝羔標(biāo)赶虻南乱粭l指令,使程序跳轉(zhuǎn) 到事先定制好的Shellcode上,從而執(zhí)行Shellcode代碼來(lái)實(shí)現(xiàn)對(duì)系統(tǒng)的控制。
發(fā)明內(nèi)容
本發(fā)明的目的是為了檢測(cè)出用戶(hù)訪(fǎng)問(wèn)的網(wǎng)頁(yè)是否為網(wǎng)頁(yè)木馬,提出一種基 于程序執(zhí)行特征的網(wǎng)頁(yè)木馬檢測(cè)方法。
本發(fā)明的基本原理是當(dāng)前的網(wǎng)頁(yè)木馬都是由溢出代碼和一段Shdlcode組 成。如果能確定出被檢測(cè)網(wǎng)頁(yè)的源代碼中存在溢出代碼和Shellcode,就可以說(shuō) 明這是一個(gè)網(wǎng)頁(yè)木馬,從而快速準(zhǔn)確的檢測(cè)一個(gè)網(wǎng)頁(yè)是否為網(wǎng)頁(yè)木馬。
本發(fā)明提出的-種基于程序執(zhí)行特征的網(wǎng)頁(yè)木馬檢測(cè)方法,具體步驟如下
a. 使用網(wǎng)絡(luò)爬蟲(chóng)軟件獲取被檢測(cè)網(wǎng)頁(yè)的HTML源代碼;
b. 運(yùn)行腳本解釋模塊對(duì)經(jīng)步驟a獲取得到的網(wǎng)頁(yè)源代碼進(jìn)行多層解碼處理,
從而得到可識(shí)別的腳本源碼;
因?yàn)榻?jīng)步驟a所抓取到的網(wǎng)頁(yè)源代碼在大多數(shù)情況下會(huì)有多種編碼存在,并且有可能出現(xiàn)經(jīng)過(guò)一層解碼之后還是個(gè)不可識(shí)別的腳本代碼,因此,在這種情 況下為了能夠自動(dòng)獲得可識(shí)別的腳本代碼,就需要對(duì)抓取到的網(wǎng)頁(yè)源代碼進(jìn)行 多層解碼處理,從而來(lái)獲得網(wǎng)頁(yè)中可識(shí)別的腳本代碼。c. 對(duì)經(jīng)步驟b得到的腳本源碼進(jìn)行字節(jié)unicode解碼(即字節(jié)反序解碼),如 果解碼結(jié)果屮出現(xiàn)明顯的系統(tǒng)調(diào)用和URL下載連接,則說(shuō)明該腳本要完成木馬的 自動(dòng)下載,告警值加l,然后進(jìn)行步驟d;若未出現(xiàn)明顯的系統(tǒng)調(diào)用和URL下載連 接,則直接進(jìn)行步驟d。判斷腳本源碼是否存在系統(tǒng)調(diào)用,是通過(guò)對(duì)解碼結(jié)果進(jìn)行模式匹配來(lái)實(shí)現(xiàn) 的,如果解碼結(jié)果出現(xiàn)LoadLibmryA等系統(tǒng)函數(shù),就說(shuō)明其存在著系統(tǒng)調(diào)用。由于網(wǎng)頁(yè)木馬程序中的Shellcode是以Unicode編碼形式出現(xiàn)的,而Shellcode 的目的是為了下載木馬病毒到本地機(jī)器,所以,為了能實(shí)現(xiàn)下載這一功能, Shellcode必須調(diào)用系統(tǒng)函數(shù)來(lái)實(shí)現(xiàn)下載,并且,由于這些,木馬病毒是來(lái)自網(wǎng) 絡(luò),所以要給系統(tǒng)函數(shù)傳遞URL。,因此,如果是一個(gè)Shellcode程序的話(huà)就會(huì)有 調(diào)用系統(tǒng)函數(shù)和導(dǎo)入U(xiǎn)RL的痕跡出現(xiàn)。所以,在該步驟中,可對(duì)網(wǎng)頁(yè)腳本程序 進(jìn)行字節(jié)反序解碼操作。如果解碼后的結(jié)果中包含有系統(tǒng)函數(shù)和URL下載鏈接, 則說(shuō)明腳本程序在實(shí)現(xiàn)某一文件的自動(dòng)下載,初步確定該腳本程序屮存在 Shellcode 。d. 對(duì)經(jīng)步驟b得到的可識(shí)別的腳本源碼進(jìn)行反匯編操作,然后判斷該匯編代 碼是否是可執(zhí)行的,如果是,則說(shuō)明這一腳本含有Shdlcode代碼,告警值加l, 然后進(jìn)行步驟e;若該匯編代碼是不可執(zhí)行的,則直接進(jìn)行步驟e;判斷匯編代碼是否可執(zhí)行的,是通過(guò)查找匯編碼中的JMP和CALL指令之后 的地址值是否和指令地址空間相匹配來(lái)實(shí)現(xiàn)的。因?yàn)镾hellcode本身是一段16進(jìn)制的機(jī)器碼,如果腳本代碼中存在Shellcode, 那么把這段可識(shí)別的腳本代碼進(jìn)行反匯編后得到的匯編代碼肯定是可執(zhí)行的。 也就是說(shuō),如果腳本程序中存在Shellcode,那么經(jīng)反匯編后所得到的匯編代碼 中的JMP和CALL指令之后的地址肯定落在指令地址范圍之內(nèi)。因此,只要判斷 匯編代碼中的JMP和CALL指令之后的地址是否落在了指令地址范圍之內(nèi),就可 以判斷該匯編代碼是否是可執(zhí)行的,從而判斷腳本中是否含有Shellcode。e. 對(duì)腳本源碼進(jìn)行程序流程分析,如果發(fā)現(xiàn)有明顯的對(duì)內(nèi)存寫(xiě)入大量數(shù)據(jù) 的操作,那么就說(shuō)明這個(gè)腳本源碼要實(shí)現(xiàn)某種溢出操作,告警值加l;判斷對(duì)內(nèi)存寫(xiě)入大量數(shù)據(jù)操作的步驟如下
1) 通過(guò)查找的方法來(lái)定位字符串對(duì)象和含有大量Unicode編碼的對(duì)象;
2) 根據(jù)步驟1)得到的字符串變量來(lái)査找腳本程序中的循環(huán)操作。如果
該循環(huán)操作實(shí)現(xiàn)的功能是對(duì)步驟l)所得到的字符串變量進(jìn)行非正常的自我累加 操作,那就說(shuō)明是程序正在進(jìn)行不正常的內(nèi)存寫(xiě)入操作,從而判斷出腳本源碼 所要實(shí)現(xiàn)的功能之一就是要使堆棧溢出,目的是實(shí)現(xiàn)程序的非正常跳轉(zhuǎn)。
含有網(wǎng)頁(yè)木馬的網(wǎng)頁(yè)中的溢出代碼主要采用的是Heap Spray技術(shù)。這一技術(shù) 的細(xì)節(jié)是首先使用JavaScript腳本創(chuàng)建很多個(gè)string對(duì)象,再在每個(gè)string對(duì)象中 寫(xiě)入一個(gè)長(zhǎng)長(zhǎng)的NOP或NOP-Like鏈以及緊接著它們的一段Shellcode,然后把這 些對(duì)象都存放到堆中。與NOP或NOP-Like鏈相比,Shdlcode的字串長(zhǎng)度很短, 所以只要把溢出后的返回地址寫(xiě)成從堆中隨意取出的地址就很有可能落入NOP 或NOP-Like鏈中,進(jìn)而執(zhí)行Shellcode。因此,根據(jù)這一思想,在網(wǎng)頁(yè)木馬檢測(cè) 過(guò)程中,首先要定位string對(duì)象,判斷該對(duì)象是否有明顯的自我復(fù)制來(lái)構(gòu)建 NOP-Like鏈;其次,檢測(cè)在腳本程序中是否創(chuàng)建了許多由NOP-Like鏈和Shellcode 代碼填充的string對(duì)象。如果這兩個(gè)條件都滿(mǎn)足的話(huà),那就說(shuō)明該腳本程序中包 含有溢出代碼。
f.如果告警值為累計(jì)為3的話(huà)就說(shuō)明該網(wǎng)頁(yè)是一個(gè)網(wǎng)頁(yè)木馬,如果告警值 累計(jì)1或是2的話(huà),說(shuō)明該網(wǎng)頁(yè)是個(gè)疑似網(wǎng)頁(yè)木馬,如果告警值累計(jì)為0的話(huà)
就說(shuō)明該網(wǎng)頁(yè)是個(gè)正常網(wǎng)頁(yè)。 有益效果
本發(fā)明是利用網(wǎng)頁(yè)爬蟲(chóng)軟件把被檢測(cè)網(wǎng)頁(yè)的源代碼抓取下來(lái),通過(guò)對(duì)網(wǎng)頁(yè) 源碼就行多層解碼處理,并從木馬病毒程序運(yùn)行機(jī)理出發(fā),對(duì)解碼后的網(wǎng)頁(yè)源 碼進(jìn)行反匯編和程序流程分析來(lái)深層次的檢測(cè)網(wǎng)頁(yè)是否掛馬,通過(guò)這種網(wǎng)頁(yè)木 馬檢測(cè)方法,避開(kāi)了進(jìn)行大量的特征串匹配,免去了建立龐大的特征數(shù)據(jù)庫(kù), 并且,由于采取了從代碼執(zhí)行功能的角度來(lái)分析網(wǎng)頁(yè)的方法,而不是單純的特 征匹配,所以,如果網(wǎng)頁(yè)代碼所要實(shí)現(xiàn)的功能符合網(wǎng)頁(yè)木馬的功能特征,就可 以檢測(cè)出待檢網(wǎng)頁(yè)是網(wǎng)頁(yè)木馬,這樣和傳統(tǒng)的檢測(cè)方法相比大大降低了漏檢率 和誤檢率。又由于免去了大量的特征串匹配操作,也使得檢測(cè)速度也能相應(yīng)的 得到提高。
圖l為本發(fā)明方法的總體流程圖。
具體實(shí)施例方式
當(dāng)今網(wǎng)絡(luò)環(huán)境中充斥著大量的掛馬網(wǎng)站,而網(wǎng)頁(yè)木馬制造者為了能躲避主 流檢測(cè)器的檢測(cè),對(duì)含有網(wǎng)頁(yè)木馬的網(wǎng)頁(yè)代碼進(jìn)行了一系列精心的修飾來(lái)實(shí)現(xiàn) 對(duì)該網(wǎng)頁(yè)木馬的功能代碼的隱藏,例如源碼級(jí)的變形規(guī)避、變量名的替換等。
所以,這時(shí)候單純依靠檢測(cè)器的特征庫(kù)來(lái)檢測(cè)網(wǎng)頁(yè)木馬的話(huà)就會(huì)使漏報(bào)率 大為增加。本發(fā)明所提出的一種基于程序執(zhí)行特征的網(wǎng)頁(yè)木馬檢測(cè)方法,則是 從網(wǎng)頁(yè)木馬運(yùn)行機(jī)理的角度出發(fā)來(lái)分析待檢網(wǎng)頁(yè)的,而不是簡(jiǎn)單的模式匹配, 因此具有一定的智能性。具體實(shí)現(xiàn)流程如圖l所示。
具體實(shí)施例分成兩個(gè)處理階段,假設(shè)www.virus.com/virus.html是一個(gè)待 檢測(cè)的網(wǎng)頁(yè)。
一、 網(wǎng)頁(yè)獲取及預(yù)處理階段
用戶(hù)在瀏覽器地址框輸入www.virus.com/virus.html,用戶(hù)點(diǎn)擊確定。在瀏 覽器對(duì)該網(wǎng)頁(yè)進(jìn)行解釋加載之前,檢測(cè)器自動(dòng)啟動(dòng),檢測(cè)器用網(wǎng)頁(yè)爬蟲(chóng)軟件把 www.virus.com/virus.html的網(wǎng)頁(yè)源代碼抓取下來(lái)并以文本格式存入本地磁盤(pán)中, 然后調(diào)用腳本解釋器對(duì)抓取到的網(wǎng)頁(yè)源代碼進(jìn)行解碼處理,來(lái)獲得可識(shí)別的腳 本代碼。如果網(wǎng)頁(yè)源代碼中沒(méi)有不可識(shí)別的腳本代碼,則跳過(guò)此步,進(jìn)入程序 判決處理階段。之所以利用腳本解釋器是因?yàn)檫@些被掛馬的網(wǎng)頁(yè)的源代碼存在 著多種非明文方式的代碼來(lái)掩藏網(wǎng)頁(yè)木馬的功能代碼,倘若對(duì)每一種編碼方式 都進(jìn)行處理的話(huà),工作量太大,同時(shí)也無(wú)法考慮全面,又由于網(wǎng)頁(yè)中能實(shí)現(xiàn)掛 馬的代碼肯定是用腳本語(yǔ)言編寫(xiě)的,所以不管網(wǎng)頁(yè)代碼如何變形,它們所要遵 循的一點(diǎn)必須是變形后的代碼一定是可執(zhí)行的,可以讓瀏覽器的script引擎執(zhí) 行的。因?yàn)槿绻冃魏蟮拇a是不可執(zhí)行的話(huà),那么該網(wǎng)頁(yè)中的溢出代碼就無(wú) 法被瀏覽器執(zhí)行,從而也就使網(wǎng)頁(yè)喪失了執(zhí)行木馬程序的功能。所以如果是個(gè) 網(wǎng)頁(yè)木馬,那么其代碼必定是可執(zhí)行的,也就是說(shuō)能夠被腳本解釋器所解釋的。 所以利用這一共性,就可以用腳本解釋器把不可識(shí)別的腳本代碼解釋成可識(shí)別 的腳本代碼。
二、 程序判決處理階段對(duì)從網(wǎng)頁(yè)獲取及預(yù)處理階段獲得的網(wǎng)頁(yè)明文代碼進(jìn)行如下步驟的處理
1、 對(duì)可識(shí)別的腳本代碼進(jìn)行Unicode字節(jié)反序解碼,如果解碼結(jié)果中有系 統(tǒng)調(diào)用函數(shù)和有明顯的URL下載鏈接,則說(shuō)明自動(dòng)下載某個(gè)程序肯定是這段代 碼所要實(shí)現(xiàn)的功能之一,因此使告警值加l,并把這個(gè)URL下載鏈接和系統(tǒng)調(diào) 用函數(shù)當(dāng)作告警信息告知用戶(hù),并進(jìn)入步驟2進(jìn)行進(jìn)一步判斷。否則,直接進(jìn) 入步驟2。
2、 對(duì)可識(shí)別的腳本代碼的Unicode編碼部分進(jìn)行先兩兩反序后反匯編操作, 得到匯編碼后把其中所有的JMP和CALL語(yǔ)句提取出來(lái),分析這些JMP和CALL 指令之后的地址是否是處于指令空間范圍之內(nèi),如果是,則說(shuō)明該匯編碼是可 執(zhí)行的,如果這些JMP和CALL指令之后的地址沒(méi)有落在指令控件范圍之內(nèi), 則說(shuō)明該匯編碼是不可執(zhí)行的。當(dāng)判斷出匯編碼是可執(zhí)行時(shí),告警值加l,并進(jìn) 入步驟3進(jìn)行進(jìn)一步的判斷。否則,直接進(jìn)入步驟3。
3、 對(duì)可識(shí)別的腳本代碼的程序流程進(jìn)行分析,對(duì)于腳本代碼,先定位字符 串變量,對(duì)于正常腳本程序來(lái)說(shuō), 一個(gè)字符串變量一般不會(huì)出現(xiàn)超過(guò)300次的 自我增長(zhǎng),超過(guò)300次則說(shuō)明該腳本程序正在構(gòu)建NOP-Like數(shù)據(jù)塊。如果待檢 測(cè)的腳本程序有這樣的操作那就說(shuō)明這一腳本比較可疑,再進(jìn)一步確認(rèn)該腳本 是否創(chuàng)建了許多String對(duì)象,并且這些對(duì)象都是由NOP-Like鏈和Shdlcode鏈 來(lái)填充的。則說(shuō)明這一腳本在進(jìn)行Heap Spray操作,其目的是為了實(shí)現(xiàn)溢出。 這時(shí)令告警值加一,并給出相應(yīng)的告警信息。
4、 最后,判斷告警值,如果告警值為3的話(huà),則說(shuō)明www.virus.com/virus.html 是一個(gè)網(wǎng)頁(yè)木馬,如果告警值為小于3且大于等于1的話(huà),則給出風(fēng)險(xiǎn)提示, www.virus.com/virus.html可能是網(wǎng)頁(yè)木馬。如果告警值為0的話(huà),說(shuō)明 www.virus.com/virus.html是一個(gè)正常網(wǎng)頁(yè)。
9
權(quán)利要求
1.基于程序執(zhí)行特征的網(wǎng)頁(yè)木馬檢測(cè)方法,其特征在于具體步驟包括a.使用網(wǎng)絡(luò)爬蟲(chóng)軟件獲取被檢測(cè)網(wǎng)頁(yè)的HTML源代碼;b.運(yùn)行腳本解釋模塊對(duì)經(jīng)步驟a獲取得到的網(wǎng)頁(yè)源代碼進(jìn)行多層解碼處理,從而得到可識(shí)別的腳本源碼;c.對(duì)經(jīng)步驟b得到的腳本源碼進(jìn)行字節(jié)unicode解碼,如果解碼結(jié)果中出現(xiàn)明顯的系統(tǒng)調(diào)用和URL下載連接,則說(shuō)明該腳本要完成木馬的自動(dòng)下載,告警值加1,然后進(jìn)行步驟d;若未出現(xiàn)明顯的系統(tǒng)調(diào)用和URL下載連接,則直接進(jìn)行步驟d;d.對(duì)經(jīng)步驟b得到的可識(shí)別的腳本源碼進(jìn)行反匯編操作,然后判斷該匯編代碼是否是可執(zhí)行的,如果是,則說(shuō)明這一腳本含有Shellcode代碼,告警值加1,然后進(jìn)行步驟e;若該匯編代碼是不可執(zhí)行的,則直接進(jìn)行步驟e;e.對(duì)腳本源碼進(jìn)行程序流程分析,如果發(fā)現(xiàn)有明顯的對(duì)內(nèi)存寫(xiě)入大量數(shù)據(jù)的操作,那么就說(shuō)明這個(gè)腳本源碼要實(shí)現(xiàn)某種溢出操作,告警值加1;f.如果告警值為累計(jì)為3的話(huà)就說(shuō)明該網(wǎng)頁(yè)是一個(gè)網(wǎng)頁(yè)木馬,如果告警值累計(jì)1或是2的話(huà),說(shuō)明該網(wǎng)頁(yè)是個(gè)疑似網(wǎng)頁(yè)木馬,如果告警值累計(jì)為0的話(huà)就說(shuō)明該網(wǎng)頁(yè)是個(gè)正常網(wǎng)頁(yè)。
2. 如權(quán)利要求l所述的基于程序執(zhí)行特征的網(wǎng)頁(yè)木馬檢測(cè)方法,其特征在于步驟c中,判斷腳本源碼是否存在系統(tǒng)調(diào)用,是通過(guò)對(duì)解碼結(jié)果進(jìn)行模式 匹配來(lái)實(shí)現(xiàn)的,如果解碼結(jié)果出現(xiàn)LoadLibraryA等系統(tǒng)函數(shù),就說(shuō)明其存在著 系統(tǒng)調(diào)用。
3. 如權(quán)利要求l所述的基于程序執(zhí)行特征的網(wǎng)頁(yè)木馬檢測(cè)方法,其特征在于步驟d中,判斷匯編代碼是否可執(zhí)行的,是通過(guò)査找匯編碼中的JMP和CALL 指令之后的地址值是否和指令地址空間相匹配來(lái)實(shí)現(xiàn)的。
4. 如權(quán)利要求l所述的基于程序執(zhí)行特征的網(wǎng)頁(yè)木馬檢測(cè)方法,其特征在于, 判斷對(duì)內(nèi)存寫(xiě)入大量數(shù)據(jù)操作的步驟如下1) 通過(guò)查找的方法來(lái)定位字符串對(duì)象和含有大量Unicode編碼的對(duì)象;2) 根據(jù)步驟1)得到的字符串變量來(lái)查找腳本程序中的循環(huán)操作,如果該 循環(huán)操作實(shí)現(xiàn)的功能是對(duì)步驟1)所得到的字符串變量進(jìn)行非正常的自我累加操 作,就說(shuō)明是程序正在進(jìn)行不正常的內(nèi)存寫(xiě)入操作。
全文摘要
本發(fā)明屬于計(jì)算機(jī)安全領(lǐng)域,涉及基于程序執(zhí)行特征的網(wǎng)頁(yè)木馬檢測(cè)方法。本發(fā)明利用網(wǎng)絡(luò)爬蟲(chóng)抓取網(wǎng)頁(yè)源碼,然后經(jīng)過(guò)多層解碼后得到可識(shí)別的腳本程序,在保留腳本程序的同時(shí)對(duì)其進(jìn)行反匯編處理得到匯編源碼,再判斷這些源碼是否存在大量無(wú)效指令填充、調(diào)用系統(tǒng)級(jí)函數(shù)、明顯的URL鏈接,最后通過(guò)匯編碼來(lái)深層次的檢測(cè)網(wǎng)頁(yè)中是否含有木馬。由于現(xiàn)有掛馬網(wǎng)站相當(dāng)一部分都植入了ShellCode,要使網(wǎng)頁(yè)中的ShellCode能在本地機(jī)器中執(zhí)行,需利用系統(tǒng)漏洞實(shí)現(xiàn)緩沖區(qū)溢出,使程序跳轉(zhuǎn)到ShellCode代碼段上。因此只要分析執(zhí)行ShellCode的條件,并根據(jù)其執(zhí)行特征來(lái)分析源碼,就能對(duì)待檢測(cè)網(wǎng)頁(yè)是否是網(wǎng)頁(yè)木馬做出快速檢測(cè)。
文檔編號(hào)G06F21/00GK101673326SQ20081022221
公開(kāi)日2010年3月17日 申請(qǐng)日期2008年9月11日 優(yōu)先權(quán)日2008年9月11日
發(fā)明者昊 張, 李志勇, 華 杜, 越 王, 蔡鎮(zhèn)河, 然 陶 申請(qǐng)人:北京理工大學(xué)