DEP机制的保护原理

溢出攻击的根源在于现代计算机对数据和代码没有明确区分这一先天缺陷,就目前来看重新去设计计算机体系结构基本上是不可能的,我们只能靠向前兼容的修补来减少溢出带来的损害,DEP(数据执行保护,Data Execution Prevention)就是用来弥补计算机对数据和代码混淆这一天然缺陷的。

DEP的基本原理是将数据所在内存页标识为不可执行,当程序溢出成功转入shellcode时,程序会尝试在数据页面上执行指令,此时CPU就会抛出异常,而不是去执行恶意指令。如图1所示。

图1  DEP工作原理

DEP 的主要作用是阻止数据页(如默认的堆页、各种堆栈页以及内存池页)执行代码。微软从Windows XP SP2开始提供这种技术支持,根据实现的机制不同可分为:软件DEP(Software DEP)和硬件DEP(Hardware-enforced DEP)。

软件DEP其实就是我们前面介绍的SafeSEH,它的目的是阻止利用S.E.H的攻击,这种机制与CPU硬件无关,Windows利用软件模拟实现DEP,对操作系统提供一定的保护。现在大家明白为什么在SafeSEH的校验过程中会检查异常处理函数是否位于非可执行页上了吧。

硬件DEP才是真正意义的DEP,硬件DEP需要CPU的支持,AMD和Intel都为此做了设计,AMD称之为No-Execute Page-Protection (NX),Intel称之为Execute Disable Bit (XD) ,两者功能及工作原理在本质上是相同的。

操作系统通过设置内存页的NX/XD属性标记,来指明不能从该内存执行代码。为了实现这个功能,需要在内存的页面表(Page Table)中加入一个特殊的标识位(NX/XD)来标识是否允许在该页上执行指令。当该标识位设置为0里表示这个页面允许执行指令,设置为1时表示该页面不允许执行指令。

由于软件DEP就是传说中的SafeSEH,关于SafeSEH的突破前面我们已经介绍过,所以在这一节中我们只对硬件DEP进行讨论和分析。

大家可以通过如下方法检查CPU是否支持硬件DEP,右键单击桌面上的”我的电脑”图标,选择”属性”,在打开的”系统属性”窗口中点击”高级”选项卡。在”高级”选项卡页面中的”性能”下单击”设置”打开”性能选项”页。单击”数据执行保护”选项卡,在该页面中我们可确认自己计算机的CPU是否支持DEP。如果CPU不支持硬件DEP该页面底部会有如下类似提示:”您的计算机的处理器不支持基于硬件的DEP。但是,Windows可以使用DEP软件帮助保护免受某些类型的攻击”。如图2所示。

图2  Windows 2003下DEP选项页示例#p#

根据启动参数的不同,DEP工作状态可以分为四种。

(1)Optin:默认仅将DEP保护应用于Windows系统组件和服务,对于其他程序不予保护,但用户可以通过应用程序兼容性工具(ACT,Application Compatibility Toolkit)为选定的程序启用DEP,在Vista下边经过/NXcompat选项编译过的程序将自动应用DEP。这种模式可以被应用程序动态关闭,它多用于普通用户版的操作系统,如Windows XP、Windows Vista、Windows7。

(2)Optout:为排除列表程序外的所有程序和服务启用DEP,用户可以手动在排除列表中指定不启用DEP保护的程序和服务。这种模式可以被应用程序动态关闭,它多用于服务器版的操作系统,如 Windows 2003、Windows 2008。

(3)AlwaysOn:对所有进程启用DEP 的保护,不存在排序列表,在这种模式下,DEP不可以被关闭,目前只有在64位的操作系统上才工作在AlwaysOn模式。

(4)AlwaysOff:对所有进程都禁用DEP,这种模式下,DEP也不能被动态开启,这种模式一般只有在某种特定场合才使用,如DEP干扰到程序的正常运行。

我们可以通过切换图.2中的复选框切换Optin和Optout两种模式。还可以通过修改c:\boot.ini中的/noexecute启动项的值来控制DEP的工作模式。如图3所示,DEP在该操作系统上的工作模式为Optout。

图3  Windows 2003下DEP默认启动状态

介绍完DEP的工作原理及状态后,我们来看一个和DEP密切相关的程序链接选项:/NXCOMPAT。/NXCOMPAT是Visual Studio 2005及后续版本中引入一个链接选项,默认情况下是开启的。在本书中使用的Visual Studio 2008 (VS 9.0)中,可以在通过菜单中的Project→project Properties→Configuration Properties→Linker→Advanced→Data Execution Prevention (DEP)中选择是不是使用/NXCOMPAT编译程序,如图4所示。

图4  VS 2008中设置/NXCOMPAT编译选项

采用/NXCOMPAT编译的程序会在文件的PE头中设置IMAGE_DLLCHARACTERISTICS_ NX_COMPAT标识,该标识通过结构体IMAGE_OPTIONAL_HEADER中的DllCharacteristics变量进行体现,当DllCharacteristics设置为0x0100表示该程序采用了/NXCOMPAT编译。关于结构体IMAGE_OPTIONAL_HEADER的详细说明大家可以查阅MSDN相关资料,在这我们就不过多讨论了。

经过/NXCOMPAT编译的程序有什么好处呢?通过前面的介绍我们知道用户版的操作系统中DEP一般工作在Optin状态,此时DEP只保护系统核心进程,而对于普通的程序是没有保护的。虽然用户可以通过工具自行添加,但这无形中增高了安全的门槛,所以微软推出了/NXCOMPAT编译选项。经过/NXCOMPAT编译的程序在Windows vista及后续版本的操作系统上会自动启用DEP保护。

