- ·上一篇文章:Windows系统重装后怎么使电脑更快
- ·下一篇文章:Linux系统下的文件自动备份到Windows下
详细了解Windows Vista内核的安全性
| |||||
受保护的进程限制访问一组受限的信息和进程管理界面,包括查询进程的映像名和终止或挂起进程。但是,内核通过一般的进程查询功能(返回有关系统上所有进程的数据)为受保护的进程提供诊断信息,因此不要求直接访问进程。访问可能会损坏只允许通过其他受保护的进程访问的媒体。
此外,为避免从内部受到危害,加载到受保护进程的所有可执行代码(包括其可执行映像和 DLL)必须由 Microsoft (WHQL) 使用受保护的环境 (PE) 标记签名,或者(如果是音频编解码器)由开发人员使用从 Microsoft 获得的 DRM 签名证书签名。因为内核模式代码可以获取任何进程的完全访问权限(包括受保护的进程),并且 32 位 Windows 允许加载未签名的内核模式代码,所以内核可为受保护的进程提供 API,以查询内核模式环境的“清洁度”,并仅在没有加载未签名代码时使用结果解除对高级内容的锁定。
没有特定识别受保护进程的 API,但是您可以间接地根据有关它们的受限信息以及甚至无法从管理帐户进行调试来识别它们。音频设备图形隔离进程 (%Systemroot%\System32\Audiodg.exe) 用于播放使用内容加密系统 (CSS) 编码的 DVD,并在“任务管理器”窗格中标识为受保护的进程。事实上,即使使用管理权限运行,任务管理器也无法获得其命令行、虚拟化和数据执行保护状态。
7.地址空间加载随机化
不管采取什么措施,如数据执行保护和增强的编译器错误检查,恶意软件作者都会继续找到缓冲区溢出漏洞,这些漏洞使他们能够感染面向网络的进程(如 Internet Explorer、Windows 服务及第三方应用程序),获得进入系统的立足点。不过,在设法感染进程后,他们必须使用 Windows API 通过修改用户或系统配置设置来完成读取用户数据或建立永久存在的最终目的。
使用 DLL 导出的 API 入口点连接应用程序,通常由操作系统加载器处理,但是这些类型的恶意软件感染不会从加载器的服务中受益。恶意软件在以前的 Windows 版本中还没有出现过此类问题,因为对于任何特定的 Windows 版本,系统可执行映像和 DLL 总在同一个位置加载,让恶意软件假定 API 驻留在固定的地址。
Windows Vista 地址空间加载随机化 (ASLR) 功能使恶意软件不可能知道 API 的位置,方法是通过每次系统启动时在不同位置加载系统 DLL 和可执行文件。在启动进程早期,内存管理器会从用户模式地址空间顶部 16MB 区域的 256 个 64KB 对齐地址中随机选取一个作为 DLL 映像加载偏差。由于在映像标头中有新的动态重新定位标记的 DLL 加载到进程中,因此内存管理器会从映像加载偏差地址开始并继续将 DLL 选取到内存中。
具有标记组的可执行文件会得到类似的处理,在存储在其映像标头中的 16MB 基本加载地址内以随机的 64KB 对齐点加载。此外,如果使用给定的 DLL 或可执行文件的所有进程卸载后再次加载它,内存管理器会重新选择一个随机的加载位置。图 7 所示为一个 32 位 Windows Vista 系统的示例地址空间布局,包括 ASLR 选取映像加载偏差和可执行文件加载地址的区域。

只有具有动态重新定位标记的映像(包括所有 Windows Vista DLL 和可执行文件)才能重新定位,因为移动原有映像可能会中断开发人员对其映像加载位置所做的内部假设。Visual Studio 2005 SP1 增加了对设置标记的支持,以便第三方开发人员可以充分利用 ASLR。
将 DLL 加载地址随机分布到 256 个位置之一,并不会使恶意软件猜不出正确的 API 位置,但是它会严重限制网络蠕虫传播的速度,并且可以阻止仅有一次机会感染系统的恶意软件以可靠地运行。此外,ASLR 的重新定位策略的第二个好处是,地址空间压缩比在以前的 Windows 版本上的更加紧密,为连续内存分配创建更大的可用内存区域,减少内存管理分配以跟踪地址空间布局的页表数,以及最小化转换旁路缓冲器 (TLB) 遗漏。



