安全观察Windows Vista 中的服务增强

Wole Moses

因为曾经出现过一些破坏 Windows 系统、瘫痪 IT 部门的高级病毒和蠕虫,给企业和消费者带来了巨大损失,所以 Microsoft 在 2002 年初推出了“可信赖计算计划”。在该计划中,Microsoft 发布了

关于其安全跟踪记录的过错系统,迅速修正了发展目标,开始把开发软件的重点由提高功能和可用性更改为优先保证软件的安全性和完整性。在 2003 年 8 月爆发的 Blaster 蠕虫进一步推动了安全计划的发展。(有关 Blaster 的信息,请参阅侧栏“克隆攻击”。)

可信赖计算计划的宗旨是:“设计安全”、“默认安全”和“部署安全”,分别表示:编写安全的代码;确保 Windows® 的组件在默认情况下是最安全的;创建工具和规定性指导以帮助企业和消费者确保其 Windows 基础结构的安全性。

总体而言,“可信赖计算计划”极大地增强了安全性,但不幸的是,因为 Windows XP 比该计划早两年发布,所以 Windows XP 从来没有充分享受该计划的优势。(在 Windows XP Service Pack 2,也就是 Windows XP SP2 中,虽然在开发时作出了很大努力,但 Windows XP 还是无法完全满足该计划的要求。)

因此,Windows Vista™ 是第一款完全兼容“可信赖计算”的 Microsoft 桌面操作系统。“Windows Vista 服务增强”是“可信赖计算默认安全”原则的一种特定实现(参见图 1),它是一种重要的新功能,旨在防止非法的服务行为,现在很多恶意软件正是通过这些行为来执行的。“服务增强”使 Microsoft 在更改 Windows 服务的默认行为和安全配置文件上取得了巨大进步。

Figure 1 默认安全:Windows 服务

功能 说明 结果
最低权限 Windows Vista 服务配置为以所需的最低权限运行。 Windows Vista 减少了可用于 Windows 服务的默认安全权限,降低了恶意软件的潜在威胁。
服务隔离 服务 SID 使服务可在低权限的帐户中运行。 Windows Vista 根据服务 SID 限制了对资源的访问,因此可防止恶意软件。
受限网络访问 所有 Windows Vista 服务中都实施了现有的网络限制。 Windows Vista 降低了恶意软件使用服务执行非法网络活动的可能性。
会话 0 隔离 只有服务才可在会话 0 中运行。 因为 Windows Vista 中应用程序和服务在不同的会话中运行,所以恶意应用程序难以再使用基于消息的攻击来控制权限较高的服务。

风险服务

Windows 服务(过去称为 NT 服务),是长时间运行在其自身的 Windows 会话中的可执行应用程序。可以在启动计算机时自动开始服务,通常也可以在不显示任何用户界面的情况下暂停和重启服务,还可以在特定帐户(该帐户不同于登录用户或默认计算机帐户)的安全上下文中运行服务。因此,Windows 服务会给某些特定应用程序的开发人员和需要使用这些应用程序的最终用户带来很大的便利。但正是因为其具有强大的功能和灵活性,Windows 服务以前非常容易被非法利用,原因如下。

首先,过去往往只有拥有较高权限的 Windows 帐户(例如“本地系统”帐户)才可以运行 Windows 服务。如果在“本地系统”帐户中所运行的服务被恶意软件破坏,那么该恶意软件很可能就可以在该系统上为所欲为。以 Windows XP 中的远程过程调用 (RPC) 服务为例。在 Windows XP SP2 之前,RPC 服务在“本地系统”帐户下运行,这使得 Blaster、Welchia 和其他蠕虫可利用 RPC 漏洞来执行管理员任务。

其次,很多服务都是面向网络的,这样恶意软件就可以从网络上建立入站连接,从而对这些服务加以利用,而且被感染的服务也可能建立出站连接,从而感染其他系统,或者执行转发所监控的击键等其他违法行为。现在的大多数蠕虫和恶意软件都是通过某种网络连接的方式进行传播的。

