一種漏洞防利用方法及系統(tǒng)的制作方法
【專利摘要】本發(fā)明涉及一種漏洞防利用方法及系統(tǒng),屬于網絡安全【技術領域】?,F有的漏洞掃描方案維護成本較高,也不能及時檢測新出的溢出漏洞。本發(fā)明所述的方法將漏洞防護模塊注入到要保護的進程中;利用漏洞防護模塊對漏洞進行檢測;當檢測到有漏洞運行時,對漏洞進行攔截。采用本發(fā)明所述的方法及系統(tǒng)可以在漏洞利用過程中及時檢測出來,并阻止漏洞的繼續(xù)運行。
【專利說明】一種漏洞防利用方法及系統(tǒng)
【技術領域】
[0001] 本發(fā)明屬于網絡安全【技術領域】,具體涉及一種漏洞防利用方法及系統(tǒng)。
【背景技術】
[0002] 隨著微軟停止對XP系統(tǒng)的技術支持,XP系統(tǒng)用戶也將面臨各種漏洞的襲擊,其中 office軟件漏洞尤為多,并且危害性極強。溢出漏洞是一種計算機程序的可更正性缺陷,溢 出漏洞的全名為緩沖區(qū)溢出漏洞,因為它是在程序執(zhí)行的時候在緩沖區(qū)執(zhí)行的錯誤代碼, 所以叫緩沖區(qū)溢出漏洞。黑客主要利用office word的一些溢出漏洞對用戶發(fā)起攻擊,由于 這種攻擊發(fā)起是通過word文檔構造巧妙的溢出漏洞,傳送word文件實現點對點的攻擊,對 于這種漏洞本身殺軟很難通過掃描等手段檢測出來,而漏洞一旦執(zhí)行成功將會對用戶的財 產安全造成極大的威脅。
[0003] 現有的一些殺軟諸如卡巴斯基等,存在一些關于漏洞的靜態(tài)掃描方案,是針對特 定漏洞做的特征,可以檢測到word文檔中的特征,來判定是否在利用漏洞,這種方法雖然 針對性強,但是由于漏洞的多變性,導致維護成本較高,也不能及時檢測新出的溢出漏洞。
[0004] DEP (Data Execution Prevention) S卩"數據執(zhí)行保護",是 Windows 的一項安全機 制,主要用來防止病毒和其他安全威脅對系統(tǒng)造成破壞。微軟從Windows XP SP2引入了該 技術,并一直延續(xù)到此后的Windows Server2003、Windows Server 2008中。DEP是一套軟 硬件技術,能夠在內存上執(zhí)行額外檢查以幫助防止在系統(tǒng)上運行惡意代碼。在Microsoft Windows XP Service Pack 2> Microsoft Windows Server 2003 Service Pack 1> Microsoft Windows XP Tablet PC Edition 2005、Microsoft Windows Vista和Microsoft windows7中,由硬件和軟件一起強制實施DEP。
[0005] DEP的優(yōu)點是可以幫助防止數據頁執(zhí)行代碼。通常情況下,不從默認堆和堆棧執(zhí)行 代碼。硬件實施DEP檢測從這些位置運行的代碼,并在發(fā)現執(zhí)行情況時引發(fā)異常。軟件實 施DEP可幫助阻止惡意代碼利用Windows中的異常處理機制進行破壞。
[0006] 硬件實施DEP是某些DEP兼容處理器的功能,可以防止在已標記為數據存儲區(qū)的 內存區(qū)域中執(zhí)行代碼。此功能也稱為非執(zhí)行和執(zhí)行保護。Windows XP SP2還包括軟件實施 DEP,其目的在于減少利用Windows中的例外處理機制的情況。
[0007] 與防病毒程序不同,硬件和軟件實施DEP技術的目的并不是防止在計算機上安裝 有害程序。而是監(jiān)視您的已安裝程序,幫助確定它們是否正在安全地使用系統(tǒng)內存。為監(jiān) 視您的程序,硬件實施DEP將跟蹤已指定為"不可執(zhí)行"的內存區(qū)域。如果已將內存指定 為"不可執(zhí)行",但是某個程序試圖通過內存執(zhí)行代碼,Windows將關閉該程序以防止惡意代 碼。無論代碼是不是惡意,都會執(zhí)行此操作。
【發(fā)明內容】
[0008] 針對現有技術中存在的缺陷,本發(fā)明的目的是提供一種漏洞防利用方法及系統(tǒng), 該方法及系統(tǒng)能夠在漏洞利用過程中及時檢測出來,并阻止漏洞的繼續(xù)運行。
[0009] 為達到以上目的,本發(fā)明采用的技術方案是,一種漏洞防利用方法,包括以下步 驟:
[0010] 將漏洞防護模塊注入到要保護的進程中;
[0011] 利用漏洞防護模塊對漏洞進行檢測;
[0012] 當檢測到有漏洞運行時,對漏洞進行攔截。
[0013] 進一步,通過本地配置文件和/或云端數據庫來判斷是否需要將漏洞防護模塊注 入到要保護的進程中。
[0014] 進一步,所述的漏洞防護模塊是通過DEP數據執(zhí)行保護、ALSR地址隨機化機制、 R0P面向返回的編程攻擊三種防護手段實現對未知的漏洞進行檢測。
[0015] 進一步,所述的漏洞防護模塊中內置開關,通過開關操作對DEP數據執(zhí)行保護、 ALSR地址隨機化機制、R0P面向返回的編程攻擊三種防護手段實現開啟或關閉。
[0016] 進一步,若開啟的DEP數據執(zhí)行保護、ALSR地址隨機化機制、R0P面向返回的編程 攻擊三種防護手段與其他軟件發(fā)生沖突,則關閉存在沖突的防護手段。
[0017] 進一步,所述的DEP數據執(zhí)行保護是將DEP注入進程后打開DEP,接受處理觸發(fā)的 DEP異常,并且還會針對一些漏洞繞過DEP的方法進行防護。
[0018] 更進一步,在NtVirtualProtectMemory設置了一個檢測點,檢測棧指針異常、堆 棧執(zhí)行屬性修改,阻止漏洞繞過DEP防護。
[0019] 進一步,所述的ALSR地址隨機化機制是在NtVirtualProtectMemory函數中設置 有hook點,當dll加載時調用該函數,此時提前在dll加載地址申請內存并重新加載dll, 地址將會發(fā)生變化,就達到了讓地址隨機化的目的;在dll加載地址申請內存時會記錄dll 地址,當shellcode試圖訪問這個地址時將會拋出異常,被之前設置的異常接受例程接受 到并處理。
[0020] 進一步,所述R0P防護是在多個系統(tǒng)函數中設置觀察點,在程序執(zhí)行到這些函數 的時候做一次檢測,如果發(fā)現異常則判定為溢出漏洞,其中,所述的檢測包括棧狀態(tài)檢查、 返回地址檢查和模塊調用檢查。
[0021] 進一步,所要保護的進程是office word進程,所要攔截的漏洞是office word的溢 出漏洞。
[0022] 本發(fā)明還公開了一種漏洞防利用系統(tǒng),包括以下模塊:
[0023] 注入模塊,用于將漏洞防護模塊注入到要保護的進程中;
[0024] 漏洞防護模塊,用于對漏洞進行檢測,當檢測到有漏洞運行時,對漏洞進行攔截。
[0025] 進一步,所述的漏洞防護模塊包括DEP、ALSR、R0P三種防護單元,分別用于通過 DEP數據執(zhí)行保護、ALSR地址隨機化機制、R0P面向返回的編程攻擊三種防護手段檢測未知 漏洞。
[0026] 進一步,所述的漏洞防護模塊中內置開關,通過開關操作對DEP數據執(zhí)行保護、 ALSR地址隨機化機制、R0P面向返回的編程攻擊三種防護單元實現開啟或關閉。
[0027] 進一步,該系統(tǒng)還設置了過濾模塊,用于在存在沖突軟件時關閉存在沖突的防護 單元,保證漏洞防護模塊穩(wěn)定的運行。
[0028] 本發(fā)明的效果在于:采用本發(fā)明所述的方法及系統(tǒng),可以在漏洞利用過程中及時 檢測出來,并阻止漏洞的繼續(xù)運行。本發(fā)明之所以具有上述顯著效果,在于本發(fā)明使用多種 檢測方法動態(tài)檢測溢出漏洞的發(fā)生,可以應對已知和未知漏洞。本發(fā)明還加入了云端控制, 增強快速反應能力,在發(fā)現新的漏洞時能夠從云端指定需要保護的進程,加入開關控制以 及過濾模塊最大限度的保證防護的穩(wěn)定性。
【專利附圖】
【附圖說明】
[0029] 圖1是本發(fā)明所述方法的主流程圖;
[0030] 圖2是本發(fā)明所述方法【具體實施方式】中的詳細流程圖;
[0031] 圖3是本發(fā)明【具體實施方式】中所述DEP防護的流程圖;
[0032] 圖4是本發(fā)明【具體實施方式】中所述ALSR防護的流程圖;
[0033] 圖5是本發(fā)明【具體實施方式】中所述R0P防護的流程圖;
[0034] 圖6是本發(fā)明【具體實施方式】中所述R0P三種檢測方法的流程圖;
[0035] 圖7是本發(fā)明所述系統(tǒng)【具體實施方式】中的結構框圖。
【具體實施方式】
[0036] 下面結合附圖和【具體實施方式】對本發(fā)明作進一步描述。
[0037] 本發(fā)明主要針對漏洞利用過程中的一些手法與特點而產生的一些異常來檢測漏 洞是否運行,一旦檢測到這些異常就阻止漏洞的運行,這種特征由于不是針對特定的漏洞, 所以具有泛用性,只要是利用相似手法的漏洞都可檢測出來。
[0038] 本實施例中,以所要保護的進程是office word進程,所要攔截的漏洞是office word的一些溢出漏洞為例對本發(fā)明進行詳細地描述。
[0039] 如圖1所示,一種漏洞防利用方法,包括以下步驟:
[0040] 步驟S1,將漏洞防護模塊注入到要保護的進程中;
[0041] 步驟S2,利用漏洞防護模塊對漏洞進行檢測;
[0042] 步驟S3,當檢測到有漏洞運行時,對漏洞進行攔截。
[0043] 如圖2所示,本實施例中,是通過本地配置文件和/或云端數據庫來判斷是否需要 將漏洞防護模塊注入到要保護的進程中。
[0044] 所述的漏洞防護模塊是通過DEP (Data Execution Prevention,數據執(zhí)行保護)、 ALSR(地址隨機化機制)、R0P(Return-〇riented programming,面向返回的編程攻擊)三種 防護手段實現對未知的office word的一些溢出漏洞進行檢測。
[0045] 所述的漏洞防護模塊中內置開關,通過開關操作對DEP (數據執(zhí)行保護)、ALSR (地 址隨機化機制)、R0P三種防護手段實現開啟或關閉。
[0046] 本實施例中,所述的方法還包括以下步驟:若開啟的DEP、ALSR、R0P三種防護手段 與其他軟件發(fā)生沖突,則關閉存在沖突的防護手段。
[0047] 下面對DEP、ALSR、R0P三種防護在本實施例中的具體實現方法進行詳細說明:
[0048] 1、DEP 防護:
[0049] XP SP2以后的操作系統(tǒng)本身內置了 DEP (數據執(zhí)行保護)功能,但是未針對WORD 等進程打開,本方案在注入相關進程后將打開DEP,并接受處理觸發(fā)的DEP異常。并且還會 針對一些漏洞繞過DEP的方法進行防護。
[0050] DEP防護整體設計示意圖如圖3所示。在NtVirtualProtectMemory設置了一個檢 測點,檢測棧指針異常、堆棧執(zhí)行屬性修改,可以有效的阻止漏洞繞過DEP防護。
[0051] 2、ALSR 防護:
[0052] 漏洞在運行過程中大部分都需要硬編碼一些地址在shellcode中,而Shellcode 是在漏洞發(fā)生后獲得執(zhí)行權限的一段代碼,可以為提升權限或者做其他惡意操作。
[0053] 由于XP下動態(tài)鏈接庫的加載地址都是不變的,所以很容易被利用,本方案將使用 一些手法使得動態(tài)鏈接庫在加載過程中地址發(fā)生變化,從而使得shellcode在執(zhí)行過程中 出現錯誤,此時接受到這些異常則可判定發(fā)生溢出。
[0054] ALSR防護示意圖如圖4所示。ALSR防護是在NtMapViewOfSection函數中設置 Η00Κ點,hook是通過修改程序代碼從而達到改變程序執(zhí)行流程,在程序執(zhí)行過程中加入檢 測流程的方法。當dll加載時會調用該函數,此時提前在dll加載地址申請內存并重新加 載dll,地址將會發(fā)生變化,就達到了讓地址隨機化的目的。而在dll加載地址申請內存時 會記錄dll地址,當shellcode試圖訪問這個地址時將會拋出異常被之前設置的異常接受 例程接受到并處理。
[0055] 3、R0P 防護:
[0056] 在漏洞的執(zhí)行過程中通常需要調用一些系統(tǒng)函數來達到特定的目的,包括下載文 件、執(zhí)行程序、創(chuàng)建遠程線程、記載動態(tài)鏈接庫等,根據這個特點,本方案在多個系統(tǒng)函數中 設置觀察點,在程序執(zhí)行到這些函數的時候做一次檢測,如果發(fā)現異常則可判定為溢出漏 洞。
[0057] R0P防護觀測點示意圖如圖5所示。這些觀測點實際上是在一些shellcode執(zhí)行 過程中可能用到的重要函數中,也就是在漏洞發(fā)生后必經的重要路徑中,在此時檢測可發(fā) 現大量的異常情況,組合一次或多次異常則可判定發(fā)生溢出漏洞。
[0058] 這里R0P防護主要有三種檢測,棧狀態(tài)檢查(棧指針、棧幀)、返回地址檢查(返回 地址是否可執(zhí)行、返回地址是否為call指令)、模塊調用檢查(是否從可執(zhí)行模塊調用), 如圖6所示。
[0059] 如圖7所示,一種漏洞防利用系統(tǒng),包括以下模塊:
[0060] 注入模塊11,用于將漏洞防護模塊注入到要保護的Office word進程中;
[0061] 漏洞防護模塊12,用于對office word的一些溢出漏洞進行檢測,當檢測到有 office word的一些溢出漏洞運行時,對漏洞進行攔截。
[0062] 本實施例中,所述的漏洞防護模塊包括DEP防護單元14、ALSR防護單元 15、R0P防護單元16,分別用于通過DEP(數據執(zhí)行保護)、ALSR(地址隨機化機制)、 R0P (Return-oriented programming,面向返回的編程攻擊)三種防護手段檢測未知漏洞。
[0063] 所述的漏洞防護模塊中內置開關,通過開關操作對DEP數據執(zhí)行保護、ALSR地址 隨機化機制、R0P面向返回的編程攻擊三種防護單元實現開啟或關閉。
[0064] 本實施例中,為了解決開啟DEP、ALSR、R0P三種防護方案與其他軟件可能發(fā)生沖 突的問題,還設置了過濾模塊13,用于在存在沖突軟件時關閉存在沖突的防護單元,保證漏 洞防護模塊穩(wěn)定的運行。
[0065] 通過上述實施例可以看出,采用本發(fā)明所述的方法及系統(tǒng),可以在漏洞利用過程 中及時檢測出來,并阻止漏洞的繼續(xù)運行。
[0066] 本發(fā)明之所以具有上述顯著效果,主要在于:
[0067] 1、本發(fā)明通過使用多種檢測方法動態(tài)檢測溢出漏洞的發(fā)生,可以應對已知和未知 漏洞;
[0068] 2、本發(fā)明通過加入了云端控制,可以增強快速反應,在發(fā)現新的漏洞時能夠從云 端指定需要保護的進程;
[0069] 3、本發(fā)明通過加入開關控制以及過濾模塊可以最大限度的保證防護的穩(wěn)定性。
[0070] 本發(fā)明所述的方法和系統(tǒng)并不限于【具體實施方式】中所述的實施例,所述的漏洞并 不限于office漏洞,所述的防護手段也不限于DEP、ALSR、R0P三種防護手段。本領域技術人 員根據本發(fā)明的技術方案得出其他的實施方式,同樣屬于本發(fā)明的技術創(chuàng)新范圍。
[0071] 此外,術語"第一"、"第二"僅用于描述目的,而不能理解為指示或暗示相對重要性 或者隱含指明所指示的技術特征的數量。由此,限定有"第一"、"第二"的特征可以明示或 者隱含地包括至少一個該特征。在本發(fā)明的描述中,"多個"的含義是至少兩個,例如兩個, 三個等,除非另有明確具體的限定。
[0072] 在本說明書的描述中,參考術語"一個實施例"、"一些實施例"、"示例"、"具體示 例"、或"一些示例"等的描述意指結合該實施例或示例描述的具體特征、結構、材料或者特 點包含于本發(fā)明的至少一個實施例或示例中。在本說明書中,對上述術語的示意性表述不 必須針對的是相同的實施例或示例。而且,描述的具體特征、結構、材料或者特點可以在任 一個或多個實施例或示例中以合適的方式結合。此外,在不相互矛盾的情況下,本領域的技 術人員可以將本說明書中描述的不同實施例或示例以及不同實施例或示例的特征進行結 合和組合。
[0073] 盡管上面已經示出和描述了本發(fā)明的實施例,可以理解的是,上述實施例是示例 性的,不能理解為對本發(fā)明的限制,本領域的普通技術人員在本發(fā)明的范圍內可以對上述 實施例進行變化、修改、替換和變型。
【權利要求】
1. 一種漏洞防利用方法,包括以下步驟: 將漏洞防護模塊注入到要保護的進程中; 利用漏洞防護模塊對漏洞進行檢測; 當檢測到有漏洞運行時,對漏洞進行攔截。
2. 如權利要求1所述的方法,其特征在于:通過本地配置文件和/或云端數據庫來判 斷是否需要將漏洞防護模塊注入到要保護的進程中。
3. 如權利要求1所述的方法,其特征在于:所述的漏洞防護模塊是通過DEP數據執(zhí)行 保護、ALSR地址隨機化機制、ROP面向返回的編程攻擊三種防護手段實現對未知的漏洞進 行檢測。
4. 如權利要求3所述的方法,其特征在于:所述的漏洞防護模塊中內置開關,通過開關 操作對DEP數據執(zhí)行保護、ALSR地址隨機化機制、ROP面向返回的編程攻擊三種防護手段實 現開啟或關閉。
5. 如權利要求3或4所述的方法,其特征在于,該方法還包括以下步驟:若開啟的DEP 數據執(zhí)行保護、ALSR地址隨機化機制、ROP面向返回的編程攻擊三種防護手段與其他軟件 發(fā)生沖突,則關閉存在沖突的防護手段。
6. 如權利要求3所述的方法,其特征在于:所述的DEP數據執(zhí)行保護是將DEP注入進程 后打開DEP,接受處理觸發(fā)的DEP異常,并且還會針對一些漏洞繞過DEP的方法進行防護。
7. 如權利要求6所述的方法,其特征在于:在NtVirtualProtectMemory設置了一個檢 測點,檢測棧指針異常、堆棧執(zhí)行屬性修改,阻止漏洞繞過DEP防護。
8. 如權利要求3所述的方法,其特征在于: 所述的ALSR地址隨機化機制是在NtVirtualProtectMemory函數中設置有hook點, 當dll加載時調用該函數,此時提前在dll加載地址申請內存并重新加載dll,地址將會 發(fā)生變化,就達到了讓地址隨機化的目的;在dll加載地址申請內存時會記錄dll地址,當 shellcode試圖訪問這個地址時將會拋出異常,被之前設置的異常接受例程接受到并處理。
9. 如權利要求3所述的方法,其特征在于:所述R0P防護是在多個系統(tǒng)函數中設置觀 察點,在程序執(zhí)行到這些函數的時候做一次檢測,如果發(fā)現異常則判定為溢出漏洞,其中, 所述的檢測包括棧狀態(tài)檢查、返回地址檢查和模塊調用檢查。
10. 如權利要求1至4任一項所述的方法,其特征在于:所要保護的進程是office word 進程,所要攔截的漏洞是office word的溢出漏洞。
11. 一種漏洞防利用系統(tǒng),包括以下模塊: 注入模塊,用于將漏洞防護模塊注入到要保護的進程中; 漏洞防護模塊,用于對漏洞進行檢測,當檢測到有漏洞運行時,對漏洞進行攔截。
12. 如權利要求11所述的系統(tǒng),其特征在于:所述的漏洞防護模塊包括DEP、ALSR、ROP 三種防護單元,分別用于通過DEP數據執(zhí)行保護、ALSR地址隨機化機制、ROP面向返回的編 程攻擊三種防護手段檢測未知漏洞。
13. 如權利要求12所述的系統(tǒng),其特征在于: 所述的漏洞防護模塊中內置開關,通過開關操作對DEP數據執(zhí)行保護、ALSR地址隨機 化機制、R0P面向返回的編程攻擊三種防護單元實現開啟或關閉。
14. 如權利要求11或12或13所述的系統(tǒng),其特征在于:該系統(tǒng)還設置了過濾模塊,用 于在存在沖突軟件時關閉存在沖突的防護單元,保證漏洞防護模塊穩(wěn)定的運行。
【文檔編號】G06F21/57GK104217157SQ201410372895
【公開日】2014年12月17日 申請日期:2014年7月31日 優(yōu)先權日:2014年7月31日
【發(fā)明者】張韜, 劉桂峰, 姚輝 申請人:珠海市君天電子科技有限公司