本發(fā)明涉及互聯(lián)網(wǎng)技術(shù)領(lǐng)域,具體涉及一種目標(biāo)樣本文件的檢測方法和裝置。
背景技術(shù):
隨著互聯(lián)網(wǎng)技術(shù)的不斷發(fā)展,人們對于網(wǎng)絡(luò)的使用愈加頻繁,通過網(wǎng)絡(luò)可以進(jìn)行工作、學(xué)習(xí)、生活、娛樂等多方面的事宜,給人們帶來了極大的便利。然而,當(dāng)前互聯(lián)網(wǎng)技術(shù)中存在系統(tǒng)級的內(nèi)核漏洞,這些漏洞給惡意開發(fā)者以可乘之機(jī),惡意開發(fā)者們通過威脅樣本文件利用這些漏洞對各種客戶端、服務(wù)端所在的終端進(jìn)行攻擊,獲取用戶的個(gè)人信息,威脅用戶的信息安全,給用戶的人身、財(cái)產(chǎn)等方面損失。其中特別地,惡意開發(fā)者們在通過威脅樣本文件進(jìn)行漏洞利用的過程中,常常采用繞過系統(tǒng)中用于阻止內(nèi)核執(zhí)行用戶控件的代碼的保護(hù)機(jī)制的手段來獲取系統(tǒng)級權(quán)限以執(zhí)行非法操作。
因此,如何有效、全面地對互聯(lián)網(wǎng)中進(jìn)行漏洞利用攻擊的可疑樣本進(jìn)行挖掘、檢測和處理,是當(dāng)前亟待解決的重要問題。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決上述問題的目標(biāo)樣本文件的檢測方法和裝置。
依據(jù)本發(fā)明的一個(gè)方面,提供了一種目標(biāo)樣本文件的檢測方法,包括:
從數(shù)據(jù)源接收目標(biāo)樣本文件,將所述目標(biāo)樣本文件投放到沙箱中運(yùn)行;
在所述目標(biāo)樣本文件在沙箱中運(yùn)行的過程中,監(jiān)聽沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制是否失效;
是則,確定所述目標(biāo)樣本文件是威脅樣本文件;
否則,確定所述目標(biāo)樣本文件不是威脅樣本文件。
可選地,所述監(jiān)聽沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制是否失效包括:
監(jiān)聽對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件;
當(dāng)監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件時(shí),確定沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制失效。
可選地,所述監(jiān)聽對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件包括:
在對所述保護(hù)機(jī)制進(jìn)行操作的函數(shù)上掛載鉤子函數(shù);
當(dāng)該函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截該函數(shù)的調(diào)用指令;
判斷所述調(diào)用指令是否指示對所述保護(hù)機(jī)制進(jìn)行禁用操作,是則,確定監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所述調(diào)用指令;否則,利用所述鉤子函數(shù)放行所述調(diào)用指令。
可選地,沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制包括:SMEP機(jī)制;對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件包括:對SMEP機(jī)制進(jìn)行禁止操作的事件;
所述監(jiān)聽對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件包括:
監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令;
當(dāng)監(jiān)聽到所述指令時(shí),確定監(jiān)聽到對SMEP機(jī)制進(jìn)行禁止操作的事件。
可選地,所述監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令包括:
在對沙箱中的CR4寄存器進(jìn)行操作的函數(shù)上掛載鉤子函數(shù);
當(dāng)所述函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截對所述函數(shù)進(jìn)行調(diào)用的指令;
如果所攔截的指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的指令;否則利用鉤子函數(shù)放行所攔截的指令。
可選地,所述監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令包括:
在沙箱中的Ntoskrnl.exe進(jìn)程中查找對CR4寄存器進(jìn)行操作的參考點(diǎn),在所述參考點(diǎn)上掛載鉤子函數(shù);
當(dāng)所述參考點(diǎn)被調(diào)起時(shí),利用所述鉤子函數(shù)攔截相應(yīng)的調(diào)起指令;
如果所攔截的調(diào)起指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的調(diào)起指令;否則利用鉤子函數(shù)放行所攔截的調(diào)起指令。
可選地,所述監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令包括:
監(jiān)測沙箱中的調(diào)用棧是否為正常調(diào)用修改CR4寄存器的指令所在函數(shù)的調(diào)用棧;
如果否,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令。
可選地,該方法進(jìn)一步包括:
記錄所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志;
當(dāng)確定所述目標(biāo)樣本文件是威脅樣本文件時(shí),根據(jù)所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志獲得所述目標(biāo)樣本文件相關(guān)的特征信息;
將所述目標(biāo)樣本相關(guān)的特征信息放入威脅數(shù)據(jù)庫中。
可選地,所述目標(biāo)樣本文件相關(guān)的特征信息包括:
目標(biāo)樣本文件的靜態(tài)特征信息,
和/或,
目標(biāo)樣本文件的行為特征信息。
可選地,該方法進(jìn)一步包括:
將所述目標(biāo)樣本相關(guān)的特征信息反饋給數(shù)據(jù)源。
依據(jù)本發(fā)明的另一個(gè)方面,提供了一種目標(biāo)樣本文件的檢測裝置,包括:
樣本接收單元,適于從數(shù)據(jù)源接收目標(biāo)樣本文件;
檢測處理單元,適于將所述目標(biāo)樣本文件投放到沙箱中運(yùn)行;在所述目標(biāo)樣本文件在沙箱中運(yùn)行的過程中,監(jiān)聽沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制是否失效;是則,確定所述目標(biāo)樣本文件是威脅樣本文件;否則,確定所述目標(biāo)樣本文件不是威脅樣本文件。
可選地,所述檢測處理單元,適于監(jiān)聽對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件;當(dāng)監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件時(shí),確定沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制失效。
可選地,所述檢測處理單元,適于在對所述保護(hù)機(jī)制進(jìn)行操作的函數(shù)上掛載鉤子函數(shù);當(dāng)該函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截該函數(shù)的調(diào)用指令;判斷所述調(diào)用指令是否指示對所述保護(hù)機(jī)制進(jìn)行禁用操作,是則,確定監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所述調(diào)用指令;否則,利用所述鉤子函數(shù)放行所述調(diào)用指令。
可選地,沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制包括:SMEP機(jī)制;對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件包括:對SMEP機(jī)制進(jìn)行禁止操作的事件;
所述檢測處理單元,適于監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令;當(dāng)監(jiān)聽到所述指令時(shí),確定監(jiān)聽到對SMEP機(jī)制進(jìn)行禁止操作的事件。
可選地,所述檢測處理單元,適于在對沙箱中的CR4寄存器進(jìn)行操作的函數(shù)上掛載鉤子函數(shù);當(dāng)所述函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截對所述函數(shù)進(jìn)行調(diào)用的指令;如果所攔截的指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的指令;否則利用鉤子函數(shù)放行所攔截的指令。
可選地,所述檢測處理單元,適于在沙箱中的Ntoskrnl.exe進(jìn)程中查找對CR4寄存器進(jìn)行操作的參考點(diǎn),在所述參考點(diǎn)上掛載鉤子函數(shù);當(dāng)所述參考點(diǎn)被調(diào)起時(shí),利用所述鉤子函數(shù)攔截相應(yīng)的調(diào)起指令;如果所攔截的調(diào)起指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的調(diào)起指令;否則利用鉤子函數(shù)放行所攔截的調(diào)起指令。
可選地,所述檢測處理單元,適于監(jiān)測沙箱中的調(diào)用棧是否為正常調(diào)用修改CR4寄存器的指令所在函數(shù)的調(diào)用棧;如果否,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令。
可選地,所述檢測處理單元,進(jìn)一步適于記錄所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志;當(dāng)確定所述目標(biāo)樣本文件是威脅樣本文件時(shí),根據(jù)所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志獲得所述目標(biāo)樣本文件相關(guān)的特征信息;將所述目標(biāo)樣本相關(guān)的特征信息放入威脅數(shù)據(jù)庫中。
可選地,所述目標(biāo)樣本文件相關(guān)的特征信息包括:
目標(biāo)樣本文件的靜態(tài)特征信息,
和/或,
目標(biāo)樣本文件的行為特征信息。
可選地,所述檢測處理單元,進(jìn)一步適于將所述目標(biāo)樣本相關(guān)的特征信息反饋給數(shù)據(jù)源。
由上述可知,本發(fā)明的技術(shù)方案將從數(shù)據(jù)源接收的目標(biāo)樣本文件投放到沙箱中進(jìn)行檢測,當(dāng)檢測出目標(biāo)樣本文件在沙箱中運(yùn)行的過程中發(fā)生沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制失效的事件時(shí),確定目標(biāo)樣本文件為威脅樣本文件。本方案以沙箱作為虛擬載體運(yùn)行目標(biāo)樣本文件,能夠清晰地檢測到目標(biāo)樣本文件的所有運(yùn)行軌跡,全面分析得到目標(biāo)樣本文件相關(guān)的特征信息,根據(jù)目標(biāo)樣本文件相關(guān)的特征信息可以更為準(zhǔn)確地判斷所述目標(biāo)樣本文件在虛擬機(jī)中運(yùn)行的過程中是否發(fā)生進(jìn)程屬性修改事件,進(jìn)而確定出威脅樣本文件,為后續(xù)信息安全防護(hù)提供參考和依據(jù)。
上述說明僅是本發(fā)明技術(shù)方案的概述,為了能夠更清楚了解本發(fā)明的技術(shù)手段,而可依照說明書的內(nèi)容予以實(shí)施,并且為了讓本發(fā)明的上述和其它目的、特征和優(yōu)點(diǎn)能夠更明顯易懂,以下特舉本發(fā)明的具體實(shí)施方式。
附圖說明
通過閱讀下文優(yōu)選實(shí)施方式的詳細(xì)描述,各種其他的優(yōu)點(diǎn)和益處對于本領(lǐng)域普通技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實(shí)施方式的目的,而并不認(rèn)為是對本發(fā)明的限制。而且在整個(gè)附圖中,用相同的參考符號表示相同的部件。在附圖中:
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種目標(biāo)樣本文件的檢測方法的流程圖;
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種目標(biāo)樣本文件的檢測裝置的示意圖。
具體實(shí)施方式
下面將參照附圖更詳細(xì)地描述本公開的示例性實(shí)施例。雖然附圖中顯示了本公開的示例性實(shí)施例,然而應(yīng)當(dāng)理解,可以以各種形式實(shí)現(xiàn)本公開而不應(yīng)被這里闡述的實(shí)施例所限制。相反,提供這些實(shí)施例是為了能夠更透徹地理解本公開,并且能夠?qū)⒈竟_的范圍完整的傳達(dá)給本領(lǐng)域的技術(shù)人員。
圖1示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種目標(biāo)樣本文件的檢測方法的流程圖。如圖1所示,該方法包括:
步驟S110,從數(shù)據(jù)源接收目標(biāo)樣本文件,將所述目標(biāo)樣本文件投放到沙箱中運(yùn)行。
步驟S120,在所述目標(biāo)樣本文件在沙箱中運(yùn)行的過程中,監(jiān)聽沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制是否失效。
步驟S130,是則,確定所述目標(biāo)樣本文件是威脅樣本文件。
步驟S140,否則,確定所述目標(biāo)樣本文件不是威脅樣本文件。
可見,圖1所示的方法將從數(shù)據(jù)源接收的目標(biāo)樣本文件投放到沙箱中進(jìn)行檢測,當(dāng)檢測出目標(biāo)樣本文件在沙箱中運(yùn)行的過程中發(fā)生沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制失效的事件時(shí),確定目標(biāo)樣本文件為威脅樣本文件。本方案以沙箱作為虛擬載體運(yùn)行目標(biāo)樣本文件,能夠清晰地檢測到目標(biāo)樣本文件的所有運(yùn)行軌跡,全面分析得到目標(biāo)樣本文件相關(guān)的特征信息,根據(jù)目標(biāo)樣本文件相關(guān)的特征信息可以更為準(zhǔn)確地判斷所述目標(biāo)樣本文件在虛擬機(jī)中運(yùn)行的過程中是否發(fā)生進(jìn)程屬性修改事件,進(jìn)而確定出威脅樣本文件,為后續(xù)信息安全防護(hù)提供參考和依據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,圖1所示的方法進(jìn)一步包括:記錄所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志;當(dāng)確定所述目標(biāo)樣本文件是威脅樣本文件時(shí),根據(jù)所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志獲得所述目標(biāo)樣本文件相關(guān)的特征信息;將所述目標(biāo)樣本相關(guān)的特征信息放入威脅數(shù)據(jù)庫中。
其中,通過分析目標(biāo)樣本文件對應(yīng)的運(yùn)行日志得到的目標(biāo)樣本文件相關(guān)的特征信息包括:目標(biāo)樣本文件的靜態(tài)特征信息,和/或,目標(biāo)樣本文件的行為特征信息。也就是說,對于放入沙箱中運(yùn)行的目標(biāo)樣本文件,無論是該目標(biāo)樣本文件的靜態(tài)特征,還是該目標(biāo)樣本文件在運(yùn)行過程中的動(dòng)態(tài)行為特征,均可以被解構(gòu)出來,均可以從本方案的視角觀察到,即掌握了一個(gè)目標(biāo)樣本文件的完整的檔案,進(jìn)而對于該目標(biāo)樣本文件是不是具有威脅的威脅樣本、如果是威脅樣本如何對該可疑樣本進(jìn)行預(yù)防、查殺等問題均可以找到準(zhǔn)確的答案。
隨著本方案的不斷實(shí)施,所掌握的目標(biāo)樣本文件的檔案不斷被完善,即威脅數(shù)據(jù)庫中的數(shù)據(jù)不斷被完善。在本發(fā)明的一個(gè)實(shí)施例中,上述將判定為威脅樣本的目標(biāo)樣本文件相關(guān)的特征信息放入威脅數(shù)據(jù)庫中包括:根據(jù)所述判定為威脅樣本的可疑樣本相關(guān)的特征信息對威脅數(shù)據(jù)庫中原有的數(shù)據(jù)進(jìn)行更新。
進(jìn)一步地,圖1所述的方法還可以將所述目標(biāo)樣本相關(guān)的特征信息反饋給數(shù)據(jù)源。可以看到,在本方案中,從數(shù)據(jù)源接收目標(biāo)樣本文件,對目標(biāo)樣本文件進(jìn)行檢測實(shí)現(xiàn)對威脅數(shù)據(jù)庫的補(bǔ)充更新,威脅數(shù)據(jù)庫向數(shù)據(jù)源推送補(bǔ)目標(biāo)樣本文件相關(guān)的特征信息,數(shù)據(jù)源根據(jù)該推送的目標(biāo)樣本文件相關(guān)的特征信息進(jìn)行打點(diǎn)記錄,更精確地?cái)r截、記錄目標(biāo)樣本文件,以及向威脅數(shù)據(jù)庫反饋推送結(jié)果,形成了正反饋閉環(huán),能夠不斷地?cái)U(kuò)充完善各種類型的目標(biāo)樣本文件的完整的特征信息的管理,目標(biāo)樣本文件的特征信息越完善清晰,越能夠找到預(yù)防查殺威脅樣本的策略,并可以及時(shí)將預(yù)防查殺威脅樣本的策略統(tǒng)一推送到數(shù)據(jù)源中對于各個(gè)數(shù)據(jù)源的預(yù)防查殺策略進(jìn)行統(tǒng)一的調(diào)整,建立起非常嚴(yán)密的安全防護(hù)機(jī)制,從更高的格局保障互聯(lián)網(wǎng)信息安全。
在本發(fā)明的一個(gè)實(shí)施例中,圖1所示方法的步驟S120監(jiān)聽沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制是否失效包括:監(jiān)聽對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件;當(dāng)監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件時(shí),確定沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制失效。
具體地,上述監(jiān)聽對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件包括:
步驟S121,在對所述保護(hù)機(jī)制進(jìn)行操作的函數(shù)上掛載鉤子函數(shù)。
步驟S122,當(dāng)該函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截該函數(shù)的調(diào)用指令。
步驟S123,判斷所述調(diào)用指令是否指示對所述保護(hù)機(jī)制進(jìn)行禁用操作,是則,確定監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所述調(diào)用指令;否則,利用所述鉤子函數(shù)放行所述調(diào)用指令。
以一個(gè)具體的例子來說明本方案的實(shí)施過程,在系統(tǒng)內(nèi)核中,管理模式執(zhí)行保護(hù)機(jī)制SMEP(Supervisor Mode Execution Protection Enable)——用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制,系統(tǒng)內(nèi)核處理正常狀態(tài)時(shí)該保護(hù)機(jī)制維持開啟狀態(tài),確保內(nèi)核無法執(zhí)行位于低權(quán)限層的代碼(比如用戶空間的應(yīng)用程序代碼),從而保證內(nèi)核代碼的完整性,保證內(nèi)核無法在內(nèi)核代碼中引入特權(quán)指令或執(zhí)行其他地方的特權(quán)指令。惡意攻擊者在發(fā)現(xiàn)這一保護(hù)機(jī)制時(shí),為了實(shí)現(xiàn)其惡意的內(nèi)核利用提權(quán)的目的,常常在引入惡意攻擊程序之前首先嘗試關(guān)閉系統(tǒng)內(nèi)核中的上述阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制,以實(shí)現(xiàn)程序重定向到可控的用戶態(tài)地址空間,并以ring0權(quán)限執(zhí)行可控代碼的最終攻擊方式。具體地,惡意攻擊者可以通過以下方式繞過SEMP保護(hù)機(jī)制:一種方式是通過ROP編程令SMEP的強(qiáng)制保護(hù)失效(改變CR4寄存器中的相關(guān)位),這種方法實(shí)現(xiàn)時(shí)需要保證棧是可控的;另一種方式是在以內(nèi)存頁為單位的空間內(nèi)關(guān)閉SMEP,這種方法是通過在頁級的轉(zhuǎn)換映射入口(translation mapping entries)處做出相應(yīng)的修改,將用戶態(tài)的頁標(biāo)為內(nèi)核態(tài)的頁來實(shí)現(xiàn)的;此外,還有一種方式在理論上應(yīng)該是可行的,這種方法通過跳轉(zhuǎn)(通過指針或回調(diào)函數(shù)表)至一處已存在的函數(shù)執(zhí)行(從而令SMEP失效,同時(shí)也繞過KASLR),同時(shí)又有某種方法令攻擊者能夠獲取到程序的控制權(quán)(并非通過ROP),當(dāng)然迄今為止還沒有人找到過這樣一個(gè)已存在的函數(shù)。這樣的方法應(yīng)該是一種面向跳轉(zhuǎn)的編程方法(JOP)。
針對上述攻擊規(guī)律,本方案提出對用于阻止內(nèi)核執(zhí)行用戶控件的代碼的保護(hù)機(jī)制進(jìn)行禁用的事件進(jìn)行監(jiān)聽,當(dāng)發(fā)現(xiàn)目標(biāo)樣本文件要執(zhí)行對用于阻止內(nèi)核執(zhí)行用戶控件的代碼的保護(hù)機(jī)制進(jìn)行禁用的操作時(shí),確定這是目標(biāo)樣本文件想要獲得系統(tǒng)級權(quán)限的第一步,進(jìn)而確定目標(biāo)樣本文件是威脅樣本文件。
由于SMEP保護(hù)機(jī)制存在于CR4寄存器的第20bit位,將該位稱作為CR4寄存器的SMEP位,當(dāng)CR4寄存器的SMEP位被修改時(shí),SMEP保護(hù)機(jī)制的狀態(tài)發(fā)生變化,從默認(rèn)的開啟狀態(tài)變?yōu)殛P(guān)閉狀態(tài),則本方案所要監(jiān)聽的是對SMEP保護(hù)機(jī)制進(jìn)行禁止操作的事件,包括:監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令;當(dāng)監(jiān)聽到所述指令時(shí),確定監(jiān)聽到對SMEP機(jī)制進(jìn)行禁止操作的事件。具體地,上述監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令包括:在對沙箱中的CR4寄存器進(jìn)行操作的函數(shù)上掛載鉤子函數(shù);當(dāng)所述函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截對所述函數(shù)進(jìn)行調(diào)用的指令;如果所攔截的指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的指令;否則利用鉤子函數(shù)放行所攔截的指令。
其中,CR0~CR4是一組控制寄存器,控制寄存器是改變或者控制CPU和其他一些數(shù)字設(shè)備一般行為的寄存器,通過這些控制寄存器可以完成像中斷、尋址方式切換、分頁控制等任務(wù)。CR0~CR3都可以通過mov操作獲取到相應(yīng)的值,然而并不存在mov eax,cr4的操作,不能夠直接獲取到CR4的值。CR4寄存器用于保護(hù)模式,通過CR4可以獲取到諸如是否開啟分頁模式、是否有物理地址擴(kuò)展、是否開啟保護(hù)模式等信息,如果需要獲取到這些信息,就需要訪問CR4了,這里給出2種訪問的方法:一種是通過內(nèi)聯(lián)匯編的方法(x86),另一種是通過_KSPECIAL_REGISTERS結(jié)構(gòu),_KSPECIAL_REGISTERS結(jié)構(gòu)體中記錄了內(nèi)核的特殊寄存器的值,通過該結(jié)構(gòu)可以獲取到諸如CR0、CR2、CR3、CR4等寄存器的值。
在本發(fā)明的另一個(gè)實(shí)施例中,由于用于存儲SEMP保護(hù)機(jī)制的設(shè)置數(shù)據(jù)的CR4寄存器的地址能夠從系統(tǒng)的Ntoskrnl.exe進(jìn)程中查找到,那么,上述監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令包括:在沙箱中的Ntoskrnl.exe進(jìn)程中查找對CR4寄存器進(jìn)行操作的參考點(diǎn),在所述參考點(diǎn)上掛載鉤子函數(shù);當(dāng)所述參考點(diǎn)被調(diào)起時(shí),利用所述鉤子函數(shù)攔截相應(yīng)的調(diào)起指令;如果所攔截的調(diào)起指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的調(diào)起指令;否則利用鉤子函數(shù)放行所攔截的調(diào)起指令。
又由于判斷CR4寄存器的SMEP位是否被修改的過程等效于判斷對應(yīng)的調(diào)用棧的變化狀態(tài),因此,上述監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令包括:監(jiān)測沙箱中的調(diào)用棧是否為正常調(diào)用修改CR4寄存器的指令所在函數(shù)的調(diào)用棧;如果否,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令。
在另一個(gè)具體的例子中,基于現(xiàn)有技術(shù)中惡意的威脅樣本文件通常采取對系統(tǒng)保護(hù)機(jī)制進(jìn)行禁用的方式獲得系統(tǒng)權(quán)限,進(jìn)而執(zhí)行惡意操作危害用戶信息安全的手段,本方案旨在于服務(wù)器側(cè)創(chuàng)建沙箱作為目標(biāo)樣本文件的虛擬運(yùn)行載體,通過監(jiān)控目標(biāo)樣本文件在沙箱中運(yùn)行的過程中是否發(fā)生進(jìn)程屬性修改事件來獲知是否發(fā)生內(nèi)核漏洞利用的事件,即通過威脅樣本文件在沙箱中的行為特征來動(dòng)態(tài)地確定目標(biāo)樣本文件是否為威脅樣本文件。本例中,沙箱中包括4個(gè)模塊:Agent.exe,虛擬機(jī)通信代理模塊,負(fù)責(zé)檢測模塊和樣本文件的接收,Analyzer進(jìn)程的創(chuàng)建,與虛擬機(jī)外部服務(wù)器端進(jìn)程實(shí)時(shí)數(shù)據(jù)交互、日志和文件傳遞。Analyzer.exe,內(nèi)部調(diào)度管控模塊,負(fù)責(zé)樣本文件類型識別、LoadHP進(jìn)程的創(chuàng)建,內(nèi)部檢測超時(shí)設(shè)定和限制,操作系統(tǒng)屏幕模擬點(diǎn)擊實(shí)現(xiàn),屏幕截取實(shí)現(xiàn),與Agent的數(shù)據(jù)通信。LoadHP.exe,檢測輔助操作模塊,負(fù)責(zé)加載檢測主模塊驅(qū)動(dòng)程序,通過配置文件選項(xiàng)控制各檢測功能開關(guān),與核心模塊驅(qū)動(dòng)程序之間通信和交互,樣本文件進(jìn)程的啟動(dòng)。Honeypot.sys,檢測實(shí)現(xiàn)核心模塊,驅(qū)動(dòng)程序?qū)崿F(xiàn)。在操作系統(tǒng)內(nèi)核中設(shè)置進(jìn)程創(chuàng)建回調(diào)通知、對指定的內(nèi)核API掛鉤,在HOOK處理函數(shù)中判定進(jìn)程是否提權(quán),打點(diǎn)并生成檢測結(jié)果日志等。
在Honeypot日志記錄線程中,持續(xù)不斷地檢查日志緩沖LIST中是否又新的日志Buffer插入。將新的日志Buffer追加寫入到配置選項(xiàng)中指定路徑的配置文件中,并釋放日志緩沖LIST中該日志Buffer的節(jié)點(diǎn)。
對本例中生成檢測結(jié)果日志的細(xì)節(jié)進(jìn)行說明:該方案打點(diǎn)檢出日志生成形式為緩存方式打點(diǎn)。檢出日志被暫存于日志緩沖LIST中。日志記錄線程輪詢該日志緩沖LIST并依照FIFO的方式依次處理各日志節(jié)點(diǎn),將檢測結(jié)果日志內(nèi)容追加寫入日志記錄文件actions.log中,在檢測完成后由外部相關(guān)調(diào)度模塊進(jìn)程獲取并處理該日志文件。其中,檢測結(jié)果日志中的打點(diǎn)數(shù)據(jù)包括:環(huán)境和文件基本信息,檢出功能點(diǎn)觸發(fā)數(shù)據(jù)等。其中環(huán)境和文件基本信息以流水日志等形式輸出,檢出功能點(diǎn)觸發(fā)數(shù)據(jù)以行為日志actions.log的形式輸出。
在本發(fā)明的一個(gè)實(shí)施例中,除了檢測所述目標(biāo)樣本文件在虛擬機(jī)中運(yùn)行的過程中是否發(fā)生內(nèi)核漏洞利用之外,還有相關(guān)的輔助檢測流程,包括檢測進(jìn)程保護(hù)機(jī)制和檢測文件保護(hù)機(jī)制:
檢測進(jìn)程保護(hù)機(jī)制用于保護(hù)檢測模塊相關(guān)進(jìn)程地址空間,防止被虛擬機(jī)沙箱逃逸的惡意樣本進(jìn)程訪問、釋放或泄漏,導(dǎo)致檢測模塊機(jī)密信息失竊。初步的準(zhǔn)備工作包括:1.LoadHP.exe,在LoadHP進(jìn)程加載驅(qū)動(dòng)階段完成后,讀取Honeypot.ini配置文件中的“ourproc”等字段的值,并解析獲得1個(gè)或多個(gè)檢測模塊的進(jìn)程名,通過進(jìn)程名獲取檢測模塊各進(jìn)程的PID,依次通過IO控制碼方式發(fā)送給Honeypot驅(qū)動(dòng)程序。2.Honeypot.sys,Honeypot在接收到標(biāo)記為“進(jìn)程ID過濾”的IO控制碼時(shí),從輸入Buffer中獲取當(dāng)次傳遞的PID的值,并根據(jù)PID獲取對應(yīng)進(jìn)程EPROCESS地址,將該EPROCESS指針插入進(jìn)程過濾LIST。在此基礎(chǔ)上,輔助檢測過程包括:HOOK對進(jìn)程、線程、內(nèi)存地址空間操作的關(guān)鍵NTAPI,在Fake函數(shù)中針對上下背景文所在進(jìn)程的EPROCESS地址和操作目標(biāo)進(jìn)程的EPROCESS地址,在上述進(jìn)程過濾LIST中進(jìn)行匹配。如果上下背景文進(jìn)程EPROCESS地址不在進(jìn)程過濾LIST中,而操作目標(biāo)進(jìn)程EPROCESS地址在進(jìn)程過濾LIST中成功匹配,則可判定其他進(jìn)程試圖訪問檢測模塊各進(jìn)程集中的某個(gè)進(jìn)程。進(jìn)行阻止,返回拒絕訪問的狀態(tài)碼,不繼續(xù)向下調(diào)用,以終止當(dāng)前上下背景文進(jìn)程對該API的調(diào)用。如果未能成功匹配,則屬于對應(yīng)API正常調(diào)用的其他情況。不進(jìn)行阻止,繼續(xù)調(diào)用原API向下執(zhí)行,并向Caller返回其返回的值。
檢測文件保護(hù)機(jī)制用于保護(hù)檢測模塊和檢測結(jié)果日志相關(guān)各文件目錄,防止被某些樣本進(jìn)程訪問、篡改、加密、損毀,造成檢測失敗或結(jié)果異常,影響沙箱系統(tǒng)穩(wěn)定和性能。初步的準(zhǔn)備工作包括:1.LoadHP.exe,在LoadHP進(jìn)程加載驅(qū)動(dòng)階段完成后,讀取Honeypot.ini配置文件中的“ourpath”等字段的值,并解析獲得1個(gè)或多個(gè)檢測結(jié)果日志的目錄路徑名,將各路徑Buffer依次通過IO控制碼方式發(fā)送給Honeypot驅(qū)動(dòng)程序。2.Honeypot.sys,Honeypot在接收到標(biāo)記為“私有目錄”的IO控制碼時(shí),從輸入Buffer中獲取當(dāng)次傳遞的目錄路徑的Buffer,并根據(jù)Buffer構(gòu)造UNICODE_STRING字符串對象,將該字符串對象插入私有目錄LIST。在此基礎(chǔ)上,輔助檢測過程包括:注冊文件系統(tǒng)過濾,實(shí)現(xiàn)各主要IRP分發(fā)函數(shù)。在READ,WRITE,CREATE,SET_INFORMATION,DIRECTORY_CONTROL等分發(fā)函數(shù)的自實(shí)現(xiàn)函數(shù)體中,判斷當(dāng)前IRP中FILE_OBJECT的文件路徑UNICODE_STRING對象是否能夠在私有目錄LIST中成功匹配。如果未能成功匹配,則當(dāng)前操作不是對檢測日志目錄或檢測模塊目錄進(jìn)行的,跳過當(dāng)前棧單元,并將IRP繼續(xù)向下分發(fā)。如果成功匹配,意味著當(dāng)前文件操作確實(shí)是針對檢測日志目錄或檢測模塊目錄進(jìn)行的。這時(shí)獲取上下背景文進(jìn)程的EPROCESS地址,并判斷該EPROCESS地址是否能夠在“檢測進(jìn)程保護(hù)”機(jī)制中的進(jìn)程過濾LIST中成功匹配。如果成功匹配,則判定屬于檢測模塊進(jìn)程自身對檢測日志目錄和檢測模塊目錄的訪問,跳過當(dāng)前棧單元,并將IRP繼續(xù)向下分發(fā)。如果未能成功匹配,意味著屬于第三方的進(jìn)程訪問檢測日志目錄或檢測模塊目錄。賦值IRP的IO狀態(tài)域拒絕訪問等錯(cuò)誤碼,完成IRP的IO請求,返回當(dāng)前IRP分發(fā)函數(shù),使當(dāng)前的文件訪問操作失敗。
圖2示出了根據(jù)本發(fā)明一個(gè)實(shí)施例的一種目標(biāo)樣本文件的檢測裝置的示意圖。如圖2所示,目標(biāo)樣本文件的檢測裝置200包括:
樣本接收單元210,適于從數(shù)據(jù)源接收目標(biāo)樣本文件。
檢測處理單元220,適于將所述目標(biāo)樣本文件投放到沙箱中運(yùn)行;在所述目標(biāo)樣本文件在沙箱中運(yùn)行的過程中,監(jiān)聽沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制是否失效;是則,確定所述目標(biāo)樣本文件是威脅樣本文件;否則,確定所述目標(biāo)樣本文件不是威脅樣本文件。
可見,圖2所示的裝置將從數(shù)據(jù)源接收的目標(biāo)樣本文件投放到沙箱中進(jìn)行檢測,當(dāng)檢測出目標(biāo)樣本文件在沙箱中運(yùn)行的過程中發(fā)生沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制失效的事件時(shí),確定目標(biāo)樣本文件為威脅樣本文件。本方案以沙箱作為虛擬載體運(yùn)行目標(biāo)樣本文件,能夠清晰地檢測到目標(biāo)樣本文件的所有運(yùn)行軌跡,全面分析得到目標(biāo)樣本文件相關(guān)的特征信息,根據(jù)目標(biāo)樣本文件相關(guān)的特征信息可以更為準(zhǔn)確地判斷所述目標(biāo)樣本文件在虛擬機(jī)中運(yùn)行的過程中是否發(fā)生進(jìn)程屬性修改事件,進(jìn)而確定出威脅樣本文件,為后續(xù)信息安全防護(hù)提供參考和依據(jù)。
在本發(fā)明的一個(gè)實(shí)施例中,檢測處理單元220,適于監(jiān)聽對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件;當(dāng)監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件時(shí),確定沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制失效。
其中,檢測處理單元220,適于在對所述保護(hù)機(jī)制進(jìn)行操作的函數(shù)上掛載鉤子函數(shù);當(dāng)該函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截該函數(shù)的調(diào)用指令;判斷所述調(diào)用指令是否指示對所述保護(hù)機(jī)制進(jìn)行禁用操作,是則,確定監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所述調(diào)用指令;否則,利用所述鉤子函數(shù)放行所述調(diào)用指令。
在本發(fā)明的一個(gè)實(shí)施例中,沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制包括:SMEP機(jī)制;對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件包括:對SMEP機(jī)制進(jìn)行禁止操作的事件;檢測處理單元220,適于監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令;當(dāng)監(jiān)聽到所述指令時(shí),確定監(jiān)聽到對SMEP機(jī)制進(jìn)行禁止操作的事件。
在本發(fā)明的一個(gè)實(shí)施例中,檢測處理單元220,適于在對沙箱中的CR4寄存器進(jìn)行操作的函數(shù)上掛載鉤子函數(shù);當(dāng)所述函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截對所述函數(shù)進(jìn)行調(diào)用的指令;如果所攔截的指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的指令;否則利用鉤子函數(shù)放行所攔截的指令。
具體地,在本發(fā)明的一個(gè)實(shí)施例中,檢測處理單元220,適于在沙箱中的Ntoskrnl.exe進(jìn)程中查找對CR4寄存器進(jìn)行操作的參考點(diǎn),在所述參考點(diǎn)上掛載鉤子函數(shù);當(dāng)所述參考點(diǎn)被調(diào)起時(shí),利用所述鉤子函數(shù)攔截相應(yīng)的調(diào)起指令;如果所攔截的調(diào)起指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的調(diào)起指令;否則利用鉤子函數(shù)放行所攔截的調(diào)起指令。
在本發(fā)明的一個(gè)實(shí)施例中,檢測處理單元220,適于監(jiān)測沙箱中的調(diào)用棧是否為正常調(diào)用修改CR4寄存器的指令所在函數(shù)的調(diào)用棧;如果否,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令。
進(jìn)一步地,在本發(fā)明的一個(gè)實(shí)施例中,檢測處理單元220,進(jìn)一步適于記錄所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志;當(dāng)確定所述目標(biāo)樣本文件是威脅樣本文件時(shí),根據(jù)所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志獲得所述目標(biāo)樣本文件相關(guān)的特征信息;將所述目標(biāo)樣本相關(guān)的特征信息放入威脅數(shù)據(jù)庫中。其中,所述目標(biāo)樣本文件相關(guān)的特征信息包括:目標(biāo)樣本文件的靜態(tài)特征信息,和/或,目標(biāo)樣本文件的行為特征信息。
在本發(fā)明的一個(gè)實(shí)施例中,檢測處理單元220,進(jìn)一步適于將所述目標(biāo)樣本相關(guān)的特征信息反饋給數(shù)據(jù)源。
需要說明的是,圖2所示裝置的具體實(shí)施例與圖1所示方法的各實(shí)施例對應(yīng)相同,上文中已進(jìn)行了詳細(xì)說明,在此不再贅述。
綜上所述,本發(fā)明的技術(shù)方案將從數(shù)據(jù)源接收的目標(biāo)樣本文件投放到沙箱中進(jìn)行檢測,當(dāng)檢測出目標(biāo)樣本文件在沙箱中運(yùn)行的過程中發(fā)生沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制失效的事件時(shí),確定目標(biāo)樣本文件為威脅樣本文件。本方案以沙箱作為虛擬載體運(yùn)行目標(biāo)樣本文件,能夠清晰地檢測到目標(biāo)樣本文件的所有運(yùn)行軌跡,全面分析得到目標(biāo)樣本文件相關(guān)的特征信息,根據(jù)目標(biāo)樣本文件相關(guān)的特征信息可以更為準(zhǔn)確地判斷所述目標(biāo)樣本文件在虛擬機(jī)中運(yùn)行的過程中是否發(fā)生進(jìn)程屬性修改事件,進(jìn)而確定出威脅樣本文件,為后續(xù)信息安全防護(hù)提供參考和依據(jù)。
需要說明的是:
在此提供的算法和顯示不與任何特定計(jì)算機(jī)、虛擬裝置或者其它設(shè)備固有相關(guān)。各種通用裝置也可以與基于在此的示教一起使用。根據(jù)上面的描述,構(gòu)造這類裝置所要求的結(jié)構(gòu)是顯而易見的。此外,本發(fā)明也不針對任何特定編程語言。應(yīng)當(dāng)明白,可以利用各種編程語言實(shí)現(xiàn)在此描述的本發(fā)明的內(nèi)容,并且上面對特定語言所做的描述是為了披露本發(fā)明的最佳實(shí)施方式。
在此處所提供的說明書中,說明了大量具體細(xì)節(jié)。然而,能夠理解,本發(fā)明的實(shí)施例可以在沒有這些具體細(xì)節(jié)的情況下實(shí)踐。在一些實(shí)例中,并未詳細(xì)示出公知的方法、結(jié)構(gòu)和技術(shù),以便不模糊對本說明書的理解。
類似地,應(yīng)當(dāng)理解,為了精簡本公開并幫助理解各個(gè)發(fā)明方面中的一個(gè)或多個(gè),在上面對本發(fā)明的示例性實(shí)施例的描述中,本發(fā)明的各個(gè)特征有時(shí)被一起分組到單個(gè)實(shí)施例、圖、或者對其的描述中。然而,并不應(yīng)將該公開的方法解釋成反映如下意圖:即所要求保護(hù)的本發(fā)明要求比在每個(gè)權(quán)利要求中所明確記載的特征更多的特征。更確切地說,如下面的權(quán)利要求書所反映的那樣,發(fā)明方面在于少于前面公開的單個(gè)實(shí)施例的所有特征。因此,遵循具體實(shí)施方式的權(quán)利要求書由此明確地并入該具體實(shí)施方式,其中每個(gè)權(quán)利要求本身都作為本發(fā)明的單獨(dú)實(shí)施例。
本領(lǐng)域那些技術(shù)人員可以理解,可以對實(shí)施例中的設(shè)備中的模塊進(jìn)行自適應(yīng)性地改變并且把它們設(shè)置在與該實(shí)施例不同的一個(gè)或多個(gè)設(shè)備中。可以把實(shí)施例中的模塊或單元或組件組合成一個(gè)模塊或單元或組件,以及此外可以把它們分成多個(gè)子模塊或子單元或子組件。除了這樣的特征和/或過程或者單元中的至少一些是相互排斥之外,可以采用任何組合對本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的所有特征以及如此公開的任何方法或者設(shè)備的所有過程或單元進(jìn)行組合。除非另外明確陳述,本說明書(包括伴隨的權(quán)利要求、摘要和附圖)中公開的每個(gè)特征可以由提供相同、等同或相似目的的替代特征來代替。
此外,本領(lǐng)域的技術(shù)人員能夠理解,盡管在此所述的一些實(shí)施例包括其它實(shí)施例中所包括的某些特征而不是其它特征,但是不同實(shí)施例的特征的組合意味著處于本發(fā)明的范圍之內(nèi)并且形成不同的實(shí)施例。例如,在下面的權(quán)利要求書中,所要求保護(hù)的實(shí)施例的任意之一都可以以任意的組合方式來使用。
本發(fā)明的各個(gè)部件實(shí)施例可以以硬件實(shí)現(xiàn),或者以在一個(gè)或者多個(gè)處理器上運(yùn)行的軟件模塊實(shí)現(xiàn),或者以它們的組合實(shí)現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實(shí)踐中使用微處理器或者數(shù)字信號處理器(DSP)來實(shí)現(xiàn)根據(jù)本發(fā)明實(shí)施例的目標(biāo)樣本文件的檢測裝置中的一些或者全部部件的一些或者全部功能。本發(fā)明還可以實(shí)現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或者全部的設(shè)備或者裝置程序(例如,計(jì)算機(jī)程序和計(jì)算機(jī)程序產(chǎn)品)。這樣的實(shí)現(xiàn)本發(fā)明的程序可以存儲在計(jì)算機(jī)可讀介質(zhì)上,或者可以具有一個(gè)或者多個(gè)信號的形式。這樣的信號可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。
應(yīng)該注意的是上述實(shí)施例對本發(fā)明進(jìn)行說明而不是對本發(fā)明進(jìn)行限制,并且本領(lǐng)域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計(jì)出替換實(shí)施例。在權(quán)利要求中,不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個(gè)”不排除存在多個(gè)這樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計(jì)算機(jī)來實(shí)現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個(gè)可以是通過同一個(gè)硬件項(xiàng)來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為名稱。
本發(fā)明公開了A1、一種目標(biāo)樣本文件的檢測方法,其中,包括:
從數(shù)據(jù)源接收目標(biāo)樣本文件,將所述目標(biāo)樣本文件投放到沙箱中運(yùn)行;
在所述目標(biāo)樣本文件在沙箱中運(yùn)行的過程中,監(jiān)聽沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制是否失效;
是則,確定所述目標(biāo)樣本文件是威脅樣本文件;
否則,確定所述目標(biāo)樣本文件不是威脅樣本文件。
A2、如A1所述的方法,其中,所述監(jiān)聽沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制是否失效包括:
監(jiān)聽對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件;
當(dāng)監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件時(shí),確定沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制失效。
A3、如A2所述的方法,其中,所述監(jiān)聽對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件包括:
在對所述保護(hù)機(jī)制進(jìn)行操作的函數(shù)上掛載鉤子函數(shù);
當(dāng)該函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截該函數(shù)的調(diào)用指令;
判斷所述調(diào)用指令是否指示對所述保護(hù)機(jī)制進(jìn)行禁用操作,是則,確定監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所述調(diào)用指令;否則,利用所述鉤子函數(shù)放行所述調(diào)用指令。
A4、如A2所述的方法,其中,沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制包括:SMEP機(jī)制;對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件包括:對SMEP機(jī)制進(jìn)行禁止操作的事件;
所述監(jiān)聽對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件包括:
監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令;
當(dāng)監(jiān)聽到所述指令時(shí),確定監(jiān)聽到對SMEP機(jī)制進(jìn)行禁止操作的事件。
A5、如A4所述的方法,其中,所述監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令包括:
在對沙箱中的CR4寄存器進(jìn)行操作的函數(shù)上掛載鉤子函數(shù);
當(dāng)所述函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截對所述函數(shù)進(jìn)行調(diào)用的指令;
如果所攔截的指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的指令;否則利用鉤子函數(shù)放行所攔截的指令。
A6、如A4所述的方法,其中,所述監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令包括:
在沙箱中的Ntoskrnl.exe進(jìn)程中查找對CR4寄存器進(jìn)行操作的參考點(diǎn),在所述參考點(diǎn)上掛載鉤子函數(shù);
當(dāng)所述參考點(diǎn)被調(diào)起時(shí),利用所述鉤子函數(shù)攔截相應(yīng)的調(diào)起指令;
如果所攔截的調(diào)起指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的調(diào)起指令;否則利用鉤子函數(shù)放行所攔截的調(diào)起指令。
A7、如A5所述的方法,其中,所述監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令包括:
監(jiān)測沙箱中的調(diào)用棧是否為正常調(diào)用修改CR4寄存器的指令所在函數(shù)的調(diào)用棧;
如果否,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令。
A8、如A1所述的方法,其中,該方法進(jìn)一步包括:
記錄所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志;
當(dāng)確定所述目標(biāo)樣本文件是威脅樣本文件時(shí),根據(jù)所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志獲得所述目標(biāo)樣本文件相關(guān)的特征信息;
將所述目標(biāo)樣本相關(guān)的特征信息放入威脅數(shù)據(jù)庫中。
A9、如A8所述的方法,其中,所述目標(biāo)樣本文件相關(guān)的特征信息包括:
目標(biāo)樣本文件的靜態(tài)特征信息,
和/或,
目標(biāo)樣本文件的行為特征信息。
A10、如A8所述的方法,其中,該方法進(jìn)一步包括:
將所述目標(biāo)樣本相關(guān)的特征信息反饋給數(shù)據(jù)源。
本發(fā)明還公開了B11、一種目標(biāo)樣本文件的檢測裝置,其中,包括:
樣本接收單元,適于從數(shù)據(jù)源接收目標(biāo)樣本文件;
檢測處理單元,適于將所述目標(biāo)樣本文件投放到沙箱中運(yùn)行;在所述目標(biāo)樣本文件在沙箱中運(yùn)行的過程中,監(jiān)聽沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制是否失效;是則,確定所述目標(biāo)樣本文件是威脅樣本文件;否則,確定所述目標(biāo)樣本文件不是威脅樣本文件。
B12、如B11所述的裝置,其中,
所述檢測處理單元,適于監(jiān)聽對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件;當(dāng)監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件時(shí),確定沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制失效。
B13、如B12所述的裝置,其中,
所述檢測處理單元,適于在對所述保護(hù)機(jī)制進(jìn)行操作的函數(shù)上掛載鉤子函數(shù);當(dāng)該函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截該函數(shù)的調(diào)用指令;判斷所述調(diào)用指令是否指示對所述保護(hù)機(jī)制進(jìn)行禁用操作,是則,確定監(jiān)聽到對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所述調(diào)用指令;否則,利用所述鉤子函數(shù)放行所述調(diào)用指令。
B14、如B12所述的裝置,其中,沙箱中用于阻止內(nèi)核執(zhí)行用戶空間的代碼的保護(hù)機(jī)制包括:SMEP機(jī)制;對所述保護(hù)機(jī)制進(jìn)行禁止操作的事件包括:對SMEP機(jī)制進(jìn)行禁止操作的事件;
所述檢測處理單元,適于監(jiān)聽對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令;當(dāng)監(jiān)聽到所述指令時(shí),確定監(jiān)聽到對SMEP機(jī)制進(jìn)行禁止操作的事件。
B15、如B14所述的裝置,其中,
所述檢測處理單元,適于在對沙箱中的CR4寄存器進(jìn)行操作的函數(shù)上掛載鉤子函數(shù);當(dāng)所述函數(shù)被調(diào)用時(shí),利用所述鉤子函數(shù)攔截對所述函數(shù)進(jìn)行調(diào)用的指令;如果所攔截的指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的指令;否則利用鉤子函數(shù)放行所攔截的指令。
B16、如B14所述的裝置,其中,
所述檢測處理單元,適于在沙箱中的Ntoskrnl.exe進(jìn)程中查找對CR4寄存器進(jìn)行操作的參考點(diǎn),在所述參考點(diǎn)上掛載鉤子函數(shù);當(dāng)所述參考點(diǎn)被調(diào)起時(shí),利用所述鉤子函數(shù)攔截相應(yīng)的調(diào)起指令;如果所攔截的調(diào)起指令指示對CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令,利用所述鉤子函數(shù)強(qiáng)制結(jié)束所攔截的調(diào)起指令;否則利用鉤子函數(shù)放行所攔截的調(diào)起指令。
B17、如B15所述的裝置,其中,
所述檢測處理單元,適于監(jiān)測沙箱中的調(diào)用棧是否為正常調(diào)用修改CR4寄存器的指令所在函數(shù)的調(diào)用棧;如果否,確定監(jiān)聽到對沙箱中的CR4寄存器的SMEP位的數(shù)據(jù)進(jìn)行修改的指令。
B18、如B11所述的裝置,其中,
所述檢測處理單元,進(jìn)一步適于記錄所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志;當(dāng)確定所述目標(biāo)樣本文件是威脅樣本文件時(shí),根據(jù)所述目標(biāo)樣本文件在沙箱中運(yùn)行的運(yùn)行日志獲得所述目標(biāo)樣本文件相關(guān)的特征信息;將所述目標(biāo)樣本相關(guān)的特征信息放入威脅數(shù)據(jù)庫中。
B19、如B18所述的裝置,其中,所述目標(biāo)樣本文件相關(guān)的特征信息包括:
目標(biāo)樣本文件的靜態(tài)特征信息,
和/或,
目標(biāo)樣本文件的行為特征信息。
B20、如B18所述的裝置,其中,
所述檢測處理單元,進(jìn)一步適于將所述目標(biāo)樣本相關(guān)的特征信息反饋給數(shù)據(jù)源。