最后,服务通常是长时间运行的,它们往往从系统启动时就开始运行,一直到系统关闭时才停止。对恶意软件编写者而言,这是一个好消息。因为只要系统还在运行,他们就可以寻找服务的漏洞,这使得恶意软件具有充足的时间来从事一些邪恶的活动。

克隆攻击

这可以被视为规模最大的攻击。如果一切按计划进行,攻击程序很快就可控制世界上数十万个 Windows 系统,并向这些系统发送任何指令,然后就可轻松地指挥这些系统执行它的每一条命令。

攻击程序所采用的攻击手段持续时间长,而且难以发现,因此它可秘密地搜索某些计算机系统,查找比较容易侵入的入口点。不过攻击程序通常很快就会找到入口点,因为它很清楚如何利用未经修补的系统上所存在的漏洞。

这样的漏洞往往是灾难性的,因为只要成功利用了该漏洞,攻击程序就可以获得系统的完全管理访问权限。它不仅仅是控制了所有帐户,而且还操纵了 Windows 中功能最强大的管理帐户。这样该攻击程序的行为就变得不可阻挡。

经过一段时间的试探后,攻击程序在未经修补且存在漏洞的机器上测试了自己的恶意代码,随后它就开始运行了!这样攻击程序很容易就获得了计算机的所有权限。于是它就会利用管理访问权限强制计算机下载并安装特洛伊木马代码,修改注册表,然后重新启动,这样被感染的系统就成为了攻击程序的傀儡,开始执行其下达的命令。修改注册表后,每次重新启动计算机时都会运行恶意软件。

现在攻击程序的意图很清楚了。任何被感染的机器都会搜索网络上所有其他机器的特定网络端口。如果该网络端口处于打开状态,且这台机器存在漏洞,攻击程序就会把特洛伊木马代码下载并安装到这台新机器上。和之前被感染的机器一样,这台新机器的注册表也会被修改。这样的攻击行为会不断的重复,于是急剧膨胀的克隆攻击大军就形成了。到最后,世界上数千个 Windows 系统成为了攻击程序的恶意克隆大军中的一员,这些系统无法响应其他系统发来的任何命令。

攻击程序似乎并不满足,它随后又盯上了 Microsoft Windows Update 站点,并且命令其克隆大军在 2003 年 8 月 15 日发动了“拒绝服务攻击”,试图阻止世界上所有的计算机下载漏洞修补程序,但有趣的是,该修补程序在数月前就可以下载了。

现在您应该知道了,刚才描述的就是在 2003 年 8 月 MS Blaster 蠕虫的大爆发,这种蠕虫当时攻击了世界各地的 Windows 计算机。Blaster 无疑是对 Windows 最严重的攻击手段之一,它造成了数十亿美元的损失。具有讽刺意味的是,尽管 MS Blaster 对被感染的机器有巨大的破坏作用,但是其编写过程却十分简单。

Blaster 的工作方式

Blaster 和其变种是利用了 Windows RPC 服务中的漏洞来执行缓冲区溢出。成功利用该漏洞的攻击者,可以在被感染的系统上使用“本地系统”权限运行代码,从而能够在系统上执行任何操作,如安装程序,查看、更改或删除数据,以及创建具有完全权限的新帐户。

例如,Blaster 蠕虫会自动扫描网络,查找 TCP 端口 135 打开的计算机。一旦锁定受害者,Blaster 就会尝试利用 RPC 漏洞。如果成功利用了该漏洞,它就会连接到受害者计算机上的端口 4444,然后命令这台计算机启动简单文件传输协议 (TFTP),并且从被感染的系统上下载名为 MSBLAST.EXE 的蠕虫副本。(TFTP 是 Windows 2000、Windows XP 和 Windows Server 2003 操作系统的一部分。)攻击系统随后会命令新感染的计算机启动 MSBLAST.EXE,这样受害者计算机就变成了新的攻击者。Blaster 还会在 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft \Windows\CurrentVersion\Run 注册表项中写入代码,这样每次启动计算机时都会运行该蠕虫。

