木馬檢測方法
【專利摘要】本發(fā)明實(shí)施例提供一種木馬檢測方法,該方法包括:掃描設(shè)定系統(tǒng)目錄下的動(dòng)態(tài)鏈接庫DLL文件,判斷所述DLL文件的文件指紋是否發(fā)生變化;若所述DLL文件的文件指紋發(fā)生變化,判斷系統(tǒng)更新函數(shù)是否被調(diào)用;若所述系統(tǒng)更新函數(shù)未被調(diào)用,確定所述DLL文件為DLL木馬。本發(fā)明實(shí)施例提供的方法可檢測出通過修改系統(tǒng)DLL文件而植入的DLL木馬。
【專利說明】木馬檢測方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及通信【技術(shù)領(lǐng)域】,尤其涉及一種木馬檢測方法。
【背景技術(shù)】
[0002]隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,網(wǎng)絡(luò)安全問題日益凸顯,特別是木馬程序的日益泛濫,直接導(dǎo)致用戶重要數(shù)據(jù)資料,如賬戶、密碼等信息的非法竊取或破壞。
[0003]傳統(tǒng)的木馬檢測技術(shù)多采用特征碼匹配技術(shù)。由于特征碼匹配技術(shù)依賴于病毒庫的更新完善,在應(yīng)對新型病毒、木馬和自變形的惡意文件時(shí)表現(xiàn)不佳。針對特征碼匹配技術(shù)的滯后性,現(xiàn)有的木馬檢測方法多采用主動(dòng)防御技術(shù),通過監(jiān)控病毒、木馬常用的行為特征,如注冊表文件修改、注冊未知服務(wù)、實(shí)體進(jìn)程運(yùn)行等,識別大部分未知的病毒和木馬。
[0004]木馬開發(fā)者為躲避現(xiàn)有殺毒軟件的查殺,開發(fā)了一種動(dòng)態(tài)鏈接庫(Dynamic LinkLibrary,簡稱DLL)木馬。所謂的DDL木馬,指通過篡改系統(tǒng)的DLL文件,使得在系統(tǒng)文件運(yùn)行時(shí),系統(tǒng)本身的進(jìn)程便會(huì)自動(dòng)調(diào)用預(yù)先存儲在某個(gè)目錄下的遠(yuǎn)程控制實(shí)體。DLL木馬由于是通過系統(tǒng)本身進(jìn)程調(diào)用而觸發(fā),因此不需要注冊服務(wù),不需要修改注冊文件,也不存在額外的運(yùn)行進(jìn)程。現(xiàn)有的木馬檢測方法對于該種DLL木馬存在漏報(bào)現(xiàn)象。
【發(fā)明內(nèi)容】
[0005]本發(fā)明提供一種木馬檢測方法,以檢測通過修改系統(tǒng)DLL文件植入的DLL木馬。
[0006]本發(fā)明實(shí)施例一種木馬檢測方法,包括:
[0007]掃描設(shè)定系統(tǒng)目錄下的動(dòng)態(tài)鏈接庫DLL文件,判斷所述DLL文件的文件指紋是否發(fā)生變化;
[0008]若所述DLL文件的文件指紋發(fā)生變化,判斷系統(tǒng)更新函數(shù)是否被調(diào)用;
[0009]若所述系統(tǒng)更新函數(shù)未被調(diào)用,確定所述DLL文件為DLL木馬。
[0010]本發(fā)明提供一種木馬檢測方法,通過掃描設(shè)定操作系統(tǒng)目錄下的所有DLL文件,判斷DLL文件的文件指紋是否發(fā)生變化,并判斷文件指紋的發(fā)生變化的原因,便可檢測出通過修改系統(tǒng)DLL文件植入的DLL木馬,彌補(bǔ)了現(xiàn)有殺毒軟件的不足,更好地保證用戶操作系統(tǒng)的正常運(yùn)行。
【專利附圖】
【附圖說明】
[0011]圖1為本發(fā)明實(shí)施例一所提供的木馬檢測方法的流程圖;
[0012]圖2為本發(fā)明實(shí)施例二所提供的木馬檢測方法的流程圖;
[0013]圖3為本發(fā)明實(shí)施例三所提供的木馬檢測方法的流程圖。
【具體實(shí)施方式】
[0014]實(shí)施例一
[0015]本發(fā)明實(shí)施例一所提供一種木馬檢測方法,該方法的技術(shù)方案可作為獨(dú)立的殺毒軟件的程序主體,也可作為現(xiàn)有殺毒軟件的插件,還可作為客戶端瀏覽器的植入插件。圖1為本發(fā)明實(shí)施例一提供的木馬檢測方法的流程圖。該方法的步驟,具體包括:
[0016]步驟101、掃描設(shè)定系統(tǒng)目錄下的DLL文件,判斷所述DLL文件的文件指紋是否發(fā)生變化。若是,則執(zhí)行步驟102,若否,則不進(jìn)行處理,繼續(xù)掃描下一個(gè)文件。
[0017]文件指紋,包括采用設(shè)定函數(shù)對文件內(nèi)容計(jì)算得到散列序號、文件名時(shí)間戳的標(biāo)識信息等。文件內(nèi)容即該文件所包括的具體內(nèi)容數(shù)據(jù),只要文件中的某一位二進(jìn)制數(shù)據(jù)發(fā)生變化,即便是微小的變化,該文件對應(yīng)的文件指紋也會(huì)發(fā)生變化。
[0018]掃描該設(shè)定目錄下的所有DLL文件,同時(shí)計(jì)算每個(gè)DLL文件對應(yīng)的文件指紋,將計(jì)算得到每個(gè)DLL文件對應(yīng)的文件指紋與預(yù)先存在的上一時(shí)刻文件指紋進(jìn)行比較,繼而判斷DLL文件的文件指紋是否發(fā)生變化。
[0019]對于DLL木馬來說,其木馬的植入過程中,需要通過修改系統(tǒng)的DLL文件,以使得修改后的DLL文件,變?yōu)镈LL木馬,該修改后的DLL文件還具有原系統(tǒng)DLL文件的功能,以執(zhí)行原系統(tǒng)DLL文件所對應(yīng)的系統(tǒng)進(jìn)程。因此,要檢測該DLL木馬,需要檢測系統(tǒng)的DLL文件是否被修改。
[0020]然而由于DLL木馬在植入過程中,通常為了隱蔽,將自身的文件名稱及文件修訂時(shí)間等信息,刻意的偽裝成與原系統(tǒng)DLL文件名稱、修訂時(shí)間等外在的信息。但,由于文件指紋的特殊性,使得,即便外在信息與原系統(tǒng)DLL文件相同,但其對應(yīng)的文件指紋還是發(fā)生了變化。因此,需要掃描設(shè)定系統(tǒng)目錄下的DLL文件,判斷其文件指紋是否發(fā)生變化。
[0021]需要說明的是,掃描設(shè)定系統(tǒng)目下DLL文件的操作可以是由用戶通過殺毒軟件的操作顯示界面,點(diǎn)擊“開始查殺”等操作按鈕來觸發(fā),或是,還可以是根據(jù)預(yù)設(shè)的查殺時(shí)間或頻率自啟動(dòng)掃描過程,本發(fā)明實(shí)施例不以此為限。
[0022]步驟102、若所述DLL文件的文件指紋發(fā)生變化,判斷系統(tǒng)更新函數(shù)是否被調(diào)用。若否,則執(zhí)行步驟103,若是,則表明該DLL不是木馬,不進(jìn)行額外處理。
[0023]步驟103、若所述系統(tǒng)更新函數(shù)未被調(diào)用,確定所述DLL文件為DLL木馬。
[0024]具體來說,DLL文件作為被封裝的操作系統(tǒng)可運(yùn)行運(yùn)用程序的可執(zhí)行文件,通常不會(huì)作隨意修改。
[0025]為修復(fù)原有操作系統(tǒng)的漏洞,以避免病毒的攻擊,或提供新的具有更多實(shí)現(xiàn)功能的操作系統(tǒng),為用戶提供更好、更便捷的體驗(yàn),需要對現(xiàn)有操作系統(tǒng)進(jìn)行漏洞修復(fù)或者操作系統(tǒng)的升級。而無論是修復(fù)漏洞還是升級,無疑會(huì)造成操作系統(tǒng)內(nèi)DLL文件的修改。當(dāng)發(fā)現(xiàn)某個(gè)系統(tǒng)目錄下DLL文件被修改,而此時(shí)系統(tǒng)更新函數(shù)也未被調(diào)用,也就是說該DLL文件的指紋變化并非是由于系統(tǒng)更新,那么該DLL文件則很有可能是被惡意篡改,便可以確定該DLL文件為DLL木馬。
[0026]本發(fā)明實(shí)施例提供一種木馬檢測方法,通過掃描設(shè)定操作系統(tǒng)目錄下的所有DLL文件,判斷DLL文件的文件指紋是否發(fā)生變化,并判斷文件指紋的發(fā)生變化的原因,便可檢測出通過修改系統(tǒng)DLL文件植入的DLL木馬,彌補(bǔ)了現(xiàn)有殺毒軟件的不足,更好地保證用戶操作系統(tǒng)的正常運(yùn)行。
[0027]實(shí)施例二
[0028]本發(fā)明實(shí)施例二還提供一種木馬檢測方法,在上述實(shí)施例技術(shù)方案的基礎(chǔ)上,該方法中所述設(shè)定系統(tǒng)目錄為System32目錄、Windows目錄和系統(tǒng)環(huán)境變量目錄中至少一個(gè)。
[0029]具體來說,對于現(xiàn)有Window操作系統(tǒng),如WindowsXP、Windows7和Windows Vista等,其大部分的系統(tǒng)DLL文件,也是操作系統(tǒng)關(guān)鍵進(jìn)程的DLL文件被存放在System32目錄下。
[0030]System32 目錄下的DLL文件,如 Winsock.dll、Shdoclc.dlI>Comres.dll 由于其屬于操作系統(tǒng)最常用的一些DLL文件,被注入修改成為DLL木馬的可能性便越大。Winsock.dll為Windows操作系統(tǒng)的應(yīng)用程序接口文件,支持很多與網(wǎng)絡(luò)相關(guān)應(yīng)用程序;Shdoclc.dll為Windows操作系統(tǒng)窗口及對話框設(shè)置的文件;Comres.dll為Windows操作系統(tǒng)的服務(wù)網(wǎng)絡(luò)支撐文件。
[0031]System32目錄下的DLL文件,如Sfc.dll、Sfc_os.dll負(fù)責(zé)系統(tǒng)文件的檢測,可對系統(tǒng)的DLL文件進(jìn)行自檢測,因此成為DLL木馬的篡改的目標(biāo)文件的可能性很大。
[0032]基于上述,需掃描SyStem32目錄下的所有DLL文件,也就掃描了操作系統(tǒng)的大部分的DLL文件,也掃描了影響操作系統(tǒng)關(guān)鍵進(jìn)程的DLL文件。而通過修改系統(tǒng)DLL文件注入的DLL木馬,要想通過系統(tǒng)進(jìn)程的啟動(dòng)而被調(diào)用,修改System32目錄下的DLL文件的可能性比較大些。通過掃描SyStem32目錄下的所有DLL文件,便可檢測出被篡改之后的DLL文件,從而可確定DLL木馬。
[0033]System32目錄位于Windows目錄下,還可以擴(kuò)大掃描范圍,而掃描Windows目錄,其檢測木馬的概率更高。
[0034]系統(tǒng)環(huán)境變量目錄下存儲了運(yùn)行操作系統(tǒng)進(jìn)程所需要使用到的信息。系統(tǒng)環(huán)境變量目錄例如可以是存儲應(yīng)用程序的位置或路徑信息的Path環(huán)境變量目錄,系統(tǒng)進(jìn)程啟動(dòng)之前通過該目錄下的DLL文件查找需要的路徑信息,進(jìn)而調(diào)用對應(yīng)的DLL文件來啟動(dòng)進(jìn)程。系統(tǒng)環(huán)境變量目錄還可以是OS環(huán)境變量目錄、也可以是存儲可執(zhí)行命令處理程序路徑的ComSpec環(huán)境變量目錄等。
[0035]由于System32目錄、Windows目錄和系統(tǒng)環(huán)境變量目錄作為操作系統(tǒng)的關(guān)鍵目錄,是最有可能成為DLL木馬的植入目標(biāo),因此,通過掃描System32目錄、Windows目錄和系統(tǒng)環(huán)境變量目錄至少一個(gè),便可檢測出植入在該些目錄下的DLL木馬。
[0036]在上述技術(shù)方案中,所述文件指紋為DLL文件中的數(shù)據(jù)采用消息摘要算法計(jì)算得到的文件特征值。
[0037]消息摘要算法(Message-Digest Algorithm,簡稱MD),又稱摘要算法、哈希算法。本實(shí)施例采用MD5作為特征值來檢驗(yàn)DLL文件是否被修改。
[0038]在上述方案的基礎(chǔ)上,該方法還包括:當(dāng)在設(shè)定系統(tǒng)目錄下初次存儲DLL文件時(shí),為所述DLL文件生成對應(yīng)的文件指紋;
[0039]當(dāng)所述DLL文件的數(shù)據(jù)被修改時(shí),根據(jù)修改后的DLL文件數(shù)據(jù)產(chǎn)生新的文件指紋,并將原文件指紋作為歷史信息。
[0040]具體而言,可以是在新安裝操作系統(tǒng)之后,便對設(shè)定目錄下的所有的DLL文件都進(jìn)行文件指紋的計(jì)算,并作為系統(tǒng)初始的文件特征值進(jìn)行存儲。
[0041]圖2為本發(fā)明實(shí)施例二所提供的木馬檢測方法的流程圖。如圖2所示,該方法,在上述技術(shù)方案中步驟101中掃描設(shè)定系統(tǒng)目錄下的DLL文件,步驟具體包括:
[0042]步驟201、監(jiān)測設(shè)定系統(tǒng)函數(shù)是否被調(diào)用,當(dāng)所述設(shè)定系統(tǒng)函數(shù)被調(diào)用時(shí)判斷所述設(shè)定系統(tǒng)函數(shù)的操作對象是否為所述系統(tǒng)目錄下的DLL文件。
[0043]步驟202、當(dāng)所述設(shè)定系統(tǒng)函數(shù)的操作對象為所述系統(tǒng)目錄下的DLL文件時(shí),確定所述設(shè)定系統(tǒng)函數(shù)所操作的DLL文件,并掃描所述DLL文件。
[0044]步驟101具體還包括:
[0045]步驟203、判斷所述DLL文件的文件指紋是否發(fā)生變化。
[0046]具體而言,對設(shè)定系統(tǒng)函數(shù)的檢測可以是通過設(shè)置鉤子(HOOK)函數(shù)對該設(shè)定系統(tǒng)函數(shù)進(jìn)行監(jiān)視,當(dāng)該設(shè)定系統(tǒng)函數(shù)發(fā)生動(dòng)作變化,即事件發(fā)生,如被調(diào)用、調(diào)用其他函數(shù)等操作,該HOOK函數(shù)就會(huì)返回對應(yīng)時(shí)間的消息位。從而根據(jù)返回的消息位便可以監(jiān)測該設(shè)定系統(tǒng)是否被調(diào)用。
[0047]現(xiàn)有的操作系統(tǒng)為保證系統(tǒng)運(yùn)行的穩(wěn)定性,均存在一個(gè)操作系統(tǒng)的安全保護(hù)機(jī)制,在Windows XP系統(tǒng)中為該安全保護(hù)機(jī)制為系統(tǒng)文件檢查(System File Check,簡稱SFC)機(jī)制,在Windows7系統(tǒng)和Windows Vista系統(tǒng)中該安全保護(hù)機(jī)制為用戶帳戶控制(User Account Control,簡稱UAC)機(jī)制。操作系統(tǒng)的安全保護(hù)機(jī)制,使得當(dāng)系統(tǒng)的DLL文件被修改后,驗(yàn)證修改后的DLL文件的數(shù)字證書,若驗(yàn)證不通過,則將緩存的原系統(tǒng)DLL文件恢復(fù)并刪除修改的DLL文件。安全保護(hù)機(jī)制的存在,使得系統(tǒng)的DLL文件無法被輕易的修改。
[0048]通過修改系統(tǒng)的DLL文件的注入的DLL木馬,要成功植入系統(tǒng),需要先破解或者繞開系統(tǒng)的安全保護(hù)機(jī)制。
[0049]操作系統(tǒng)的安全保護(hù)機(jī)制要破解或繞開,需要調(diào)用設(shè)定的系統(tǒng)函數(shù),來實(shí)現(xiàn)。因此當(dāng)監(jiān)測到設(shè)定系統(tǒng)函數(shù)被調(diào)用時(shí),則可確定操作系統(tǒng)的安全保護(hù)機(jī)制已被破解。當(dāng)操作系統(tǒng)的安全保護(hù)機(jī)制被破解,且設(shè)定系統(tǒng)目錄下的DLL文件由于非系統(tǒng)更新導(dǎo)致的文件指紋發(fā)生變化,便可確定文件指紋發(fā)生變化的DLL文件為DLL木馬。
[0050]需要說明的是,監(jiān)測設(shè)定系統(tǒng)函數(shù),判斷安全保護(hù)機(jī)制是否被破解,與掃描設(shè)定系統(tǒng)目錄下的DLL文件,判斷DLL文件的文件指紋是否發(fā)生變化,并無絕對的時(shí)間順序關(guān)系,可以同時(shí)執(zhí)行,也可以先判斷安全保護(hù)機(jī)制知否被破解,再掃描設(shè)定系統(tǒng)目錄下的DLL文件,判斷DLL文件的文件指紋是否發(fā)生變化,還可以先掃描設(shè)定系統(tǒng)目錄下的DLL文件,判斷DLL文件的文件指紋是否發(fā)生變化,再判斷安全保護(hù)機(jī)制是否被破解。
[0051]本發(fā)明實(shí)施例的方法在安全保護(hù)機(jī)制被破解且DLL文件的文件指紋發(fā)生變化,對DLL木馬的檢測更準(zhǔn)確。
[0052]在上述方案的基礎(chǔ)中,所述設(shè)定系統(tǒng)函數(shù)為應(yīng)用處理接口 API函數(shù),包括:地址獲取函數(shù)、遠(yuǎn)程線程創(chuàng)建函數(shù)和文件時(shí)間設(shè)置函數(shù)中至少一個(gè)。
[0053]具體來說,設(shè)定系統(tǒng)函數(shù)指的是一些系統(tǒng)的敏感函數(shù),如地址獲取函數(shù)GetProcAddress、遠(yuǎn)程線程創(chuàng)建函數(shù)CreateRemoteThreacU文件時(shí)間設(shè)置函數(shù)SetFileTime 等。
[0054]GetProcAddress函數(shù)用來檢索某個(gè)DLL中的輸出函數(shù)地址。需要說明的是,直接使用GetProcAddress對敏感DLL文件進(jìn)行函數(shù)地址查詢通常會(huì)被普通殺毒軟件即可查出并報(bào)警,因此當(dāng)GetProcAddress常與LoadLibrary函數(shù)配合使用,先由LoadLibrary函數(shù)取得DLL文件的地址,再將該地址作為參數(shù)代入GetProcAddress進(jìn)行文件中的接口函數(shù)地址檢索。DLL木馬通過調(diào)用GetProcAddress函數(shù)及Load Library函數(shù),獲取系統(tǒng)DLL文件中的函數(shù)地址,進(jìn)而直接通過接口地址對DLL文件進(jìn)行修改,如此很有可能繞開已有殺毒軟件的查殺。
[0055]調(diào)用CreateRemoteThread函數(shù)可在另一個(gè)進(jìn)程內(nèi)創(chuàng)建新線程,被創(chuàng)建的遠(yuǎn)程線程同樣可以共享遠(yuǎn)程進(jìn)程的地址空間。通過一個(gè)遠(yuǎn)程線程,進(jìn)入了遠(yuǎn)程進(jìn)程的內(nèi)存地址空間,也就擁有遠(yuǎn)程進(jìn)程相當(dāng)?shù)臋?quán)限,繼而使得系統(tǒng)進(jìn)程啟動(dòng)即可調(diào)用遠(yuǎn)控實(shí)體。若該函數(shù)未被調(diào)用,那么當(dāng)系統(tǒng)進(jìn)程啟動(dòng)時(shí),便無法調(diào)用遠(yuǎn)控實(shí)體,實(shí)現(xiàn)對應(yīng)的木馬功能。
[0056]調(diào)用SetFileTime函數(shù)可對DLL木馬的文件名及修改時(shí)間等信息進(jìn)行修改,以偽裝成與原系統(tǒng)DLL文件類似。如該函數(shù)未被調(diào)用,修改后的DLL文件也可以被普通殺毒軟件直接檢測發(fā)現(xiàn),進(jìn)而進(jìn)行查殺。
[0057]綜上,GetProcAddress函數(shù)、LoadLibrary 函數(shù)、CreateRemoteThread 函數(shù)及SetFileTime函數(shù)均需作為敏感函數(shù),監(jiān)控敏感函數(shù)是否被調(diào)用,以檢測通過修改系統(tǒng)DLL的DLL木馬。
[0058]進(jìn)一步地,在上述方案的基礎(chǔ)上,步驟103中的判斷DLL文件的文件指紋發(fā)生變化的原因是否屬于系統(tǒng)更新,包括:
[0059]當(dāng)所述DLL文件的文件指紋發(fā)生變化,讀取系統(tǒng)進(jìn)程監(jiān)控器存儲的所述DLL文件對應(yīng)的文件讀寫記錄;
[0060]根據(jù)所述DLL文件對應(yīng)的文件讀寫記錄確定所述DLL文件的文件指紋發(fā)生變化的原因是否屬于系統(tǒng)更新。
[0061]具體來說,系統(tǒng)進(jìn)程監(jiān)控器結(jié)合文件監(jiān)視器和注冊表監(jiān)視器兩個(gè)功能,其可記錄當(dāng)前操作系統(tǒng)下所有文件的讀寫記錄,及所有進(jìn)程的注冊表。因此,可通過讀取得到的系統(tǒng)進(jìn)程監(jiān)控器中DLL文件對應(yīng)的讀寫記錄,確定DLL文件的文件指紋發(fā)生變化的原因。
[0062]本發(fā)明實(shí)施例二在上述實(shí)施例一方案的基礎(chǔ)上,提供的木馬檢測方法,其對于DLL木馬的查殺概率更高,查殺更準(zhǔn)確。
[0063]實(shí)施例三
[0064]本發(fā)明實(shí)施例三提供一種木馬檢測方法,通過具體實(shí)例進(jìn)行解釋說明。圖3為本發(fā)明實(shí)施例三所提供的木馬檢測方法的流程圖。如圖3所示,該方法包括:
[0065]步驟301、監(jiān)測API函數(shù),具體是監(jiān)測地址獲取函數(shù)、庫下載函數(shù)、遠(yuǎn)程線程創(chuàng)建函數(shù)和文件時(shí)間設(shè)置函數(shù)中至少一個(gè)是否被調(diào)用。若是,則執(zhí)行步驟302。若否,則執(zhí)行步驟307,該操作系統(tǒng)安全。
[0066]步驟302、當(dāng)API函數(shù)被調(diào)用時(shí),判斷該API函數(shù)的操作對象是否為系統(tǒng)目錄下的DLL文件。
[0067]步驟303、當(dāng)該API函數(shù)的操作對象為系統(tǒng)目錄下的DLL文件,確定該API函數(shù)所操作的DLL文件,判斷該DLL文件的MD5值是否發(fā)生變化。若是,則執(zhí)行步驟304。若否,則執(zhí)行步驟307,該操作系統(tǒng)安全。
[0068]步驟304、當(dāng)DLL文件的MD5值發(fā)生變化,判斷系統(tǒng)更新函數(shù)是否被調(diào)用。若是,則執(zhí)行步驟307,該操作系統(tǒng)安全。如否,則執(zhí)行步驟305。
[0069]步驟305、當(dāng)所述系統(tǒng)更新函數(shù)未被調(diào)用,確定該DLL文件為DLL木馬。
[0070]步驟306、提示用戶當(dāng)前操作系統(tǒng)存在DLL木馬。
[0071]提示用戶可以是通過發(fā)送報(bào)警聲音,也可以是通過顯示界面告知用戶,以等待用戶進(jìn)一步地操作,如立刻查殺、忽略或稍后執(zhí)行查殺等。
[0072]步驟307、提示用戶操作系統(tǒng)未檢測到DLL木馬。
[0073]本發(fā)明實(shí)施例是在上述實(shí)施例的基礎(chǔ)上,通過具體的實(shí)例進(jìn)行解釋說明,其具體的實(shí)現(xiàn)過程和有益效果與上述實(shí)施例類似,在此不再贅述。
[0074]最后應(yīng)說明的是:以上各實(shí)施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實(shí)施例對本發(fā)明進(jìn)行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實(shí)施例所記載的技術(shù)方案進(jìn)行修改,或者對其中部分或者全部技術(shù)特征進(jìn)行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實(shí)施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種木馬檢測方法,其特征在于,包括: 掃描設(shè)定系統(tǒng)目錄下的動(dòng)態(tài)鏈接庫DLL文件,判斷所述DLL文件的文件指紋是否發(fā)生變化; 若所述DLL文件的文件指紋發(fā)生變化,判斷系統(tǒng)更新函數(shù)是否被調(diào)用; 若所述系統(tǒng)更新函數(shù)未被調(diào)用,確定所述DLL文件為DLL木馬。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述設(shè)定系統(tǒng)目錄為System32目錄、Windows目錄和系統(tǒng)環(huán)境變量目錄中至少一個(gè)。
3.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述文件指紋為DLL文件中的數(shù)據(jù)采用消息摘要算法計(jì)算得到的文件特征值。
4.根據(jù)權(quán)利要求1-3任一所述的方法,其特征在于,所述掃描設(shè)定系統(tǒng)目錄下的DLL文件,包括: 監(jiān)測設(shè)定系統(tǒng)函數(shù)是否被調(diào)用,當(dāng)所述設(shè)定系統(tǒng)函數(shù)被調(diào)用時(shí)判斷所述設(shè)定系統(tǒng)函數(shù)的操作對象是否為所述系統(tǒng)目錄下的DLL文件; 當(dāng)所述設(shè)定系統(tǒng)函數(shù)的操作對象為所述系統(tǒng)目錄下的DLL文件時(shí),確定所述設(shè)定系統(tǒng)函數(shù)所操作的DLL文件,并掃描所述DLL文件。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述設(shè)定系統(tǒng)函數(shù)為應(yīng)用處理接口API函數(shù),包括:地址獲取函數(shù)、庫下載函數(shù)、遠(yuǎn)程線程創(chuàng)建函數(shù)和文件時(shí)間設(shè)置函數(shù)中至少一個(gè)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,還包括: 當(dāng)在設(shè)定系統(tǒng)目錄下初次存儲DLL文件時(shí),為所述DLL文件生成對應(yīng)的文件指紋; 當(dāng)所述DLL文件的數(shù)據(jù)被修改時(shí),根據(jù)修改后的DLL文件數(shù)據(jù)產(chǎn)生新的文件指紋,并將原文件指紋作為歷史信息。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,判斷所述DLL文件的文件指紋發(fā)生變化的原因是否屬于系統(tǒng)更新,包括: 當(dāng)所述DLL文件的文件指紋發(fā)生變化,讀取系統(tǒng)進(jìn)程監(jiān)控器存儲的所述DLL文件對應(yīng)的文件讀寫記錄; 根據(jù)所述DLL文件對應(yīng)的文件讀寫記錄確定所述DLL文件的文件指紋發(fā)生變化的原因是否屬于系統(tǒng)更新。
【文檔編號】G06F21/56GK103632093SQ201310425258
【公開日】2014年3月12日 申請日期:2013年9月17日 優(yōu)先權(quán)日:2013年9月17日
【發(fā)明者】白冰, 韓正清, 王強(qiáng), 王英梅, 李超, 邱勇杰, 王旻育, 唐崗洋 申請人:中國人民解放軍61599部隊(duì)計(jì)算所