安全观察跳岛:供应商 Swag 的魅力

Jesper M. Johansson

跳岛技术已存在多年,它会通过薄弱环节渗入网络,然后在网络中的各系统间跳转。并且,它的形式在不断翻新。在当前注重安全的 IT 环境中,人通常是最薄弱的环节,恶意用户

会寻找各种方法来用此达到自己的目的(思想仿冒和其他形式的社会交往)。这种强势组合对网络具有致命危害。

在利用人性因素做手脚的案例中,我很欣赏 Secure Network Technologies 公司的 Steve Stasiukonis 在为客户做渗透测试期间完成的案例。他将 USB 闪存驱动器(每个驱动器上均安装有特洛伊木马程序)放在客户的停车场。当员工早上来上班时,他们非常兴奋地发现停车场周围有免费小工具。员工们急切地捡起 USB 驱动器并将它们插入他们遇到的第一台计算机:自己的工作站。

也许某些员工比较聪明没有理睬这些 USB 驱动器,并且可能有些 USB 驱动器被丢弃了,但是,只要有一个用户使用驱动器感染了自己的系统,就会提供一个进入网络的网关。当然,Stasiukonis 仅是做个试验,但已有真正的罪犯使用此技术来渗透大型企业的网络。

现在,USB 闪存驱动器随处可见。几乎在所有会议上,某些供应商都像发糖果一样分发它们。这些驱动器可能容量不大,但要控制整个网络也不需要多大存储空间!在这个包含两部分内容的系列文章中,我将研究此类攻击并为您提供一些有助于降低风险的方法。在本月的内容中,我将介绍 USB 闪存驱动器的具体作用以及您如何控制它们。在《TechNet 杂志》的下月刊中,我将介绍如何将攻击限制在网络的单个系统或一小部分系统中。

攻击的技术细节实际上非常简单。一开始是在单个计算机中插入已受到感染的 USB 闪存驱动器。随后发生的事情则取决于该驱动器上安装的内容以及(当然)用户有多大的漏洞。

起源

讲台上放着无人操作的便捷式计算机。演讲者在开始演示前正忙于与观众拉关系。便捷式计算机已锁定,但实际意义不大。攻击者走向讲台并稍事逗留,看似他只是在等待演讲者返回。由于这些讲台是用来隐藏不宜外露的事物(如计算机),因此 USB 端口和攻击者的手就逃过了人们的视线范围。一旦 USB 闪存驱动器插入计算机中,只需几秒钟即可完成攻击。

这种攻击还有许多花样。例如,我过去常常每周都要到世界各地演讲,几乎每次结束后,都会有许多人要求复制我的幻灯片。我的反应始终是递给他们一张名片并要求他们给我发电子邮件。当他们所有人都朝我举着一个 USB 闪存驱动器时,我这么做的原因是什么呢?因为我非常了解类似 USB Hacksaw 和 Switchblade 这样的工具。(若不熟悉它们,请查阅以下网址:wiki.hak5.org。)

这些工具基本上都可以使任何人非常轻松地利用那些 USB 端口处于未受保护状态的人们。例如,Switchblade 可转储以下数据:

  • 系统信息
  • 所有网络服务
  • 正在执行侦听的端口列表
  • 计算机上的 Microsoft 产品的所有产品密钥
  • 本地密码数据库
  • 计算机使用的所有无线网络的密码
  • 当前登录用户存储在计算机上的所有网络密码
  • Internet Explorer®、Messenger、Firefox 和电子邮件密码
  • 本地安全机构 (LSA) 机密信息,包含明文形式的所有服务帐户密码
  • 已安装补丁的列表
  • 最近的浏览历史记录

所有这些信息会存储在闪存驱动器的一个日志文件中,仅耗时 45 秒。

