鐵之狂傲

 取回密碼
 註冊
搜尋

切換到指定樓層
1#
管理員模式運行CMD進入DOS模式,輸入"bcdedit /set nx OptIn"(雙引號內文字),然後重啟電腦。DEP的安全機制

    DEP(Data Execution Prevention)即「數據執行保護」,這是Windows的一項安全機制,主要用來防止病毒和其他安全威脅對系統造成破壞。微軟從Windows XP SP2引入了該技術,並一直延續到此後的Windows Server 2003、Windows Server 2008中。毫無例外,在Windows 7中DEP也作為一項安全機制被引入進來。本文將對Windows 7下的DEP進行一番解析。

1、DEP的安全機制

  可以說,溢出是操作系統(應用軟體)永遠的痛,Windows 7自然也不例外。所謂溢出主要指緩衝區溢出,就是利用系統(應用軟體)漏洞從只有Windows和其他程序可以使用的記憶體位置執行惡意代碼從而達到控制系統的目的。如前所述,緩衝區溢出攻擊經常在其它程序的記憶體緩衝區寫入可執行的惡意代碼,然後誘騙程序執行惡意代碼。使用DEP的目的是阻止惡意插入代碼的執行,其運行機制是,Windows利用DEP標記只包含數據的記憶體位置為非可執行(NX),當應用程序試圖從標記為NX的記憶體位置執行代碼時,Windows的DEP邏輯將阻止應用程序這樣做,從而達到保護系統防止溢出。

2、DEP的實現方式

  微軟DEP實現採用了兩種方式,即硬體強制DEP和軟體強制DEP。硬體強制DEP,這需要處理器的支援,不過現在大多數處理器是支援DEP的。軟體強制DEP,這是由Windows操作系統在系統記憶體中為保存的數據對象自動添加的一組特殊指針提供。如何知道自己的處理器是否支援DEP呢?右鍵單擊桌面上的「電腦」表徵圖,選擇「屬性」,在打開的「系統」視窗中點擊「高級系統設置」連結打開「系統屬性」面板。在「高級」選項卡頁面中的「性能」下點擊「設置」打開「性能選項」面板。點擊「數據執行保護」選項卡,在該頁面中我們可確認自己電腦的處理器是否支援DEP。如果支援會在底部的一行顯示「你的電腦處理器支援基於硬體的DEP。」,反之會顯示「你的電腦處理器不支援基於硬體的DEP,不過,Windows能使用DEP軟體防止一些類型的攻擊。」(圖1)



3、DEP的運行等級

  在Windows 7中,DEP預設是啟動的。不過,DEP不能保護系統中所有運行的應用程序,實際DEP能夠保護的程序列表由DEP的保護等級定義。DEP支援兩種保護等級:等級1,只保護Windows系統代碼和可執行檔案,不保護系統中運行的其它微軟或第三方應用程序;等級2,保護系統中運行的所有可執行代碼,包括Windows系統代碼和微軟或第三方應用程序。預設情況下,Windows 7的DEP運行在等級1的保護狀態下。在「數據執行保護」配備面板中,我們能夠設置DEP的保護等級。如圖所示筆者的Windows 7預設「只為基本的Windows程序和服務啟動了DEP」,即DEP保護等級為1。當然,我們也可選擇「除了以下所選擇的,為所有程序和服務打開DEP」 切換到DEP保護等級2。

  在保護等級Level 2可以選擇特定的應用程序不受DEP保護。在實際應用中,這個功能非常重要,因為一些老的應用程序在啟動DEP時無法正常運行。 例如,我我們在使用Word進行文本編輯時,它會自動被排除在DEP保護之外。需要注意的是,在將DEP保護切換到等級2之前,必須運行應用程序相容性測試,確保所有的應用程序在DEP啟動時能正常運行。從DEP中排除應用程序, 需要在DEP配備頁面使用「添加」按鈕,將應用程序的可執行檔案加入到排除列表中。(圖2)