DEP针对溢出攻击的本源,完善了内存管理机制。通过将内存页设置为不可执行状态,来阻止堆栈中shellcode的执行,这种釜底抽薪的机制给缓冲溢出带来了前所未有的挑战。这也是迄今为止在本书中我们遇到的最有力的保护机制,它能够彻底阻止缓冲区溢出攻击么?答案是否定的。#p#

如同前面介绍的安全机制一样,DEP也有着自身的局限性。

首先,硬件DEP需要CPU的支持,但并不是所有的CPU都提供了硬件DEP的支持,在一些比较老的CPU上边DEP是无法发挥作用的。

其次,由于兼容性的原因Windows不能对所有进程开启DEP保护,否则可能会出现异常。例如一些第三方的插件DLL,由于无法确认其是否支持DEP,对涉及这些DLL的程序不敢贸然开启DEP保护。再有就是使用ATL 7.1或者以前版本的程序需要在数据页面上产生可以执行代码,这种情况就不能开启DEP保护,否则程序会出现异常。

再次,/NXCOMPAT编译选项,或者是IMAGE_DLLCHARACTERISTICS_NX_COMPAT的设置,只对Windows Vista 以上的系统有效。在以前的系统上,如Windows XP SP3等,这个设置会被忽略。也就是说,即使采用了该链接选项的程序在一些操作系统上也不会自动启用DEP保护。

最后,当DEP工作在最主要的两种状态Optin和Optout下时,DEP是可以被动态关闭和开启的,这就说明操作系统提供了某些API函数来控制DEP的状态。同样很不幸的是早期的操作系统中对这些API函数的调用没有任何限制,所有的进程都可以调用这些API函数,这就埋下了很大的安全隐患,也为我们突破DEP提供了一条道路。


本文节选自《0day安全:软件漏洞分析技术(第2版)》一书。《0day安全:软件漏洞分析技术(第2版)》一书已由电子工业出版社正式出版,本书由王清等编著。

内容简介

本书分为5篇33章,系统、全面地介绍了Windows平台缓冲区溢出漏洞的分析、检测与防护。第一篇为漏洞exploit的基础理论和初级技术,可以引领读者迅速入门;第二篇在第一篇的基础上,结合国内外相关研究者的前沿成果,对漏洞技术从攻、防两个方面进行总结;第三篇站在安全测试者的角度,讨论了几类常用软件的漏洞挖掘方法与思路;第四篇则填补了本类书籍在Windows内核安全及相关攻防知识这个神秘领域的技术空白;第五篇以大量的0 day案例分析,来帮助读者理解前四篇的各类思想方法。

本书可作为网络安全从业人员、黑客技术发烧友的参考指南,也可作为网络安全专业的研究生或本科生的指导用书。

友情提示:

对于本书其他样章以及较详细的介绍,您可以访问:http://book./art/201107/275126.htm

文章来源网络,作者:运维,如若转载,请注明出处:https://shuyeidc.com/wp/135300.html<

(0)
运维的头像运维
上一篇2025-03-01 13:34
下一篇 2025-03-01 13:35

相关推荐

  • 个人主题怎么制作?

    制作个人主题是一个将个人风格、兴趣或专业领域转化为视觉化或结构化内容的过程,无论是用于个人博客、作品集、社交媒体账号还是品牌形象,核心都是围绕“个人特色”展开,以下从定位、内容规划、视觉设计、技术实现四个维度,详细拆解制作个人主题的完整流程,明确主题定位:找到个人特色的核心主题定位是所有工作的起点,需要先回答……

    2025-11-20
    0
  • 社群营销管理关键是什么?

    社群营销的核心在于通过建立有温度、有价值、有归属感的社群,实现用户留存、转化和品牌传播,其管理需贯穿“目标定位-内容运营-用户互动-数据驱动-风险控制”全流程,以下从五个维度展开详细说明:明确社群定位与目标社群管理的首要任务是精准定位,需明确社群的核心价值(如行业交流、产品使用指导、兴趣分享等)、目标用户画像……

    2025-11-20
    0
  • 香港公司网站备案需要什么材料?

    香港公司进行网站备案是一个涉及多部门协调、流程相对严谨的过程,尤其需兼顾中国内地与香港两地的监管要求,由于香港公司注册地与中国内地不同,其网站若主要服务内地用户或使用内地服务器,需根据服务器位置、网站内容性质等,选择对应的备案路径(如工信部ICP备案或公安备案),以下从备案主体资格、流程步骤、材料准备、注意事项……

    2025-11-20
    0
  • 如何企业上云推广

    企业上云已成为数字化转型的核心战略,但推广过程中需结合行业特性、企业痛点与市场需求,构建系统性、多维度的推广体系,以下从市场定位、策略设计、执行落地及效果优化四个维度,详细拆解企业上云推广的实践路径,精准定位:明确目标企业与核心价值企业上云并非“一刀切”的方案,需先锁定目标客户群体,提炼差异化价值主张,客户分层……

    2025-11-20
    0
  • PS设计搜索框的实用技巧有哪些?

    在PS中设计一个美观且功能性的搜索框需要结合创意构思、视觉设计和用户体验考量,以下从设计思路、制作步骤、细节优化及交互预览等方面详细说明,帮助打造符合需求的搜索框,设计前的规划明确使用场景:根据网站或APP的整体风格确定搜索框的调性,例如极简风适合细线条和纯色,科技感适合渐变和发光效果,电商类则可能需要突出搜索……

    2025-11-20
    0

发表回复

您的邮箱地址不会被公开。必填项已用 * 标注