服务增强

Windows Vista 通过下列四种方法增强了服务的安全性:以最低权限运行服务、服务隔离、受限网络访问以及会话 0 隔离。下面详细讨论这四种方法。

以最低权限运行 过去有很多 Windows 服务都在“本地系统”帐户的上下文中运行,而该帐户正是 Windows 中权限最高的帐户。“本地系统”帐户拥有大量的用户权限和特权,例如可以访问几乎所有的系统对象或另一个用户的配置文件、模拟用户、打开敏感注册表项(如 HKLM\SECURITY)以及把计算机的凭据提供给远程服务器。因为恶意软件编写者渴望拥有访问和控制 Windows 的最高权限,所以任何在“本地系统安全”上下文中运行的服务都会成为绝佳的攻击目标。

事实上,对于很多被配置为在“本地系统”帐户下运行的 Windows 服务,只需要拥有“本地系统”帐户的少量权限就可运行。而不幸的是,由于 Windows XP 和之前的 Windows 版本以“全有或全无”的方式运行,您无法为这些服务挑选所需的权限。因此,最终很多 Windows 服务不得不通过大量自己不需要的安全权限运行。

为了解决这个问题,“Windows Vista 服务增强”把最低权限的概念引入到服务配置中。最低权限可以使服务只需少量必要的权限就可运行,而不是强制它们必须通过用于登录的帐户所分配的全部默认权限运行。

例如,某个服务需要作为操作系统的一部分才可运行,但是这个服务无需创建安全令牌。使用最低权限后,您就可以删除令牌创建权限了。这样就减轻了攻击者今后利用该服务的漏洞进行攻击所造成的破坏。开发人员可使用 SC.exe(参见图 2)等命令行工具或编程方法来定义和指定其特定服务所需的权限。Microsoft 应用现有的最低权限降低了所有预安装的 Windows Vista 服务的默认权限。

图 2 SC 命令选项定义 Windows Vista 服务权限

图 2** SC 命令选项定义 Windows Vista 服务权限 **(单击该图像获得较大视图)

服务隔离 在 Windows Vista 之前的 Windows 版本中,服务需要访问特权对象(如敏感注册表项或文件)时,会通过下列三种方法来进行访问:使用“本地系统”帐户访问对象;降低注册表项或文件的安全性,从而启用权限较低的服务帐户来进行访问;或者专门为该服务创建一个帐户,并只允许通过该帐户访问对象。

虽然这三种方法都可以访问特权对象,但是它们都有其自身的基本问题。前两种方法都存在内在的风险,而最后一种方法必须手动管理新帐户的密码,这是非常不方便的。

例如,假设某防病毒程序安装了一个服务,而且这个服务需要访问与防病毒软件相关的病毒签名文件和注册表项等敏感系统对象。如果防病毒服务配置为使用“本地系统”帐户或其他任何拥有相关权限的内置安全帐户来访问它的对象,那么该帐户所使用的 Windows 服务一旦被恶意软件感染,此恶意软件就可以访问和修改防病毒签名文件、改变影响防病毒软件工作的注册表设置,或者只关闭所有的防病毒服务。实际上,今天的恶意软件正是利用某些尖端技术来隐藏自己并进行破坏。

Windows Vista 采用服务隔离来解决这些安全性和管理性的问题,此方法使用包含服务安全 ID (SID) 的访问控制项来保证资源(例如文件或注册表项访问)的安全,这样服务就可保留其独占使用的对象。因此,示例中描述的防病毒服务能够通过低权限的帐户运行,但是它同样可访问敏感的签名文件或注册表项。要访问这些敏感内容,在低权限的帐户中所运行的防病毒服务需要获得由 Windows Vista 分配的 SID。分配 SID 后,该防病毒程序就可修改其文件系统和注册表对象的访问控制列表 (ACL),以获取该防病毒服务的独占访问权。

