了解Windows Vista内核的安全性( 五 )


Windows 还检查相关的证书链,一直检查到 Windows 启动加载器和操作系统内核中嵌入的根颁发机构之一 。尝试加载未签名的 64 位驱动程序不应该发生在生产系统,因此不同于“即插即用管理器(它在指向加载没有确认是否通过 WQHL 测试签名的驱动程序时显示警告对话框),64 位 Windows Vista 在阻止加载未签名驱动程序时,在无提示的情况下随时将事件写入代码完整性应用程序事件日志,如图 5 所示 。32 位 Windows Vista 也检查驱动程序签名,但允许加载未签名的驱动程序 。阻止它们将会破坏升级的 Windows XP 系统(要求在 Windows XP 上加载驱动程序,并且还允许支持仅存在 Windows XP 驱动程序的硬件) 。不过,32 位 Windows Vista 还会在加载未签名驱动程序时将事件写入代码完整性事件日志 。
因为代码签名通常用来将代码标记为经过严格测试的官方发行版本,所以发布者通常并不想对测试代码签名 。因此,Windows Vista 包括可以使用 Bcdedit 工具(在 TechNet 杂志 2007 年 3 月份我的文章中介绍过)启用和禁用的测试签名模式,它将加载使用由内部证书颁发机构生成的测试证书经过数字签名的内核模式驱动程序 。此模式设计为供程序员在开发其代码时使用 。当 Windows 处于此模式时,它会在桌面上显示标记,如图中所示 。
6.受保护的进程
下一代多媒体内容,如 HD-DVD、BluRay 和高级访问内容系统 (AACS) 下许可的其他格式,在以后几年内会变得更加常见 。Windows Vista 包括许多技术,统称为受保护的媒体路径 (PMP),AACS 标准要求在播放此类内容时使用这些技术 。PMP 包括受保护的用户模式音频 (PUMA) 和受保护的视频路径 (PVP),它们一直为音频和视频驱动程序及媒体播放机应用程序提供机制,以防止未授权软件或硬件捕获高清晰度格式的内容 。
PUMA 和 PVP 定义特定于音频和视频播放机、设备驱动程序和硬件的接口和支持,但是 PMP 也依赖在 Windows Vista 中引入的一般内核机制,即称为受保护的进程 。受保护的进程以标准的 Windows 进程构造为基础,该构造封装了运行的可执行映像、其 DLL、安全上下文(进程运行所在的帐户及其安全权限),及在进程内执行代码但阻止某些访问类型的线程 。
标准进程实施访问控制模式,允许使用“调试程序权限完全访问进程所有者和管理帐户 。完全访问允许用户查看和修改进程的地址空间,包括映射到进程的代码和数据 。用户也可以将线程注入进程 。这些访问类型与 PMP 的要求不一致,因为它们允许未授权代码获取存储在播放内容的进程中的高清晰度内容和数字版权管理 (DRM) 密钥的访问权限 。
受保护的进程限制访问一组受限的信息和进程管理界面,包括查询进程的映像名和终止或挂起进程 。但是,内核通过一般的进程查询功能(返回有关系统上所有进程的数据)为受保护的进程提供诊断信息,因此不要求直接访问进程 。访问可能会损坏只允许通过其他受保护的进程访问的媒体 。
此外,为避免从内部受到危害,加载到受保护进程的所有可执行代码(包括其可执行映像和 DLL)必须由 Microsoft (WHQL) 使用受保护的环境 (PE) 标记签名,或者(如果是音频编解码器)由开发人员使用从 Microsoft 获得的 DRM 签名证书签名 。因为内核模式代码可以获取任何进程的完全访问权限(包括受保护的进程),并且 32 位 Windows 允许加载未签名的内核模式代码,所以内核可为受保护的进程提供 API,以查询内核模式环境的“清洁度,并仅在没有加载未签名代码时使用结果解除对高级内容的锁定 。
没有特定识别受保护进程的 API,但是您可以间接地根据有关它们的受限信息以及甚至无法从管理帐户进行调试来识别它们 。音频设备图形隔离进程 (%Systemroot%System32Audiodg.exe) 用于播放使用内容加密系统 (CSS) 编码的 DVD,并在“任务管理器窗格中标识为受保护的进程 。事实上,即使使用管理权限运行,任务管理器也无法获得其命令行、虚拟化和数据执行保护状态 。

推荐阅读