冷门但每天都用到的安全技术:数据执行保护

在这里插入图片描述

  1. 数据执行保护概述

前面的文章谈谈著名的缓冲区溢出介绍过,缓冲区溢出存在的根本原因是系统无法分辨出内存中哪些是数据,哪些是执行的代码。而数据执行保护(Data Execution Prevention,以下简称 DEP)就是针对这一问题提出的解决技术。

DEP 能够自动在程序执行时将其可执行代码所占用的区域标记出来,支持 DEP 的 CPU 利用一种叫做“No execute 不执行”的技术识别标记出来的区域。如果发现当前执行的代码没有明确标记为可执行(例如程序执行后由病毒溢出到代码执行区的那部分代码),则禁止其执行,那么利用溢出攻击的病毒或网络攻击就无法利用溢出进行破坏了。因此DEP 简单地说可以看作操作系统底层的安全防护机制,本身不具备对病毒检测的功能,但如果有利用漏洞溢出包括本地溢出的病毒发作时,DEP 可以进行防护作用。

DEP技术也需要硬件设备的支持,如果要完整地支持 DEP 必须拥有支持 DEP 技术的 CPU,目前大部分CPU都支持。此外,需要启用硬件DEP,需在BIOS设置中将CPU Configuration下的Execute Disable Function设置为Enable,才可以打开CPU防御病毒的能力。如果 CPU 不支持 DEP,Windows 会以软件方式模拟出 DEP 的部分功能。

要确定计算机上是否启用了DEP,可打开“系统属性”,依次单击“开始→控制面板”,然后双击“系统”。单击“高级”选项卡,之后单击“性能”下的“设置”,单击“数据执行保护”选项卡。默认情况下,DEP只针对基本Windows操作系统程序和服务启用。要使用DEP帮助保护其他程序,需选择“为下列程序之外的所有程序启用DEP”。如果您的CPU支持DEP并具备相关的技术,则在该选项下面会显示“你的计算机处理器支持基于硬件的DEP。”,如果不支持,则显示“你的计算机处理器不支持基于硬件的DEP,不过,Windows能使用DEP软件防止一些类型的攻击。”,表明使用的是软件DEP。
在这里插入图片描述

DEP最早由微软推出,并从 WinXP SP2 和Windows 2003 sp1 开始新增这一功能。因此可能你平时很少听过,但实际上每天都在使用到它。

2.DEP设置

DEP有四种设置选项:

选择启用(Opt-In)。在此模式下DEP仅用于显式选择开启DEP 的进程。这是客户端操作系统的默认配置。
选择不启用(Opt-Out)。在这个模式下,DEP是每个进程的默认配置,不需要使用DEP的进程应该显式标明。这是服务器操作系统的默认配置。
始终开启(Always On)。无论程序是否与DEP兼容,所有进程都启用DEP。
始终关闭(Always Off)。所有进程都不启用DEP。
其中,前面两种选项可以通过上图中的操作界面设置。但如果想设置后面两种选项,需要通过配置相关文件。在Windows XP SP2 和Windows 2003 sp1中,是通过配置c:\boot.ini文件中的/noexecute值实现。
在这里插入图片描述

在之后的Windows版本,可使用微软提供的命令行工具bcdedit.exe来编辑BCD文件开关该功能。比如在命令行下执行命令“bcdedit /set nx alwaysoff”关闭DEP。而要开启所有服务和应用程序的DEP,则执行命令“bcdedit /set nx alwayson”。
在这里插入图片描述

注意,修改DEP值后,系统需要重启修改才生效。

  1. 与DEP有关的故障

我们在日常经常遇到的几种程序执行错误都和DEP有关。首先在启用DEP时尝试从内存执行的应用程序中发生访问冲突。在此情况下,将出现一个对话框,指示应用程序因DEP而出现错误。该对话框包含与以下内容类似的消息:

在这里插入图片描述

另外一种与DEP有关的错误是BEX错误。
在这里插入图片描述

遇到此类问题,先从程序本身方面分析。如果是自己开发的程序,检查一下是否存在缓冲区溢出或内存泄漏的地方;如果是第三方的程序,可以找一下这些程序的更新补丁或最新版本,尝试安装是否能已经解决问题。如果还是有问题,那就只能设置DEP来解决,即将出问题的程序设置为不启用DEP。但有些应用程序或驱动程序的兼容性不强,即使在DEP中将其放行,它还是不能正常运行,这时就要始终关闭DEP了,兼容性问题虽然解决了,但也少了一堵安全保护的墙。

  1. DEP常见问题
  • 如果 DEP 已关闭程序,再次运行该程序是否安全?

安全,但是仅当打开该程序的DEP,Window才可以继续检测那些从受保护的内存位置运行代码的尝试,这样有助于防止受到攻击。

  • 如果 DEP 正在关闭作为 Windows 一部分的程序(如 svchost.exe 或 explorer.exe),我应该做什么?
    svchost.exe和explorer.exe程序是Windows操作系统的一部分。如果DEP关闭它们或其他Windows服务,则可能是由其他软件发行者创建的以及在Windows中运行的小程序(例如扩展程序)所导致的。如果最近安装了某个程序,并且注意到DEP关闭了基于Windows 的程序,请与软件发行者核对以查看是否有与DEP 兼容的更新版本可用,或者尝试卸载该程序。
  • 设置DEP时遇到“您不能在64位可执行文件上设置DEP属性”
    这个没什么办法,系统就是不支持64位程序的设置。不过网上很多答案说是选择错了程序的路径,应该选择C:\Windows\SysWOW64\下的程序就可以设置成功,因为这才是64位的。这种说法是搞错了基本概念:在64位Windows里,SysWow64文件夹是用来存放32位Windows系统文件的地方,而System32文件夹则是用来存放64位程序文件的地方。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

weixin_45303938

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值