專利名稱:一種漏洞檢測設(shè)備和方法
技術(shù)領(lǐng)域:
本發(fā)明涉及計算機網(wǎng)絡(luò)安全領(lǐng)域,尤其涉及基于數(shù)據(jù)執(zhí)行保護(DEP)的漏洞檢測 設(shè)備和方法。
背景技術(shù):
隨著計算機網(wǎng)絡(luò)的發(fā)展,網(wǎng)絡(luò)應(yīng)用變得越來越普及。由于網(wǎng)絡(luò)應(yīng)用所在的網(wǎng)絡(luò)服 務(wù)器的操作系統(tǒng)和應(yīng)用層軟件不可避免地存在有漏洞,黑客們可以通過利用這些漏洞來非 法入侵這些網(wǎng)絡(luò)服務(wù)器,從而給網(wǎng)絡(luò)應(yīng)用,尤其是給使用這些網(wǎng)絡(luò)應(yīng)用的用戶的財產(chǎn)帶來 了極大的威脅。利用漏洞的過程一般包括兩個部分觸發(fā)漏洞和執(zhí)行shellcode。首先,黑客會去 觸發(fā)目標(biāo)機器上的漏洞,隨后通過在觸發(fā)漏洞之后執(zhí)行shellcode來成功入侵目標(biāo)機器。 shellcode是在利用漏洞的過程中所使用的一小段代碼,由于通常該代碼會啟動一個命令 行控制臺,以便黑客可以利用該控制臺來控制被入侵的機器,因此,該段代碼在網(wǎng)絡(luò)安全領(lǐng) 域被稱為shellcode。而一個典型的利用漏洞的過程如下首先,利用目標(biāo)機器上某個進程 中的漏洞獲得對指令寄存器的控制,并同時或者之前就將shellcode插入到該進程中,隨 后將指令寄存器調(diào)整為指向shellcode,從而執(zhí)行該shellcode以便成功入侵目標(biāo)機器。由于觸發(fā)漏洞的方式會隨具體漏洞而不同,所以對觸發(fā)漏洞的行為進行檢測也需 要針對不同漏洞來進行不同的處理。由此導(dǎo)致,在目前為止,還沒有一種統(tǒng)一的方式來對目 標(biāo)機器上利用漏洞的非法操作進行監(jiān)測。由于采用微軟視窗操作系統(tǒng)的設(shè)備(例如網(wǎng)絡(luò)服務(wù)器和客戶機等)日益增多,如 何對這些設(shè)備上利用漏洞的非法操作進行監(jiān)測成為了日益重要的問題?,F(xiàn)在的微軟視窗操作系統(tǒng)中采用了一種稱為數(shù)據(jù)執(zhí)行保護(DEP)的軟硬件結(jié)合的 安全技術(shù)來防止駐留在操作系統(tǒng)上的應(yīng)用或者服務(wù)從不可執(zhí)行的內(nèi)存區(qū)域執(zhí)行代碼。在多 數(shù)采用微軟視窗操作系統(tǒng)的網(wǎng)絡(luò)設(shè)備中,已經(jīng)啟用了數(shù)據(jù)執(zhí)行保護(DEP)來加強系統(tǒng)安全。然而,在現(xiàn)有采用微軟視窗操作系統(tǒng)的設(shè)備中,還沒有一種可以全面而高效地對 這些設(shè)備中利用漏洞的非法操作進行監(jiān)測的方法和設(shè)備。為此,需要一種新的漏洞監(jiān)測設(shè)備和方法,其可以以一種統(tǒng)一、全面且高效的方式 來對這些利用漏洞的非法操作進行監(jiān)測。
發(fā)明內(nèi)容
鑒于上述問題,提出了本發(fā)明以便提供一種克服上述問題或者至少部分地解決或 者減緩上述問題的漏洞檢測設(shè)備和方法。申請人:注意到,在采用微軟視窗操作系統(tǒng)并且啟用了數(shù)據(jù)執(zhí)行保護(DEP)的設(shè) 備中,在利用漏洞的過程中shellcode通常都位于被標(biāo)記為不可執(zhí)行的數(shù)據(jù)區(qū)中,直接執(zhí) 行shellcode的行為將觸發(fā)異常,最終導(dǎo)致shellcode執(zhí)行失敗。這使得如果要正常執(zhí)行 shellcode就必須對DEP進行關(guān)閉或者繞過操作。如果可以對關(guān)閉DEP的操作進行監(jiān)測,就可以檢測到在這些設(shè)備中利用漏洞的異常行為,本發(fā)明基于此而做出。根據(jù)本發(fā)明的一個方面,提供了一種漏洞監(jiān)測方法,用于對啟用了數(shù)據(jù)執(zhí)行保護 (DEP)的系統(tǒng)進行漏洞監(jiān)測,該方法包括步驟監(jiān)測針對數(shù)據(jù)執(zhí)行保護(DEP)的操作;以及 當(dāng)檢測到關(guān)閉數(shù)據(jù)執(zhí)行保護(DEP)的操作時,則認(rèn)為該系統(tǒng)中發(fā)生利用漏洞的行為??蛇x地,監(jiān)測針對所述數(shù)據(jù)執(zhí)行保護(DEP)的操作包括對系統(tǒng)中關(guān)閉數(shù)據(jù) 執(zhí)行保護所必需的一個或者多個函數(shù)中的任一個進行監(jiān)測。另外,這些函數(shù)可以是 NtSetlnformationProcess ()禾口NtSetSystemInformation ()中的任 可一個或者二者。由于 關(guān)閉 DEP 的操作一般需要調(diào)用 NtSeWnformationProcess ()和 NtktSystemInformation () 等函數(shù)的某個功能號來實現(xiàn),因此通過對這些函數(shù)調(diào)用進行監(jiān)測,就可以達到監(jiān)測企圖執(zhí) 行shelIcode行為的目的。另外,對系統(tǒng)中關(guān)閉所述數(shù)據(jù)執(zhí)行保護所必需的一個或者多個函數(shù)中的任一個進 行監(jiān)測可以利用鉤子(hook)技術(shù)來處理。Hook是在視窗操作系統(tǒng)的消息處理機制中的一 個點,在該點處,可以插入一些子例程來監(jiān)控消息或者在消息到達目的應(yīng)用之前對其進行 修改。利用hook的技術(shù)一般稱為hook技術(shù),其是安全軟件中普遍使用的技術(shù),hook技術(shù) 通過修改軟件代碼的執(zhí)行流程可以實現(xiàn)對代碼的審計和訪問控制等功能。在視窗操作系統(tǒng) 中,利用hook技術(shù)可以實現(xiàn)對特定函數(shù)的監(jiān)控。根據(jù)本發(fā)明的另一個方面,提供了一種漏洞監(jiān)測設(shè)備,用于對啟用了數(shù)據(jù)執(zhí)行保 護(DEP)的系統(tǒng)進行漏洞監(jiān)測,該設(shè)備包括監(jiān)測單元,適于監(jiān)測針對數(shù)據(jù)執(zhí)行保護(DEP) 的操作;以及判斷單元,適于在所述監(jiān)測單元檢測到關(guān)閉所述數(shù)據(jù)執(zhí)行保護(DEP)的操作 時,斷定所述系統(tǒng)中發(fā)生利用漏洞的行為。根據(jù)本發(fā)明的漏洞監(jiān)測方法和設(shè)備考慮到在啟用了 DEP的系統(tǒng)中,利用系統(tǒng)存在 的漏洞的非法操作通常需要在執(zhí)行shellcode之前關(guān)閉DEP,因此通過對針對DEP的操作進 行監(jiān)測,可以高效地監(jiān)測這些非法操作,并且提供了一種監(jiān)測這些非法操作的統(tǒng)一方式。
通過閱讀下文優(yōu)選實施方式的詳細描述,各種其他的優(yōu)點和益處對于本領(lǐng)域普通 技術(shù)人員將變得清楚明了。附圖僅用于示出優(yōu)選實施方式的目的,而并不認(rèn)為是對本發(fā)明 的限制。而且在整個附圖中,用相同的參考符號表示相同的部件。在附圖中
圖1示意性地示出了根據(jù)本發(fā)明一個實施例的漏洞監(jiān)測方法的流程圖;以及 圖2示意性地示出了根據(jù)本發(fā)明一個實施例的漏洞檢測設(shè)備的框圖。
具體實施例方式下面結(jié)合附圖和具體的實施方式對本發(fā)明作進一步的描述。圖1示出了根據(jù)本發(fā)明一個實施例的漏洞監(jiān)測方法100的流程圖。該漏洞監(jiān)測方 法100適于對采用了啟用數(shù)據(jù)執(zhí)行保護(DEP)的系統(tǒng)的設(shè)備進行漏洞監(jiān)測。而啟用了 DEP 的系統(tǒng)通常為微軟視窗操作系統(tǒng)。如圖1所示,該方法始于步驟S110,其中對該系統(tǒng)中所有 針對DEP的操作進行監(jiān)控。如上所述,在啟用了 DEP的系統(tǒng)中,利用漏洞的惡意行為為了能 夠執(zhí)行shellcode,必須關(guān)閉DEP,因此通過監(jiān)測針對DEP的操作,可以及時發(fā)現(xiàn)這些惡意行 為。
可選地,在微軟視窗操作系統(tǒng)中,針對DEP的操作,尤其是關(guān)閉DEP的操作,必然 涉及到一個或者多個系統(tǒng)函數(shù)。為此,監(jiān)測操作可以包括對關(guān)閉DEP所必需的一個或者 多個函數(shù)的至少一個進行監(jiān)測。例如,這些函數(shù)可以是NtktlnformationProcessO和 NUetSystemlnformationO。當(dāng)然,隨著視窗操作系統(tǒng)的發(fā)展,這些函數(shù)可能不局限于上述 具體函數(shù)。所以在關(guān)閉DEP中涉及的函數(shù)都在本發(fā)明的保護范圍之內(nèi)??蛇x地,在視窗操作系統(tǒng)中,為了對函數(shù)進行監(jiān)控,可以采用鉤子(hook)技術(shù),即 在操作系統(tǒng)的消息處理機制中的某個點進行監(jiān)控,以監(jiān)控針對這些函數(shù)的調(diào)用以及調(diào)用所 涉及的消息內(nèi)容。具體而言,根據(jù)本發(fā)明的一個實施例,可以在操作系統(tǒng)的內(nèi)核中加載一個 模塊,該模塊對SSDT (系統(tǒng)服務(wù)描述表)中的函數(shù)NtSetlnformationProcess ()和/或 NtSetSystemInformation (),尤其是這些函數(shù)中的相關(guān)功能號進行了 hook,如果有調(diào)用這 些函數(shù)的行為,就對調(diào)用這些函數(shù)的參數(shù)進行分析以確定是否是關(guān)閉DEP的行為。隨后,在步驟S120中,當(dāng)在步驟SllO中檢測到關(guān)閉DEP的操作時,則認(rèn)為目標(biāo)系 統(tǒng)中發(fā)生利用漏洞的行為。可選地,在步驟S130中,以各種方式將所檢測到的利用漏洞的 行為告知系統(tǒng)管理員,這例如包括以日志方式記錄該行為、發(fā)警告通知系統(tǒng)管理員等。應(yīng)當(dāng) 注意的是,其他任何可以在目標(biāo)系統(tǒng)中采用來記錄和/或通知系統(tǒng)管理員有關(guān)利用漏洞行 為的方式都在本發(fā)明的保護范圍之內(nèi)。根據(jù)本發(fā)明的漏洞監(jiān)測方法通過對關(guān)閉DEP的操作進行監(jiān)控,從而可以有效地檢 測到目標(biāo)系統(tǒng)中利用系統(tǒng)漏洞進行操作的行為。圖2示意性地示出了根據(jù)本發(fā)明一個實施例的漏洞檢測設(shè)備200的框圖。該漏洞 監(jiān)測設(shè)備200適于對采用了啟用數(shù)據(jù)執(zhí)行保護(DEP)的系統(tǒng)的設(shè)備進行漏洞監(jiān)測。如圖2 所示,該漏洞檢測設(shè)備200包括監(jiān)測單元210和判斷單元220。監(jiān)測單元210適于監(jiān)測針對DEP的操作。如上所述,在啟用了 DEP的系統(tǒng)中,利用 漏洞的惡意行為為了能夠執(zhí)行shellcode,必須關(guān)閉DEP,因此監(jiān)測單元210通過監(jiān)測針對 DEP的操作,可以及時發(fā)現(xiàn)這些惡意行為??蛇x地,在微軟視窗操作系統(tǒng)中,針對DEP的操作,尤其是關(guān)閉DEP的操作,必然 涉及到一個或者多個系統(tǒng)函數(shù)。為此,監(jiān)測單元210可以對關(guān)閉DEP所必需的一個或者 多個函數(shù)的至少一個進行監(jiān)測。例如,這些函數(shù)可以是NtktlnformationProcessO和 NtSetSystemInformation ()。當(dāng)然,隨著視窗操作系統(tǒng)的發(fā)展,這些函數(shù)可能不局限于上述 具體函數(shù)。所有在關(guān)閉DEP中涉及的函數(shù)都在本發(fā)明的保護范圍之內(nèi)。可選地,在視窗操作系統(tǒng)中,為了對函數(shù)進行監(jiān)控,可以采用鉤子(hook)技 術(shù),即在操作系統(tǒng)的消息處理機制中的某個點進行監(jiān)控,以監(jiān)控針對這些函數(shù)的調(diào)用 以及調(diào)用所涉及的消息內(nèi)容。具體而言,根據(jù)本發(fā)明的一個實施例,監(jiān)測單元210可 以包括在操作系統(tǒng)的內(nèi)核中加載的模塊,該模塊對SSDT(系統(tǒng)服務(wù)描述表)中的函數(shù) NtSetlnformationProcess ()禾口 / 或 NtSetSystemInformation (),尤其是這些函數(shù)中的相 關(guān)功能號進行hook,如果有調(diào)用這些函數(shù)的行為,就對調(diào)用這些函數(shù)的參數(shù)進行分析以確 定是否是關(guān)閉DEP的行為。一般而言,監(jiān)測單元210可以執(zhí)行上述監(jiān)測方法中的步驟S110。判斷單元220對監(jiān)測單元210所監(jiān)測到的操作進行分析,在監(jiān)測單元210檢測到 關(guān)閉DEP的操作時,判斷單元220就斷定目標(biāo)系統(tǒng)中發(fā)生利用漏洞的行為,可選地,判斷單 元220將該判斷結(jié)果發(fā)送給告警單元230,以便由告警單元230以各種方式將所檢測到的利用漏洞的行為告知系統(tǒng)管理員,這例如包括以日志方式記錄該行為、發(fā)警告通知系統(tǒng)管理 員等。應(yīng)當(dāng)注意的是,其他任何可以在目標(biāo)系統(tǒng)中采用來記錄和/或通知系統(tǒng)管理員有關(guān) 利用漏洞行為的方式都在本發(fā)明的保護范圍之內(nèi)。一般而言,判斷單元220可以執(zhí)行上述 監(jiān)測方法中的步驟S120,以及告警單元230可以執(zhí)行上述監(jiān)測方法中的步驟S130。根據(jù)本發(fā)明的漏洞監(jiān)測設(shè)備200通過對關(guān)閉DEP的操作進行監(jiān)控,從而可以有效 地檢測到目標(biāo)系統(tǒng)中利用系統(tǒng)漏洞進行操作的行為。應(yīng)當(dāng)注意的是,在本發(fā)明的漏洞監(jiān)測設(shè)備200的各個部件中,根據(jù)其要實現(xiàn)的功 能而對其中的部件進行了邏輯劃分,但是,本發(fā)明不受限于此,可以根據(jù)需要對各個部件進 行重新劃分或者組合,例如,可以將一些部件組合為單個部件,或者可以將一些部件進一步 分解為更多的子部件。本發(fā)明的各個部件實施例可以以硬件實現(xiàn),或者以在一個或者多個處理器上運行 的軟件模塊實現(xiàn),或者以它們的組合實現(xiàn)。本領(lǐng)域的技術(shù)人員應(yīng)當(dāng)理解,可以在實踐中使用 微處理器或者數(shù)字信號處理器(DSP )來實現(xiàn)根據(jù)本發(fā)明實施例的解碼設(shè)備中的一些或者全 部部件的一些或者全部功能。本發(fā)明還可以實現(xiàn)為用于執(zhí)行這里所描述的方法的一部分或 者全部的設(shè)備或者裝置程序(例如,計算機程序和計算機程序產(chǎn)品)。這樣的實現(xiàn)本發(fā)明的 程序可以存儲在計算機可讀介質(zhì)上,或者可以具有一個或者多個信號的形式。這樣的信號 可以從因特網(wǎng)網(wǎng)站上下載得到,或者在載體信號上提供,或者以任何其他形式提供。應(yīng)該注意的是上述實施例對本發(fā)明進行說明而不是對本發(fā)明進行限制,并且本領(lǐng) 域技術(shù)人員在不脫離所附權(quán)利要求的范圍的情況下可設(shè)計出替換實施例。在權(quán)利要求中, 不應(yīng)將位于括號之間的任何參考符號構(gòu)造成對權(quán)利要求的限制。單詞“包含”不排除存在 未列在權(quán)利要求中的元件或步驟。位于元件之前的單詞“一”或“一個”不排除存在多個這 樣的元件。本發(fā)明可以借助于包括有若干不同元件的硬件以及借助于適當(dāng)編程的計算機來 實現(xiàn)。在列舉了若干裝置的單元權(quán)利要求中,這些裝置中的若干個可以是通過同一個硬件 項來具體體現(xiàn)。單詞第一、第二、以及第三等的使用不表示任何順序??蓪⑦@些單詞解釋為 名稱。
權(quán)利要求
1.一種漏洞監(jiān)測方法,用于對啟用了數(shù)據(jù)執(zhí)行保護(DEP)的系統(tǒng)進行漏洞監(jiān)測,該方 法包括步驟監(jiān)測針對所述數(shù)據(jù)執(zhí)行保護(DEP)的操作;以及當(dāng)檢測到關(guān)閉所述數(shù)據(jù)執(zhí)行保護(DEP)的操作時,則認(rèn)為所述系統(tǒng)中發(fā)生利用漏洞的 行為。
2.如權(quán)利要求1所述的漏洞監(jiān)測方法,其中所述監(jiān)測針對所述數(shù)據(jù)執(zhí)行保護(DEP)的 操作包括對所述系統(tǒng)中關(guān)閉所述數(shù)據(jù)執(zhí)行保護所必需的一個或者多個函數(shù)中的至少一個進行 監(jiān)測。
3.如權(quán)利要求2所述的漏洞監(jiān)測方法,其中所述關(guān)閉所述數(shù)據(jù)執(zhí)行保護所必需的一個 或者多個函數(shù)包括 NtSetlnformationProcess ()禾口 NtSetSystemInformation ()。
4.如權(quán)利要求2或者3所述的漏洞監(jiān)測方法,其中所述監(jiān)測針對所述數(shù)據(jù)執(zhí)行保護 (DEP)的操作包括對所述系統(tǒng)中關(guān)閉所述數(shù)據(jù)執(zhí)行保護所必需的一個或者多個函數(shù)中的任一個進行鉤 子(hook)處理。
5.如權(quán)利要求1-4中任一個所述的漏洞監(jiān)測方法,還包括步驟在認(rèn)為所述系統(tǒng)發(fā)生利用漏洞的行為時,記錄有關(guān)該行為的日志或者發(fā)警告通知系統(tǒng) 管理員有關(guān)該行為的消息。
6.一種漏洞監(jiān)測設(shè)備,用于對啟用了數(shù)據(jù)執(zhí)行保護(DEP)的系統(tǒng)進行漏洞監(jiān)測,該設(shè) 備包括監(jiān)測單元,適于監(jiān)測針對所述數(shù)據(jù)執(zhí)行保護(DEP)的操作;以及判斷單元,適于在所述監(jiān)測單元檢測到關(guān)閉所述數(shù)據(jù)執(zhí)行保護(DEP)的操作時,斷定所 述系統(tǒng)中發(fā)生利用漏洞的行為。
7.如權(quán)利要求6所述的漏洞監(jiān)測設(shè)備,其中所述監(jiān)測單元適于對所述系統(tǒng)中關(guān)閉所述 數(shù)據(jù)執(zhí)行保護所必需的一個或者多個函數(shù)中的任一個進行監(jiān)測。
8.如權(quán)利要求7所述的漏洞監(jiān)測設(shè)備,其中所述關(guān)閉所述數(shù)據(jù)執(zhí)行保護所必需的一個 或者多個函數(shù)包括 NtSetlnformationProcess ()禾口 NtSetSystemInformation ()中的任{可 一個或者二者。
9.如權(quán)利要求7或者8所述的漏洞監(jiān)測設(shè)備,其中所述監(jiān)測單元適于對所述系統(tǒng)中關(guān) 閉所述數(shù)據(jù)執(zhí)行保護所必需的一個或者多個函數(shù)中的任一個進行鉤子(hook)處理。
10.如權(quán)利要求6-9中任一個所述的漏洞監(jiān)測設(shè)備,還包括告警單元,適于在所述判斷單元認(rèn)為所述系統(tǒng)發(fā)生利用漏洞的行為時,記錄有關(guān)該行 為的日志或者發(fā)警告通知系統(tǒng)管理員有關(guān)該行為的消息。
全文摘要
本發(fā)明公開了一種漏洞檢測方法,用于對啟用了數(shù)據(jù)執(zhí)行保護(DEP)的系統(tǒng)進行漏洞檢測,該方法包括步驟檢測針對DEP的操作;以及當(dāng)檢測到關(guān)閉DEP的操作時,則認(rèn)為系統(tǒng)中發(fā)生利用漏洞的行為。本發(fā)明還公開了相應(yīng)的漏洞檢測設(shè)備。
文檔編號G06F21/00GK102073818SQ20111000898
公開日2011年5月25日 申請日期2011年1月17日 優(yōu)先權(quán)日2011年1月17日
發(fā)明者趙亮 申請人:北京神州綠盟信息安全科技股份有限公司