1.一種基于虛擬機(jī)的內(nèi)核漏洞檢測方法,所述方法在虛擬機(jī)沙箱隔離環(huán)境下運(yùn)行,方法包括:
加載驅(qū)動程序;
接收用戶層進(jìn)程發(fā)送的樣本文件的相關(guān)信息以及各檢測功能點(diǎn)的開關(guān)信息;
根據(jù)各檢測功能點(diǎn)的開關(guān)信息開啟內(nèi)核層行為監(jiān)控總控開關(guān);
當(dāng)系統(tǒng)創(chuàng)建新進(jìn)程時,將新進(jìn)程添加到進(jìn)程創(chuàng)建記錄名單中;
對所述新進(jìn)程的內(nèi)核層各操作行為進(jìn)行檢測;
根據(jù)檢測結(jié)果生成日志文件,將日志文件存儲到日志目錄下。
2.根據(jù)權(quán)利要求1所述的方法,在加載驅(qū)動程序過程中,所述方法還包括:記錄至少一個系統(tǒng)進(jìn)程的進(jìn)程ID,記錄HAL例程地址表中存儲的至少一項(xiàng)關(guān)鍵函數(shù)指針值。
3.根據(jù)權(quán)利要求1或2所述的方法,所述接收用戶層進(jìn)程發(fā)送的樣本文件的相關(guān)信息以及各檢測功能點(diǎn)的開關(guān)信息具體為:接收用戶層進(jìn)程通過IO控制碼發(fā)送的樣本文件的相關(guān)信息以及各檢測功能點(diǎn)的開關(guān)信息。
4.根據(jù)權(quán)利要求1-3中任一項(xiàng)所述的方法,在所述接收用戶層進(jìn)程發(fā)送的樣本文件的相關(guān)信息以及各檢測功能點(diǎn)的開關(guān)信息之后,所述方法還包括:
根據(jù)樣本文件的相關(guān)信息以及各檢測功能點(diǎn)的開關(guān)信息,掛鉤SSDT中針對各功能檢測點(diǎn)的指定API和NtQueryIntervalProfile。
5.根據(jù)權(quán)利要求4所述的方法,在所述接收用戶層進(jìn)程發(fā)送的樣本文件的相關(guān)信息以及各檢測功能點(diǎn)的開關(guān)信息之后,所述方法還包括:
設(shè)置進(jìn)程創(chuàng)建通知例程;
在所述進(jìn)程創(chuàng)建通知例程中記錄所創(chuàng)建的新進(jìn)程的屬性值。
6.根據(jù)權(quán)利要求4所述的方法,所述對所述新進(jìn)程的內(nèi)核層各操作行為進(jìn)行檢測進(jìn)一步包括:
利用掛鉤技術(shù),在調(diào)用NtQueryIntervalProfile之前,獲取HAL例程地址表中存儲的至少一項(xiàng)關(guān)鍵函數(shù)指針值;
將所獲取的HAL例程地址表中存儲的至少一項(xiàng)關(guān)鍵函數(shù)指針值與加載驅(qū)動程序過程中所記錄的HAL例程地址表中存儲的至少一項(xiàng)關(guān)鍵函數(shù)指針值進(jìn)行比對;
若所述至少一項(xiàng)關(guān)鍵函數(shù)指針值比對不一致,則檢測出所述新進(jìn)程存在提權(quán)行為。
7.根據(jù)權(quán)利要求4所述的方法,所述對所述新進(jìn)程的內(nèi)核層各操作行為進(jìn)行檢測進(jìn)一步包括:
利用掛鉤技術(shù),在調(diào)用相應(yīng)的指定API之前,根據(jù)加載驅(qū)動程序過程中所記錄的至少一個系統(tǒng)進(jìn)程的進(jìn)程ID獲取至少一個系統(tǒng)進(jìn)程的EPROCESS結(jié)構(gòu)地址,同時獲取所述新進(jìn)程的EPROCESS結(jié)構(gòu)地址;
將所述新進(jìn)程的EPROCESS結(jié)構(gòu)地址中的Token域的指針值與至少一個系統(tǒng)進(jìn)程的EPROCESS結(jié)構(gòu)地址中的Token域的指針值進(jìn)行比對;
若所述新進(jìn)程的EPROCESS結(jié)構(gòu)地址中的Token域的指針值與其中一個系統(tǒng)進(jìn)程的EPROCESS結(jié)構(gòu)地址中的Token域的指針值比對一致,則檢測出所述新進(jìn)程存在提權(quán)行為。
8.根據(jù)權(quán)利要求5所述的方法,所述對所述新進(jìn)程的內(nèi)核層各操作行為進(jìn)行檢測進(jìn)一步包括:
利用掛鉤技術(shù),在調(diào)用相應(yīng)的指定API之前,獲取所述新進(jìn)程的屬性值;
將所獲取的所述新進(jìn)程的屬性值與在所述進(jìn)程創(chuàng)建通知例程中所記錄的新進(jìn)程的屬性值進(jìn)行比對;
若比對不一致,則檢測出所述新進(jìn)程存在提權(quán)行為。
9.根據(jù)權(quán)利要求8所述的方法,所述將所獲取的所述新進(jìn)程的屬性值與在所述進(jìn)程創(chuàng)建通知例程中所記錄的新進(jìn)程的屬性值進(jìn)行比對進(jìn)一步包括:
將所述獲取的新進(jìn)程的Privileges、TokenUser、和/或TokenOwner與在所述進(jìn)程創(chuàng)建通知例程中所記錄的新進(jìn)程的Privileges、UserSID、和/或OwnerSID進(jìn)行比對。
10.一種基于虛擬機(jī)的內(nèi)核漏洞檢測裝置,所述裝置在虛擬機(jī)沙箱隔離環(huán)境下運(yùn)行,裝置包括:
加載模塊,適于加載驅(qū)動程序;
接收模塊,適于接收用戶層進(jìn)程發(fā)送的樣本文件的相關(guān)信息以及各檢測功能點(diǎn)的開關(guān)信息;
啟動模塊,適于根據(jù)各檢測功能點(diǎn)的開關(guān)信息開啟內(nèi)核層行為監(jiān)控總控開關(guān);
添加模塊,適于當(dāng)系統(tǒng)創(chuàng)建新進(jìn)程時,將新進(jìn)程添加到進(jìn)程創(chuàng)建記錄名單中;
檢測模塊,適于對所述新進(jìn)程的內(nèi)核層各操作行為進(jìn)行檢測;
日志存儲模塊,適于根據(jù)檢測結(jié)果生成日志文件,將日志文件存儲到日志目錄下。