除了上述方法外,我們還可以通過一個工具排除應用程序的DEP保護。這個工具就是DisableNX,它是微軟應用程序相容性套件(Microsoft Application Compatibility Toolkit )中的一個工具,該套件的最新版本為5.5,大家可以訪問微軟官方網站下載獲得,下載地址是:http://www.microsoft.com/downloa ... 0-b45e-492dd6da2971。
該工具的使用比較簡單,大家可根據命令幫助完成排錯操作。

4、查看應用程序是否受到DEP保護

  在Windows 7中,我們如何知道應用程序是否受到DEP保護呢?其實,通過任務管理器我們可以查看到我們想要知道的訊息。不過,預設情況下Windows 7的任務管理器並不顯示應用程序的DEP列,需要手動操作將其調出來。在任務欄上單擊滑鼠右鍵選擇「啟動任務管理器」,在Windows 任務管理器視窗中單擊「查看」菜單選擇「選擇列」,然後從選擇進程頁列中找到並勾選「數據執行保護」項即可。這樣就會在任務管理器中添加「數據執行保護」列,在其下面我們可以看到進程的DEP狀態(啟用或者停用)。筆者的Windows 7系統選擇的是等級1,可以看到所有的系統進程進程都是啟用了DEP保護,而非系統進程比如「WinRar」則DEP狀態為「停用」。不過,筆者這裡要說明一下:雖然有些非系統的應用程序,但其DEP狀態為「啟用」(比如筆者係統中運行的「Windows 7最佳化大師」),這是因為這些應用程序在安裝過程中會創建並註冊成系統服務,所以在Windows看來它也是系統進程,當然也就會執行DEP保護。(圖3)



5、如何關閉DEP保護

  需要提醒的是,當DEP運行在保護等級為2時,由於需要在處理器和系統記憶體運行所有的DEP檢查,會影響系統性能,使得系統運行將會變慢一些,所以在某些情況下我們可以考慮完全關閉DEP保護。我們知道在DEP設置面板中是不提供關閉DEP選項的,那如何關閉呢?如果是Vista以前的系統,我們可以通過修改Boot.ini檔案,在其中添加NoExecute=Always0ff語句來關閉。而在Windows Vista、Windows Server 2008和Windows 7中,boot.ini檔案已經被啟動配備數據(Boot Configuration Data)即BCD檔案所代替,不過我們可以使用微軟提供的命令行工具bcdedit.exe來編輯BCD檔案。

  我們在命令提示符下運行不帶有任何參數的bcedit命令,可以看到目前的啟動配備,如圖所示顯示了在Windows 7下運行bcdedit的結果,其中最後一行顯示nx OptIn,表示目前的DEP保護等級為1,如果顯示為OptOut則表示目前的EDP保護等級為2。如果我們要關閉DEP,只需將nx設置為Always0ff即可。在命令行下執行命令「bcdedit /set nx alwaysoff」,重啟系統後Windows 7的DEP就關閉了。反之,如果要開啟所有服務和應用程序的DEP,執行命令「bcdedit /set nx alwayson」就可以了。(圖4)



  總結:其實DEP並不是醫治Windows系統緩衝區溢出問題的萬能解藥,它的意義在於使得惡意軟體難以利用緩衝區溢出。而且DEP提供的緩衝區溢出保護也有一定的副作用,就是是被DEP阻止的應用程序通常將被掛起,即使DEP停止了惡意程序執行惡意代碼,但是這種情況為惡意程序啟動DOS攻擊創造了新的機會。最後說明一點,本文有關DEP的解析雖然以Windows 7為例,但大部分也適用於Windows Vista和Windows Server 2008。希望本文對於大家認識DEP和理解Windows的安全機制有所幫助。
moh/
專區:forum-276-1.html
 
轉播0 分享0 收藏0

回覆 使用道具 檢舉

你需要登入後才可以回覆 登入 | 註冊

存檔|手機版|聯絡我們|新聞提供|鐵之狂傲

GMT+8, 25-7-24 10:26 , Processed in 0.018595 second(s), 16 queries , Gzip On.

回頂部