注释:我把几篇访问量相对较高的几篇文章从我的个人版面转移到这里,这是其中的一篇,同时补上已经失效的部分图片。为了不影响大家阅读,这里并未将其放到blog.itecn.net首页上,而是放到vista.itecn.net的版面上。
不少网友甫一提及Windows Vista,所乐道者,不外乎其晶莹剔透的Glass效果,抑或超酷超炫的Flip 3D效果,还不忘加上一句“可惜硬件要求太高”……
其实这完全是一种误解,Windows Vista不但出落得姿容绝色,还有很多“内在美”,端的是“秀蕴于中”。而Vista的安全特性,尤其值得浓墨重彩、大书特书!
如今世界,不管是小布什、还是比尔.盖茨,最头痛的就是“安全反恐”的问题,可见安全是一个普遍关注的热门话题!
纵深安全防御
接下来的这张图片,相信大家都非常熟悉,对,这就是“臭名卓著”的纵深防御体系图。而Windows Vista则把安全理念渗透到纵深安全防御的每一个层面。本文就是以这张纵深防御的层次图为模板(实际是纵深安全防御体系结构图的一个“子集”),以目前最新的CTP Build 5381.1为范例,向读者诸君展示Windows Vista是如何武装到牙齿的!
基础结构安全
在整个Windows Vista安全体系中,基础结构安全可以说是最关键,同时又是最容易被忽略的。所以这里首先介绍这些具有“老黄牛”精神的基础安全特性。
1.安全开发生命周期
对Windows Vista倾注了前所未有的心力,对整个开发过程引入了SDL(Security Development Lifecycle:安全开发生命周期)机制。耗费大量人力财力对工程师进行安全培训,据说Vista工程师有5000人,这些多人都要停工接受安全培训,可见微软投入之巨大、意念之坚决!
2.代码完整性
代码完整性(CI:Code Integrity)可以有效地防范、rootkit等对系统文件的恶意修改,防范不安全的第三方驱动对系统的危害。CI会检查代码的hash值(内嵌于代码中的x.509证书,或者位于%windir%system32catroot里的编录文件),一旦发现hash值不符,就会停止加载代码。CI主要检查以下的代码:
(1) 系统启动时,检查内核、HAL和驱动的完整性
(2) 检查所有加载到内核内存空间的代码完整性
(3) 对加载到受保护进程空间里的代码进行完整性检查
3.服务加固(Level 300)
Windows Vista对服务进行了诸多有效的安全加固,能够极大地减少服务所带来的安全隐患。
(1) Session 0隔离
之前的,例如XP或者2003,服务和控制台登录的用户都是位于Session 0,这样用户进程只要成功对服务发起攻击,就可以提升自己的权限。而现在Vista里的所有服务都运行在Session 0里,通过鼠标、键盘(控制台)登录的用户则位于Session 1。也就是说服务和所有用户程序不可能位于一个Session,以杜绝通过应用进程向服务发动攻击。
(2) 最小特权帐户
把更多服务的启动帐户,从LocalSystem迁移到LocalService或者NetworkService。举个例子,在XP下,“Cryptographic Services”服务的启动帐户是LocalSystem,而在Vista下,则变为NetworkService,这样可以大大减少服务所需的权限,减少安全隐患。
(3) 独立SID
现在每个服务都有一个独立的SID,这样服务就可以利用该SID来控制其专属资源的ACL。可以在服务的宿主进程的访问令牌里看到其SID。例如以“Network Location Awareness”服务为例,可以在其宿主进程svchost的访问令牌里看到其SID为“NT ServiceNlaSvc”(NlaSvc就是该服务的KeyName),如附图所示。
我们可以借助PsGetSid命令查看该SID的具体值,如附图所示:
可以借助Subinacl命令查看“Network Location Awareness”服务本身的ACL,可以发现其中的一个ACE含有“NT ServiceNlaSvc”这个SID,如附图所示: