DEP機(jī)制的保護(hù)原理 |
發(fā)布時(shí)間: 2012/8/11 17:47:44 |
溢出攻擊的根源在于現(xiàn)代計(jì)算機(jī)對(duì)數(shù)據(jù)和代碼沒(méi)有明確區(qū)分這一先天缺陷,就目前來(lái)看重新去設(shè)計(jì)計(jì)算機(jī)體系結(jié)構(gòu)基本上是不可能的,我們只能靠向前兼容的修補(bǔ)來(lái)減少溢出帶來(lái)的損害,DEP(數(shù)據(jù)執(zhí)行保護(hù),Data Execution Prevention)就是用來(lái)彌補(bǔ)計(jì)算機(jī)對(duì)數(shù)據(jù)和代碼混淆這一天然缺陷的。 DEP的基本原理是將數(shù)據(jù)所在內(nèi)存頁(yè)標(biāo)識(shí)為不可執(zhí)行,當(dāng)程序溢出成功轉(zhuǎn)入shellcode時(shí),程序會(huì)嘗試在數(shù)據(jù)頁(yè)面上執(zhí)行指令,此時(shí)CPU就會(huì)拋出異常,而不是去執(zhí)行惡意指令。如圖1所示。 圖1 DEP工作原理 DEP 的主要作用是阻止數(shù)據(jù)頁(yè)(如默認(rèn)的堆頁(yè)、各種堆棧頁(yè)以及內(nèi)存池頁(yè))執(zhí)行代碼。微軟從Windows XP SP2開(kāi)始提供這種技術(shù)支持,根據(jù)實(shí)現(xiàn)的機(jī)制不同可分為:軟件DEP(Software DEP)和硬件DEP(Hardware-enforced DEP)。 軟件DEP其實(shí)就是我們前面介紹的SafeSEH,它的目的是阻止利用S.E.H的攻擊,這種機(jī)制與CPU硬件無(wú)關(guān),Windows利用軟件模擬實(shí)現(xiàn)DEP,對(duì)操作系統(tǒng)提供一定的保護(hù),F(xiàn)在大家明白為什么在SafeSEH的校驗(yàn)過(guò)程中會(huì)檢查異常處理函數(shù)是否位于非可執(zhí)行頁(yè)上了吧。 硬件DEP才是真正意義的DEP,硬件DEP需要CPU的支持,AMD和Intel都為此做了設(shè)計(jì),AMD稱(chēng)之為No-Execute Page-Protection (NX),Intel稱(chēng)之為Execute Disable Bit (XD) ,兩者功能及工作原理在本質(zhì)上是相同的。 操作系統(tǒng)通過(guò)設(shè)置內(nèi)存頁(yè)的NX/XD屬性標(biāo)記,來(lái)指明不能從該內(nèi)存執(zhí)行代碼。為了實(shí)現(xiàn)這個(gè)功能,需要在內(nèi)存的頁(yè)面表(Page Table)中加入一個(gè)特殊的標(biāo)識(shí)位(NX/XD)來(lái)標(biāo)識(shí)是否允許在該頁(yè)上執(zhí)行指令。當(dāng)該標(biāo)識(shí)位設(shè)置為0里表示這個(gè)頁(yè)面允許執(zhí)行指令,設(shè)置為1時(shí)表示該頁(yè)面不允許執(zhí)行指令。 由于軟件DEP就是傳說(shuō)中的SafeSEH,關(guān)于SafeSEH的突破前面我們已經(jīng)介紹過(guò),所以在這一節(jié)中我們只對(duì)硬件DEP進(jìn)行討論和分析。 大家可以通過(guò)如下方法檢查CPU是否支持硬件DEP,右鍵單擊桌面上的"我的電腦"圖標(biāo),選擇"屬性",在打開(kāi)的"系統(tǒng)屬性"窗口中點(diǎn)擊"高級(jí)"選項(xiàng)卡。在"高級(jí)"選項(xiàng)卡頁(yè)面中的"性能"下單擊"設(shè)置"打開(kāi)"性能選項(xiàng)"頁(yè)。單擊"數(shù)據(jù)執(zhí)行保護(hù)"選項(xiàng)卡,在該頁(yè)面中我們可確認(rèn)自己計(jì)算機(jī)的CPU是否支持DEP。如果CPU不支持硬件DEP該頁(yè)面底部會(huì)有如下類(lèi)似提示:"您的計(jì)算機(jī)的處理器不支持基于硬件的DEP。但是,Windows可以使用DEP軟件幫助保護(hù)免受某些類(lèi)型的攻擊"。 本文出自:億恩科技【www.allwellnessguide.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |