|
别说话 高级资深应用大师
    
别找我
|
3#
大 中
小 发表于 2007-8-11 08:08 只看该作者
回复: [交流]了解Windows Vista内核的安全性
(继续)Vista之家论坛# s" f i3 U \" z4 \# V0 w
5.代码完整性验证
, d3 e. ^6 ^. C6 w ]) L; D$ o/ AVista论坛,Vista SP1,Vista社区,Windows Vista主题社区,Vista下载,Vista系统,Vista软件,Vista主题,Vista下载,梦幻桌面,Vista帮助,Windows Vista帮助Vista论坛,Vista SP1,Vista社区,Windows Vista主题社区,Vista下载,Vista系统,Vista软件,Vista主题,Vista下载,梦幻桌面,Vista帮助,Windows Vista帮助# p1 _2 R' q. p* }
作为内核模式设备驱动程序执行的恶意软件(包括 rootkit)与内核在相同的权限级别运行,因此最难识别和删除。这类恶意软件可以修改内核和其他驱动程序的行为,以便使其变得不可见。内核模式代码功能的 Windows Vista 代码完整性,也称为内核模式代码签名 (KMCS),仅允许加载由开发人员发布和经过数字签名的设备驱动程序,这些开发人员已经过为数不多的证书颁发机构 (CA) 之一的审查。默认情况下,KMCS 在 Windows Vista 64 位系统上强制执行。
6 E3 C7 W g; ~1 e - Vista论坛,Vista SP1,Vista主题网站,Vista下载 因为证书颁发机构会对其服务收取费用并进行基本的背景检查,如验证业务识别,所以很难产生在 64 位 Windows Vista 上运行的匿名内核模式恶意软件。此外,设法溜过验证进程的恶意软件可能会留下线索,这些线索在受到危害的系统发现恶意软件时,可以反击作者。KMCS 还有一些次要的用途,如在怀疑驱动程序有使客户系统崩溃的错误和解除高清晰度多媒体内容锁定(我会在稍后简单介绍)时,会向 Windows 在线崩溃分析团队提供联系信息。
3 t0 B1 C0 W/ r) j& g. A" OVista论坛,Vista SP1,Vista社区,Windows Vista主题社区,Vista下载,Vista系统,Vista软件,Vista主题,Vista下载,梦幻桌面,Vista帮助,Windows Vista帮助 KMCS 使用 Windows 十多年来一直采用的公钥加密技术,并要求内核模式代码包括由受信任证书颁发机构之一生成的数字签名。如果发布者将驱动程序提交给 Microsoft Windows 硬件质量实验室 (WHQL),并且驱动程序通过了可靠性测试,则 Microsoft 会充当签署代码的证书颁发机构。大多数发布者将通过 WHQL 获得签名;但是如果驱动程序没有 WHQL 测试程序,发布者不想提交到 WHQL 测试,或者驱动程序是在系统启动早期加载的引导启动驱动程序,则发布者必须自己签署代码。为此,他们必须首先从 Microsoft 确定为受信任内核模式代码签名的证书颁发机构之一获得代码签名证书。然后,作者通过数字方式哈希代码,通过使用私钥进行加密来签署哈希,并将证书和加密的哈希包含在代码中。
4 L3 j( U( [+ k' s' s- [5 T2 mbbs.vista123.com 当驱动程序尝试加载时,Windows 会使用存储在证书中的公钥解密包含在代码中的哈希,然后验证哈希与代码中包含的哈希是否匹配。证书的真实性也通过相同的方式进行检查,但使用 Windows 附带的证书颁发机构的公钥。 & N P3 {$ N3 i, N7 a6 l
Windows 还检查相关的证书链,一直检查到 Windows 启动加载器和操作系统内核中嵌入的根颁发机构之一。尝试加载未签名的 64 位驱动程序不应该发生在生产系统,因此不同于“即插即用”管理器(它在指向加载没有确认是否通过 WQHL 测试签名的驱动程序时显示警告对话框),64 位 Windows Vista 在阻止加载未签名驱动程序时,在无提示的情况下随时将事件写入代码完整性应用程序事件日志,如图 5 所示。32 位 Windows Vista 也检查驱动程序签名,但允许加载未签名的驱动程序。阻止它们将会破坏升级的 Windows XP 系统(要求在 Windows XP 上加载驱动程序,并且还允许支持仅存在 Windows XP 驱动程序的硬件)。不过,32 位 Windows Vista 还会在加载未签名驱动程序时将事件写入代码完整性事件日志。 Vista论坛,Vista SP1,Vista社区,Windows Vista主题社区,Vista下载,Vista系统,Vista软件,Vista主题,Vista下载,梦幻桌面,Vista帮助,Windows Vista帮助; e# d! l2 ~- x e
因为代码签名通常用来将代码标记为经过严格测试的官方发行版本,所以发布者通常并不想对测试代码签名。因此,Windows Vista 包括可以使用 Bcdedit 工具(在 TechNet 杂志 2007 年 3 月份我的文章中介绍过)启用和禁用的测试签名模式,它将加载使用由内部证书颁发机构生成的测试证书经过数字签名的内核模式驱动程序。此模式设计为供程序员在开发其代码时使用。当 Windows 处于此模式时,它会在桌面上显示标记,如图中所示。 ) X* G! e2 h3 d' n, Q' x
- Vista论坛,Vista SP1,Vista主题网站,Vista下载+ k) @: b4 c t8 k" d& b7 d- B
# T" o' I% K8 |+ e3 x; M
6.受保护的进程
0 @5 h& \6 }) F: l1 eVista论坛,Vista SP1,Vista社区,Windows Vista主题社区,Vista下载,Vista系统,Vista软件,Vista主题,Vista下载,梦幻桌面,Vista帮助,Windows Vista帮助
3 G. K4 x8 @; d/ o! MVista之家论坛 下一代多媒体内容,如 HD-DVD、BluRay 和高级访问内容系统 (AACS) 下许可的其他格式,在以后几年内会变得更加常见。Windows Vista 包括许多技术,统称为受保护的媒体路径 (PMP),AACS 标准要求在播放此类内容时使用这些技术。PMP 包括受保护的用户模式音频 (PUMA) 和受保护的视频路径 (PVP),它们一直为音频和视频驱动程序及媒体播放机应用程序提供机制,以防止未授权软件或硬件捕获高清晰度格式的内容。 3 s' n8 x0 @. M Z
PUMA 和 PVP 定义特定于音频和视频播放机、设备驱动程序和硬件的接口和支持,但是 PMP 也依赖在 Windows Vista 中引入的一般内核机制,即称为受保护的进程。受保护的进程以标准的 Windows 进程构造为基础,该构造封装了运行的可执行映像、其 DLL、安全上下文(进程运行所在的帐户及其安全权限),及在进程内执行代码但阻止某些访问类型的线程。 Vista论坛,Vista SP1,Vista社区,Windows Vista主题社区,Vista下载,Vista系统,Vista软件,Vista主题,Vista下载,梦幻桌面,Vista帮助,Windows Vista帮助& R3 r2 _" j! Y" @9 c. }" w
标准进程实施访问控制模式,允许使用“调试程序”权限完全访问进程所有者和管理帐户。完全访问允许用户查看和修改进程的地址空间,包括映射到进程的代码和数据。用户也可以将线程注入进程。这些访问类型与 PMP 的要求不一致,因为它们允许未授权代码获取存储在播放内容的进程中的高清晰度内容和数字版权管理 (DRM) 密钥的访问权限。
( G6 i1 _( E5 t3 `bbs.vista123.com 受保护的进程限制访问一组受限的信息和进程管理界面,包括查询进程的映像名和终止或挂起进程。但是,内核通过一般的进程查询功能(返回有关系统上所有进程的数据)为受保护的进程提供诊断信息,因此不要求直接访问进程。访问可能会损坏只允许通过其他受保护的进程访问的媒体。
^- c5 i8 W, S+ z2 ?Vista之家论坛 此外,为避免从内部受到危害,加载到受保护进程的所有可执行代码(包括其可执行映像和 DLL)必须由 Microsoft (WHQL) 使用受保护的环境 (PE) 标记签名,或者(如果是音频编解码器)由开发人员使用从 Microsoft 获得的 DRM 签名证书签名。因为内核模式代码可以获取任何进程的完全访问权限(包括受保护的进程),并且 32 位 Windows 允许加载未签名的内核模式代码,所以内核可为受保护的进程提供 API,以查询内核模式环境的“清洁度”,并仅在没有加载未签名代码时使用结果解除对高级内容的锁定。 bbs.vista123.com- a1 x/ S. u/ K# O) E4 c
没有特定识别受保护进程的 API,但是您可以间接地根据有关它们的受限信息以及甚至无法从管理帐户进行调试来识别它们。音频设备图形隔离进程 (%Systemroot%\System32\Audiodg.exe) 用于播放使用内容加密系统 (CSS) 编码的 DVD,并在“任务管理器”窗格中标识为受保护的进程。事实上,即使使用管理权限运行,任务管理器也无法获得其命令行、虚拟化和数据执行保护状态。 ; T3 J! D Z% ~+ S& H! x
2 W i1 F1 m7 ?- ~$ e8 v - Vista论坛,Vista SP1,Vista主题网站,Vista下载7.地址空间加载随机化
/ E% H2 ~- j3 p3 a+ u! F& zVista论坛,Vista SP1,Vista社区,Windows Vista主题社区,Vista下载,Vista系统,Vista软件,Vista主题,Vista下载,梦幻桌面,Vista帮助,Windows Vista帮助Vista论坛,Vista SP1,Vista社区,Windows Vista主题社区,Vista下载,Vista系统,Vista软件,Vista主题,Vista下载,梦幻桌面,Vista帮助,Windows Vista帮助$ F+ A' f& l: w1 _" j! e+ _% ^
不管采取什么措施,如数据执行保护和增强的编译器错误检查,恶意软件作者都会继续找到缓冲区溢出漏洞,这些漏洞使他们能够感染面向网络的进程(如 Internet Explorer、Windows 服务及第三方应用程序),获得进入系统的立足点。不过,在设法感染进程后,他们必须使用 Windows API 通过修改用户或系统配置设置来完成读取用户数据或建立永久存在的最终目的。
* M1 T! A# K6 E/ V; UVista论坛,Vista SP1,Vista社区,Windows Vista主题社区,Vista下载,Vista系统,Vista软件,Vista主题,Vista下载,梦幻桌面,Vista帮助,Windows Vista帮助使用 DLL 导出的 API 入口点连接应用程序,通常由操作系统加载器处理,但是这些类型的恶意软件感染不会从加载器的服务中受益。恶意软件在以前的 Windows 版本中还没有出现过此类问题,因为对于任何特定的 Windows 版本,系统可执行映像和 DLL 总在同一个位置加载,让恶意软件假定 API 驻留在固定的地址。 bbs.vista123.com/ D2 f; M A+ N
Windows Vista 地址空间加载随机化 (ASLR) 功能使恶意软件不可能知道 API 的位置,方法是通过每次系统启动时在不同位置加载系统 DLL 和可执行文件。在启动进程早期,内存管理器会从用户模式地址空间顶部 16MB 区域的 256 个 64KB 对齐地址中随机选取一个作为 DLL 映像加载偏差。由于在映像标头中有新的动态重新定位标记的 DLL 加载到进程中,因此内存管理器会从映像加载偏差地址开始并继续将 DLL 选取到内存中。 - Vista论坛,Vista SP1,Vista主题网站,Vista下载' g( L8 @% V( t% h3 f- ]8 O7 U
具有标记组的可执行文件会得到类似的处理,在存储在其映像标头中的 16MB 基本加载地址内以随机的 64KB 对齐点加载。此外,如果使用给定的 DLL 或可执行文件的所有进程卸载后再次加载它,内存管理器会重新选择一个随机的加载位置。图 7 所示为一个 32 位 Windows Vista 系统的示例地址空间布局,包括 ASLR 选取映像加载偏差和可执行文件加载地址的区域。 bbs.vista123.com* B: E3 x& L- W N+ }! S
# G9 P6 m9 u& o5 c! c 只有具有动态重新定位标记的映像(包括所有 Windows Vista DLL 和可执行文件)才能重新定位,因为移动原有映像可能会中断开发人员对其映像加载位置所做的内部假设。Visual Studio 2005 SP1 增加了对设置标记的支持,以便第三方开发人员可以充分利用 ASLR。 Vista论坛,Vista SP1,Vista社区,Windows Vista主题社区,Vista下载,Vista系统,Vista软件,Vista主题,Vista下载,梦幻桌面,Vista帮助,Windows Vista帮助$ [7 B+ B- C# r2 |& F) f
将 DLL 加载地址随机分布到 256 个位置之一,并不会使恶意软件猜不出正确的 API 位置,但是它会严重限制网络蠕虫传播的速度,并且可以阻止仅有一次机会感染系统的恶意软件以可靠地运行。此外,ASLR 的重新定位策略的第二个好处是,地址空间压缩比在以前的 Windows 版本上的更加紧密,为连续内存分配创建更大的可用内存区域,减少内存管理分配以跟踪地址空间布局的页表数,以及最小化转换旁路缓冲器 (TLB) 遗漏。 - Vista论坛,Vista SP1,Vista主题网站,Vista下载/ q) g/ S) F, ?/ G
+ \9 E2 e+ `/ n$ w* S' ~$ EVista论坛,Vista SP1,Vista社区,Windows Vista主题社区,Vista下载,Vista系统,Vista软件,Vista主题,Vista下载,梦幻桌面,Vista帮助,Windows Vista帮助(未完待续)
传说中的Angel Without Wing
|