`
touchinsert
  • 浏览: 1327834 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

Windows Vista操作系统最新安全特性分析:改进和局限 (上)

阅读更多

Windows Vista操作系统最新安全特性分析:改进和局限 (上)

没有十全十美的安全系统。

——安全领域第一定律
申明。文章仅代表个人观点,与所在公司无任何联系。
1. 概述
微软最新发行的Windows Vista操作系统,特别强调了对安全特性的支持。可以毫不夸张地说,安全特性的提高是Windows Vista操作系统同以往发布的Windows操作系统相比,改进最大的地方之一,也是促使用户升级到Windows Vista操作系统的重要考虑因素。
Windows Vista操作系统提供的各类最新的安全特性,涵盖以下四个大部分:
· 基础平台。包括安全软件开发周期(SDL),系统服务保护(Service Hardening),防止缓存溢出,64位平台安全改进。
· 权限保护。包括用户帐户控制(UAC),智能卡/登陆体系,网络权限保护(NAP)。
· 防止有害软件和恶意入侵。包括安全中心,反间谍软件(Windows Defender)和有害软件删除工具,防火墙,IE安全改进。
· 数据保护。包括BitLocker,加密文件系统,版权保护,USB设备控制。
本文会逐一分析每一个安全特性的开发背景,Windows Vista中做出的改进,及应用范围。并且特别强调了每一个安全特性的局限性。因为在安全领域中有一句话:比没有安全更糟糕的是虚假的安全。
通过对每一个安全特性的分析,希望读者能得到以下两个关键信息:
· Windows Vista 提供了许多非常好的安全特性
· Windows Vista 不能解决你所有的安全问题。在某种程度上,意识这一点更为重要。
2. 安全是什么?
安全是一个整体的,系统的概念。安全的范围包括硬件安全,软件安全,员工培训等等。其主要目的,就是为了保证被保护的核心数据不被损害,这意味着:
· 权限控制:合法用户拥有权限,而非法用户则无法访问。
· 可靠性:合法用户可以成功执行数据操作。
· 完整性:合法用户所得到的数据是正确的,未经篡改的。
无论是计算机病毒,间谍软件,或黑客等,其行为都是针对数据的正常访问。例如:删除数据,窃取数据,篡改数据,DDOS攻击等等。

1:Windows Vista在可用性和安全的取舍
在这个世界上,没有十全十美的安全系统。任何一个操作系统必须在不同特性中作出取舍。以Windows 95举例,它的可用性好,但安全性差。 而Windows Vista中,针对安全特性的提高,有时候则不得不牺牲部分可用性。例如,用户帐户控制这个Windows Vista中新增安全特性就是一个典型的例子。

3. 基础平台

3.1安全软件开发周期
背景:冲击波病毒。众所周知,当年Blaster病毒给微软及其用户带来了巨大的损失。安全软件开发周期(SDL - Security Development Lifecycle)可以说是一个微软痛定思痛后,决心加强产品安全的产物。
SDL的中心思想就是将安全特性的考虑渗透到产品生命周期的每一个阶段。
· 设计。每一个功能模块均需要制定其相应的风险模型(threat model),来预测可能的攻击方式,相应反制措施等等。
· 开发。遵循严格的代码规范。对禁止使用那些容易误用的API调用。使用静态程序分析工具查寻可疑的代码片断。
· 测试。特别严格测试风险模型指出的高风险代码。并广泛采用“FUZZ”测试。“FUZZ”测试指通过模拟错误的,不合规范的输入数据,来测试软件代码针对错误处理的响应。它被证明是一个有效的发现产品漏洞的测试手段。
· 审查。产品代码在正式发布前要经过严格的安全审查,
· 维护/响应。一旦正式发布的产品代码中发现安全漏洞,需要有一套严格的安全响应程序,以迅速,正确地提供安全补丁。
我们用对筷子的设计来举例SDL对产品安全的影响。在普通设计下,考虑的因素也许是筷子的易用,结实,好看。加入SDL安全考虑,就需要考虑:如何不让别人抢走我的筷子?如何不让别人的筷子伸到我的碗里?如何不让别人伪造我的筷子等等在普通设计中忽视考虑的因素。
Windows Vista是第一个从头至尾采用SDL进行开发的操作系统。通过SDL严格的开发规程,微软期望,Windows Vista安全水准较先前Windows操作系统有显著提高。
但是,任何开发人员都是无法完全预知未来攻击的所有模式。换句话说,就是开发者是不可能预测到攻击者是怎么想,会怎么用操作系统的。所以说,SDL并不能保证操作系统杜绝所有的安全漏洞。Windows Vista操作系统会有自身的安全漏洞。而我们希望的是,SDL可以减少这些安全漏洞的数目和严重程度。
3.2系统服务保护(Service Hardening)
背景:系统服务程序(System Service)被恶意软件攻击的次数日益增多。原因有以下两点:
· 系统服务无需用户交互,即可自动运行。
· 系统服务运行于“LocalSystem”账号下,拥有对系统的完全控制权。一旦被成功攻击,恶意程序就可以在系统上为所欲为。
最著名的例子就是冲击波病毒。它就是攻击DCOM的远程调用(RPC)系统服务。
在Windows Vista操作系统提供了系统服务保护功能。包括:
· 许多系统服务程序运行在较低权限的用户帐号下,如LocalService or NetworkService。
· 系统服务程序有相应的配置文件,用以指定该服务可以执行的文件,注册表和网络行为。例如,远程调用(RPC)系统服务被限制为不能更改系统文件和注册表。通过和防火墙配置的结合,可以限制系统服务的异常网络行为。这样,即使一个系统程序被攻击,由于不能修改重要的系统文件和注册信息,或者连接网络,它所造成的危害也会得到限制。
局限性。Service Hardening是不可能限制所有的系统服务的。关键的系统服务还是需要在系统核心权限下运行。一旦这些服务出现安全漏洞,还是会导致严重的安全问题。
3.3防止缓存溢出
背景:缓存溢出是操作系统最为严重的安全漏洞。几个有名的例子是:
· Code Red: IIS缓存溢出
· Blaster: DCOM RPC缓存溢出
· Zotob: PnP缓存溢出
其原因在于,缓存溢出的安全漏洞往往导致恶意代码可被远程执行。以下是一个堆栈缓存溢出的例子:
/*以下UnSafeNetRecv代码*/
void UnSafeNetRecv(char* payload)
{
char localBuffer[128];
… …
strcpy (localBuffer, payload);
}
在编译过程中,堆栈空间是自高向低分配的。函数UnSafeNetRecv的堆栈分配如下:
2:缓存溢出的安全漏洞
在执行到strcpy (localBuffer, payload) 时,如果从网络传输的payload长度超过128个字节,函数的返回地址就被覆盖。重新写入的地址会指向传入的恶意数据(代码)。这样,当函数返回时,IP寄存器不是指向上一层调用,而是从恶意数据(代码)处开始执行。
3.3.1 NX保护
NX的含义是“No Execution”。在以上的缓存溢出的例子中,恶意代码在堆栈上被执行。NX保护可以指定特定的页面(如堆栈所在页面)是数据页面,不允许在上运行指令。这样,一旦IP寄存器指向了堆栈所在页面,会导致硬件异常,而不是执行恶意数据(代码)。
3:NX保护
Windows Vista相对Windows XP SP2,提供了更多NX保护支持。在32位平台上,Windows Vista的缺省设置是系统代码设置满足NX标准(NX-compliant)。同时,还可以指定某个特定的应用程序是否满足NX标准。这样,在确保向前兼容性的前提下,可以最大可能的提高系统中被NX保护的比例。在64位平台上,NX保护缺省设置为应用于所有代码。
3.3.2寻址空间随机分布(ASLR)

同样从上个堆栈溢出的例子说起。如果写入的新的返回地址不是指回堆栈页面,而是指向了一个系统函数的入口地址,那样NX保护就不起作用。这类攻击有一个前提,即特定系统函数的入口地址是可以事先确定的。
寻址空间随机分布(ASLR: Address Space Layout Randomization)就是针对此类攻击手段。在Windows Vista启动时,操作系统随机从256个地址空间中选出一个载入DLL/EXE。这样攻击方就难以事先确定系统函数的入口地址。
寻址空间随机分布和NX保护结合在一起,可以有效限制缓存溢出危害程度。
4:寻址空间随机分布
局限性。尽管缓存溢出是操作系统最为严重的安全漏洞,并不是所有严重的安全漏洞都是由缓存溢出导致的。例如,2006年Windows系统最严重的安全漏洞之一,MS06-001 WMF安全漏洞,就和缓存溢出没有关系。在这种情况下,NX保护,或是寻址空间随机分布,都是不起作用的。
3.4 64位平台安全改进
背景:有缺陷或恶意的驱动程序导致系统崩溃,不稳定,和极为严重的安全问题。
这里需要简单介绍“Rootkit”这个概念。这个术语来自于Unix系统。最早的一个版本是出现在SunOS 4。它特指那些用于修改操作系统,以改变操作系统的表现行为的工具软件 。而这种改变,往往不是操作系统设计时所期望的。
Rootkit最典型的目的就是“隐藏”。隐藏的对象可以是文件,特定的注册表,特定进程,打开的网络端口等等。这个“隐藏”是通过修改操作系统本身来实现的。下面是Win32 API的调用过程:
5:Win32 API的调用过程
Rootkit可以将自身代码插入到每一个箭头连接处,以控制函数的返回结果。举个例子,一个应用程序(如反病毒软件)需要查询系统中运行的当前进程,Rootkit只需要将所想隐藏的进程从返回的进程列表中删除,那么上层的应用程序就根本不知道有这样一个进程正在系统中运行。
为什么说Rootkit会导致严重的安全问题?试想一下,如果一个恶意程序把自身文件和运行进程从系统中隐藏起来,那么如何指望反病毒软件/反间谍软件能成功的检测/清除这个程序?!
在64位平台Windows Vista,特别增加了下面两个重要的安全特性。
· 设备驱动程序数字认证。在64位平台Windows Vista中,所有工作在核心模式下的设备驱动程序都必须提供数字认证,才能被系统加载。由于需要修改操作系统行为,Rootkit往往是一个工作在核心模式下的设备驱动程序。那么,数字认证首先可以指明一个驱动程序是由哪个厂商发布的。其次,数字认证可以验证这个驱动程序的代码完整性,也就是否被篡改过。这样,就可以防止系统加载Rootkit驱动程序。
· 核心模式保护(Kernel Patch Protection)。这个技术也被称为PatchGuard。它用来防止未经认证的代码自由修改操作系统的核心状态(Kernel State)。最为危险的Rootkit往往直接修改核心模式的重要数据,例如系统的进程控制表,中断控制表等等。通过对核心状态的保护,可以有效阻止这类攻击。
局限性。由于向前兼容的原因,设备驱动程序的数字认证,和核心模式保护只在64位平台上有效。也就是说,32位平台Windows Vista上的Rootkit威胁并没有得到有效控制。
分享到:
评论

相关推荐

    Windows Vista安全特性分析:改进和局限(上)

    可以说,安全特性的提升是Windows Vista操作系统相较于之前版本最大的改进之一,也是用户升级到该操作系统的主要原因之一。Windows Vista提供的最新安全特性主要包括以下几个方面: 1. **基础平台**:包括安全软件...

    Vista界面仿真器

    【Vista界面仿真器】是一种软件工具,设计用于在非Windows Vista操作系统上模拟Vista的用户界面风格和体验。这款应用程序允许用户在较新的或不同的Windows版本,甚至其他操作系统上享受Vista特有的视觉效果和交互...

    深入研究Windows内部原理系列(合集)

    对于IT专业人员而言,学习Windows操作系统不仅仅局限于应用层,更应该深入理解其内核原理和系统架构。这有助于更好地维护系统、优化性能和应对安全威胁。此外,理解Windows操作系统的工作原理还可以帮助开发人员编写...

    Windows Vista版本各项功能细分列表

    Windows Vista是微软在2007年推出的一款操作系统,它在Windows XP的基础上进行了一系列重大更新和改进,带来了许多新功能。本文将详细介绍Vista各版本在硬件配置、网络配置、外观用户界面(UI)以及其他方面的功能...

    WindowsVista操作系统安装图.pdf

    从文件名“WindowsVista操作系统安装图.pdf”可以推测,该文件可能包含了Windows Vista操作系统的安装指南,涉及操作系统安装过程中的关键步骤和截图。考虑到文件中提到的内容,如BIOS设置、安装分区大小、内存配置...

    Vista 的时钟软件

    "Vista 的时钟软件" 指的是在Windows Vista操作系统上运行的一款时钟应用程序。Windows Vista是微软公司在2007年发布的一款操作系统,相较于其前任Windows XP,它引入了许多新的特性和改进。由于Vista系统的特殊性,...

    IE8使用于不同系统的

    - 特性:在Windows XP下,IE8增加了加速器、Web Slices和InPrivate浏览等新功能,同时增强了隐私保护和安全性能。 2. **Windows Vista系统中的IE8** - 自带:Windows Vista用户在Service Pack 1之后的更新中可以...

    15天学习C语言Windows程序设计

    随着时间的推移,Windows家族继续发展壮大,包括Windows XP、Vista、7、8等,不断优化用户体验和技术特性。 ### Windows的优点 Windows操作系统因其易用性、丰富的软件生态和持续的技术创新而广受欢迎。它的界面...

    IIS6.0 for 2000 xp vista

    尽管这个版本已经较为老旧,但在2000、XP和Vista等操作系统上,IIS 6.0仍然是很多企业和个人用户部署Web服务的选择。 **IIS6.0的主要特性** 1. **性能优化**:IIS 6.0引入了工作进程隔离(WAS,Worker Process ...

    Windows Token Stealing

    在IT安全领域,尤其是针对操作系统安全机制的研究与探讨中,“Windows Token Stealing”是一个关键而复杂的主题。这一技术涉及在Microsoft Windows系统中非法获取或篡改其他进程的访问令牌(Access Token),从而...

    关于Win7兼容性与安全性

    右键点击程序,选择“属性”中的“兼容性”选项卡,指定一个能够正常运行该程序的操作系统版本(如 Windows XP 或 Vista)。 2. **应用程序运行时的兼容性问题** - 如果应用程序无法正常启动或运行时出现错误,...

    49.0.2623.112_chrome_installer.exe.zip

    版本号49.0.2623.112是在2016年发布的,当时为了提升安全性及兼容性,Google逐步停止了对Windows XP和Vista等老版本操作系统的支持。这一决策意味着此后的Chrome更新可能无法在这些系统上正常运行,因此49.0.2623....

    Windows7教程.doc

    Windows 7 是微软公司推出的一款操作系统,相较于Vista,它在功能和系统稳定性方面都有显著提升。Windows 7 强调用户体验和易用性,引入了许多新特性,使其成为一款既稳定又实用的系统。 1. **桌面设计的创新** - ...

    紅皮書c#2008高級編程 最新版

    - 介绍了Windows Vista和Windows Server 2008的新特性和改进之处。 - 讨论了这些操作系统对.NET应用程序的影响。 - 分析了部署和兼容性问题的解决方案。 #### 结语 **《紅皮書c#2008高級編程 最新版》**作为一...

    Win7互联网视频是否提供独立的更新安装包.docx

    标题中的“Win7互联网视频是否提供独立的更新安装包”主要关注的是Windows 7操作系统针对互联网视频功能的更新方式。根据描述,Windows 7并不提供独立的更新安装包,其互联网视频相关的安装和更新都是通过在线安装的...

    Microsoft Visual Basic 6.0 SP6

    - **兼容性更新**:SP6支持最新的Windows操作系统,如Windows XP,虽然VB6本身不支持Windows Vista及以上版本。 - **API和库的改进**:包含对Windows API和Microsoft COM组件的更新,以提高开发效率和程序性能。 **...

    win7梦幻桌面

    Windows 7是微软公司于2009年发布的一款个人计算机操作系统,它是Windows Vista的后续版本,提供了许多改进和新功能。Windows 7以其稳定性和用户友好性而受到广泛欢迎,尽管现在已经有了更新的操作系统版本,但仍然...

Global site tag (gtag.js) - Google Analytics