下面是另一个示例。早在 2003 年,Welchia 蠕虫就开始利用 RPC 漏洞将自己写入 %System%\Wins\Dllhost.exe 中。它还向 HKLM\SYSTEM\CurrentControlSet\Services 中添加项,从而把自己的服务安装到被感染的 Windows 系统里。但是现在 Windows Vista 限制了对特定的相关服务位置的访问,并且使用低权限的帐户为这些服务授予访问权限,这样就有效防止了 Welchia 的肆虐。

受限网络访问 Windows Vista 以 Windows XP SP2 的防火墙为基础构建了新的防火墙。主要的新功能包括出站过滤和 IPsec 集成。新的防火墙同样集成了“Windows Vista 服务增强”,这使得恶意软件更加难以利用 Windows 服务执行某些非法的网络活动。

在 Windows Vista 防火墙中,Windows 服务都分配有网络防火墙策略,这些策略限制了服务行为。例如,可以将“无网络访问”限制分配给“即插即用”等从来不需要通过网络端口通信的服务。该限制就位后,以这些特定服务为目标的攻击程序再也无法通过某些基于网络的途径来攻击这类服务。任何试图通过该受限服务的通信(无论是入站通信还是出站通信)都会被防火墙阻止。可以将其他需要合法访问网络的服务配置为仅使用某些特定端口。开发人员可利用该功能限制其服务的网络访问。

网络限制与“服务增强”相结合,可有效防御基于潜在服务的攻击,与以前的 Windows 版本相比,这是一个巨大的进步。以前,Windows 无法决定可通过网络进行通信的服务、方式以及位置。但是现在通过 Windows Vista 针对 RPC 服务的防火墙网络限制,可以防止 Blaster、Sasser 或 Welchia 等病毒使用被感染的服务与其他机器通信。

会话 0 隔离 Windows XP 中的“快速用户切换”把每个用户放置在不同的 Windows 会话中,这样多个用户可同时登录系统。会话 0 是在系统启动时创建的,还可根据需要添加更多的会话。服务总是在会话 0 中运行,而且在 Windows Vista 之前的 Windows 版本中,用户应用程序也可以在会话 0 中运行。但是,在同一个会话中运行用户应用程序和 Windows 服务会给系统安全带来潜在的安全风险,因为此时服务以提升的权限运行,因此会成为那些正在伺机提升自身权限级别的恶意软件的目标。

Windows Vista 通过下列方法降低这些安全风险:只允许服务在会话 0 中运行、在其他会话中运行应用程序以及把会话 0 设置为非交互式会话(表示服务不能创建对话框、提示等最终用户可访问的用户界面)。不过也正是因为这些更改,会话 0 隔离会影响不同开发人员所开发的 Windows 服务或驱动程序之间的应用程序兼容性。

总结

Windows Vista 是 Microsoft 第一款全面的“可信赖计算”桌面操作系统版本,该版本的功能显著增强,在保护 Windows 用户方面取得了较大的成功。当然,计算机安全也在不断发展,而且毫无疑问的是,恶意软件编写者们会继续探寻新的方法来攻击 Windows。但是 Windows Vista 中新的“服务增强”功能强化了默认的安全设置,减少了易受攻击的范围,使得安全性显著提高。有关这些重大改进的详细信息,请参阅 microsoft.com/whdc/system/vista/Vista_Services.mspx。

Wole Moses 是一位 Microsoft 地区 Windows 经理,同时也是一位已经在 Microsoft 工作了八年的专家。Wole 目前在土耳其的伊斯坦布尔工作,与中东和非洲地区数量最多的新市场客户合作,帮助他们构想和设计基于 Microsoft 的解决方案,以优化他们的 IT 基础结构,同时在最大程度上保证其安全性。

© 2008 Microsoft Corporation 与 CMP Media, LLC.保留所有权利;不得对全文或部分内容进行复制.