Hacksaw 是一个稍经修改的版本;它会在计算机上安装一个特洛伊木马,该木马会监视所有 USB 闪存驱动器插入事件。然后,它会通过电子邮件将随后插入计算机的所有闪存驱动器中的所有文档发送给攻击者。

到目前为止,我讨论的工具均使用 U3 (u3.com) 技术,此技术旨在使用户能通过闪存驱动器随身携带程序。简单地说,启用 U3 的闪存驱动器会谎报自己的身份。它告诉 OS 自己实际上是插有闪存驱动器和 CD 的 USB 集线器。默认情况下,Windows Vista® 之前的 Windows® 版本均会自动运行 CD 而非 USB 驱动器上的 autorun.inf 文件中指定的程序。通过谎报,启用 U3 的 USB 闪存驱动器欺骗 OS 自动运行名为 U3 启动程序的程序。U3 启动程序可随之启动程序、提供菜单或执行您可对计算机执行的非常多的操作。

所有漏洞检测工具均是将启动程序替换为漏洞检测代码。一旦将闪存驱动器插入 Windows XP 系统中,漏洞检测工具就开始自动运行。在 Windows Vista 上,“自动播放”决策流程工作原理有所不同。“自动运行”实际是在可移动设备(如 CD)上启用的。这意味着在插入设备后,会执行某些类型的操作。默认情况下,会出现“自动播放”对话框(如图 1 所示)。

图 1 用户插入带图片的可移动盘后显示默认自动播放对话框

图 1** 用户插入带图片的可移动盘后显示默认自动播放对话框 **

注意:图 1 中的对话框具有 Always do this for pictures(始终针对图片执行此操作)选项。它会设置“自动播放”选项,可在“控制面板”中配置此选项(如图 2 所示)。

图 2 Windows Vista 的自动播放配置

图 2** Windows Vista 的自动播放配置 **(单击该图像获得较大视图)

“自动播放”配置对“软件和游戏”尤其感兴趣。根据定义,它表示可移动驱动器具有指定执行某些程序的 autorun.inf 文件。图 2 中与“软件和游戏”相关的设置存储在以下注册表项中:

Hive:    HKEY_CURRENT_USER
Key:    \Software\Microsoft\Windows\CurrentVersion\Explorer\AutoplayHandlers\
UserChosenExecuteHandlers\AutorunINFLegacyArrival 
Value: (Default)
Data:
MSAutoRun – automatically executes the program specified in the autorun.inf file
   
MSPromptEachTime – prompts the user, using strings specified in the autorun.inf file, if available

由于不必拥有管理员权限即可修改这些设置,用户可将它们设置为所希望的任意设置,包括自动运行他们在停车场发现的驱动器上的任意恶意软件。事实上,选中“自动播放”对话框中的适当框即可。

管理网络中的自动播放

作为管理员,可使用多种方法来管理网络中的“自动播放”。首先,通过修改 NoDriveTypeAutoRun 设置(它控制针对哪些驱动器类型启用“自动播放”),可阻止用户启用可移动媒体和 CD 上的“自动播放”。Windows XP 默认将 NoDriveTypeAutoRun 设置为 0x95,表示禁用未知驱动器类型、网络驱动器以及可移动设备上的“自动播放”。自 Windows XP SP2 起,NoDriveTypeAutoRun 设置均默认配置为 0x91。它启用可移动存储设备上的“自动播放”。利用组策略,可使用 User Configuration(用户配置)\Administrative Templates(管理模板)\Windows Components(Windows 组件)\AutoPlay Polices(自动播放策略)下的一个设置来管理 NoDriveTypeAutoRun 设置。启用 Turn off AutoPlay setting and selecting CD-ROM and Removable Drives(关闭自动播放设置并选择 CD-ROM 和可移动驱动器)可禁用这两种驱动器上的“自动播放”。

结果是用户无法获得图 1 中的“自动播放”对话框。实际上,在用户插入驱动器后没有任何响应。然而,它可能并非完美的解决方案,因为它会给不知如何访问驱动器上必要信息的用户带来麻烦。

