评估Vista内核模式的安全性

DOC版本下载:
http://www.cisrg.cn/doc/Vista-Release.rar

Assessment of Windows Vista Kernel-Mode Security
评估Vista内核模式的安全性
Matthew Conover, Principal Security Researcher, Symantec Corporation
翻译:7all(www.cisrg.cn)

概要―Windows Vista introduces several additional barriers that aim to prevent malicious code from gaining access to the operating system kernel. This paper is intended to provide a technical review of their implementation. The kernel mode security enhancements in Windows Vista are quite substantial, resulting in a dramatic reduction of its overall attack surface. However, we have identified certain weaknesses in the kernel enhancements that may be leveraged by malicious code to undermine these improvements.

I INTRODUCTION
Windows Vista与之前的MS Windows版本(包括Windows XP SP2)相比增加了很多的安全性 。Vista新安全性的特征可以包括以下几个方面:
驱动签名[1]
PatchGuard [2]
内核模式代码完整性检查[3]
可选择支持使用TPM芯片的安全启动[4]
限制用户模式访问/Device/PhysicalMemory[5]
上述的这些功能使得Vista64位版本与Linux或MacOS相比更具备安全性 。该文档的主要贡献在:(1)通过拟向工程较全面的分析内核模式的安全组件(2)评估可能存在的内核模式攻击 。
A、;;;;What’s Covered
该文档检查新的安全特性,通过这些安全特性来阻止恶意代码危及内核 。由于这些特性都仅存在于64位的Windows Vista系统内,因此该文档的关注点在Vista64位版本 。
B、;;;;What’s Not Covered
该文档没有分析PatchGuard的执行,针对PatchGuard的分析在前期已经有Skape和Skywing[6]进行了较全面的分析,值得注意的是PatchGuard发展到目前已经有所改变(在skape与skywing分析完后) 。仅当下面章节对PatchGuard进行攻击评估时才会讨论这些问题 。针对Vista用户模式的安全性评估在前面已经有所讨论[7] 。
C、;;;;Prerequisites
由于无法访问Windows Vista的源代码,我们通过debugger(调试器)、disassembler(反编译)、hex editor(16进制编辑器,例如UE)学习了Windows Vista Community Technical Preview (CTP) Build 5365版本 。如果读者不熟悉X86体系架构和汇编语言的知识,推荐大家一本不错的关于X86汇编语言的在线图书[8] 。另外,在看该文档前你需要熟悉一些Windows系统架构的知识,推荐大家阅读[9],该书讲解了Windows系统架构的知识,同时这本书的一些知识同样可以应用到Vista系统上 。在该文档公布时Vista系统还在测试阶段,但Vista在后来版本的安全性方面又做了一些改动 。我们希望Vista在最终的发布版本上有更多的改变,同时我们也计划继续对未来的Vista版本的内核改动进行研究 。




II Vista Boot Process

A、;;;;Windows Vista Boot Manager (阶段1)
Windows Vista支持从PC/AT BIOS和Intel新的EFI(可扩展固件接口)启动 。我们的分析过程忽略了EFI部分 。在本章节的最后部分,引用了bootmgr入口点的开始指令(DllMail为EFI的入口点指令,offset 0为PC/AT的入口点指令)这个过程从Vista启动管理器开始,定位%SystemDrive%/bootmgr 文件 (for PC/AT legacy BIOS)或%SystemDrive%/Boot/EFI/bootmgr.efi (for EFI BIOS) 。Vista Boot Manager是启动Vista的必须环节,但也适用于启动Windows Vista之前的Windows版本 。
Vista Boot Manager首先调用InitializeLibrary,然后依次调用BlpArchInitialize (GDT, IDT, etc.), BlMmInitialize (memory management), BlpFwInitialize (firmware=固件?), BlpTpmInitialize (TPM), BlpIoInitialize (file systems), BlpPltInitialize (PCI configuration), BlBdInitialize (debugging), BlDisplayInitialize, BlpResourceInitialize (finds its own .rsrc section), and BlNetInitialize 。
在Vista系统内,Windows传统的boot.ini配置文件已经被启动配置数据文件(BCD)所代替,Vista下该文件位于%SystemDrive%/Boot/BCD,该文件也是注册表的值(在Vista下被挂载在HKEY_LOCAL_MACHINE/BCD00000000下) 。可以使用bcdedit.exe来查看该文件的内容 。

推荐阅读