您想要做的是控制自动播放哪些类型的内容。 Windows Vista 可在某种程度上实现此功能,因为此 OS 对于自动运行的软件具有两种有效的控制级别。组策略中的另一控制(如图 3 所示)可禁止自动播放使用 autorun.inf 文件的软件,同时完整保留 Windows Vista 自动播放行为的提醒。

图 3 使用组策略禁用 autorun.inf 文件

图 3** 使用组策略禁用 autorun.inf 文件 **(单击该图像获得较大视图)

“自动播放”的决策流程有点复杂,最好使用流程图来表达。图 4 描述了在确定是否自动执行可移动媒体上的文件时使用的决策流程。

图 4 自动播放决策流程

图 4** 自动播放决策流程 **(单击该图像获得较大视图)

其他起源

当然,这只是可用于通过 USB 闪存驱动器侵害计算机的工具中的几种。所有类型的工具均可在此情景中使用,如转储当前登录用户的 Windows NT® 密码哈希的工具(参见 microsoft.com/technet/community/columns/secmgmt/sm1005.mspx)。

许多 USB 控制器实际均是直接内存访问 (DMA) 设备。这意味着它们可绕过操作系统,直接读写计算机上的内存。绕过 OS 就绕过了它提供的安全控制 — 现在,您可完全自由地访问硬件。这会使 OS 对设备的控制完全无效。我不知道是否有黑客工具现在正使用此技术,但我推测可能性极大。

找出用户/可移动设备组合漏洞的另一方法是提供诱人的选项。例如,有多少用户会点击图 5 中的对话框?不一定所有人都会,但可能人数也不少。关键是编造一个非常诱人以致用户无法拒绝的对话框是一个非常琐碎的任务。

图 5 有多少用户会受此诱惑?

图 5** 有多少用户会受此诱惑? **

设备封锁

作为 Windows Vista 中的新功能,组策略现在具有用于管理设备安装的一组策略(参见图 6)。如图所示,若驱动程序指出新设备为可移动设备,管理员可阻止安装所有这些设备。然而,如果驱动程序表明它们并非可移动设备,此策略将无效。因此,可通过使用自定义驱动程序来绕开此策略。

图 6 Windows Vista 设备安装策略

图 6** Windows Vista 设备安装策略 **(单击该图像获得较大视图)

如需更精细的控制,管理员可针对特定设备安装程序类应用各种策略。然而,这要求您了解希望封锁(或允许)的特定设备类的 GUID,致使此方法非常难以管理。

最低权限非常重要

暂时不讨论涉及 DMA 的情景,我讨论过的攻击以及对策的成功与否均取决于使用计算机的用户的权限。如果用户是标准用户,则利用漏洞造成的损坏比较有限。它仍可盗窃用户的数据以及用户有权访问的所有事物。然而,攻击不可能影响整个网络。

但是,如果被利用的用户是管理员,则后果可能相当严重。最糟情景是用户为域管理员,并且接管整个网络毫不费力。例如,攻击者可从内存提取用户的密码哈希。登录时,系统将哈希缓存在 LSA 进程空间中,以便用它来以用户身份直接访问网络资源。具有管理员权限的攻击者可提取此哈希并用它访问所有网络资源。换句话说,如果用户是域管理员,则会危及整个域的安全。

由此可引申至依赖关系这一主题。到此为止,我概述了针对工作站的一种特定攻击。然而,我尚未讨论攻击可能在网络范围内造成何种影响。在下月的专栏中,我将探讨依赖关系的概念,以展示它们在总体上对环境的意义,更重要的是 — 您如何来强化这些依赖关系。

Jesper M. Johansson 是解决软件安全问题的安全工程师,以及《TechNet 杂志》的特约编辑。他拥有 MIS 博士学历,并且具有 20 多年安全方面的经验。

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