KB2871997 安全更新详解:保护凭证与强化认证机制

本文详细解析了微软KB2871997安全更新的技术内容,包括受保护用户组的Kerberos强制认证、远程桌面受限管理员模式的支持、LSASS凭证清理机制以及新的已知SID引入,旨在提升Windows系统的安全防护能力。

KB2871997 概述

微软近期为 Windows 7、Windows 8、Windows Server 2008R2 和 Windows Server 2012 发布了 KB2871997。本文将概述该更新的功能变更、影响,以及一些可与更新配合使用的重要配置更改,以进一步提升系统安全性。

注意:自 KB2871997 发布以来,微软还发布了其他 KB 更新以完善凭证保护(包括错误修复)。请确保安装此处列出的所有 KB:https://support.microsoft.com/en-us/kb/2871997。

1. 对受保护用户组的支持

“受保护用户”是添加到 Windows Server 2012R2 域的安全组。当用户帐户加入“受保护用户”组时,该帐户将受到多项额外的安全限制:

  • 受保护用户组的成员只能使用 Kerberos 协议登录。帐户无法使用 NTLM、摘要认证或 CredSSP 进行身份验证。在运行 Windows 8 的设备上,密码不会被缓存,因此当帐户是受保护用户组的成员时,使用这些安全支持提供程序(SSP)中的任何一种的设备将无法向域进行身份验证。
  • Kerberos 协议在预认证过程中不会使用较弱的 DES 或 RC4 加密类型。这意味着域必须配置为至少支持 AES 密码套件。
  • 用户帐户无法通过 Kerberos 约束或非约束委派进行委派。这意味着如果用户是受保护用户组的成员,先前到其他系统的连接可能会失败。

简而言之,此设置阻止了除 Kerberos 认证之外的所有方式,并对所使用的 Kerberos 认证进行了强化(强制使用 AES 加密)。我们建议您将高价值帐户(如服务器管理员使用的帐户)放入“受保护用户”组以强化这些帐户。

由于“受保护用户”仅限于 Kerberos 认证,因此它们与“认证策略和隔离区”(为 Windows 2012R2 功能级别域引入的新功能)配合良好。认证策略和隔离区允许您将用户和计算机置于隔离区中并对其应用策略(如登录限制)。有关“认证策略和隔离区”的更多信息,请参见:http://technet.microsoft.com/en-us/library/dn486813.aspx。

2. 远程桌面客户端对受限管理员 RDP 模式的支持

微软减少横向移动(或传递哈希)攻击风险的官方指南的一部分是使用“网络登录”(一种特定的 Windows 登录类型)向服务器进行身份验证。为什么?因为当用户使用“网络登录”向远程服务器进行身份验证时,用户的凭证永远不会发送到远程服务器。这意味着即使远程服务器被入侵,用户的凭证也无法被捕获。

微软提供的几乎所有管理工具都使用“网络登录”进行身份验证。这包括但不限于:PowerShell 远程处理、WinRM、PSExec、WMI 等。在此更新之前,远程桌面要求用户将其明文密码发送到远程服务器(在线加密但在远程服务器上解密),以便他们可以登录进行交互式会话。通过此更新,现在可以在不向远程服务器发送凭证的情况下使用远程桌面。

请注意,此更新是对远程桌面客户端而非远程桌面服务器的向后移植更改。这意味着您可以从更新后的系统进行受限管理员连接,但只能连接到 Windows 8.1/2012R2 系统。

只有管理员可以使用“受限管理员”模式;“远程桌面用户”组的成员不允许使用受限管理员模式。由于用户的凭证未发送到远程系统,用户无法从远程系统向其他系统进行认证连接。由于连接到系统的用户是管理员(并且可以按设计模拟系统上的其他用户),我们使受限管理员连接自动模拟计算机帐户进行远程连接。这允许受限管理员访问网络资源(如共享),只要计算机帐户具有访问权限。

微软建议尽可能使用受限管理员,因为这遵循“最小权限”原则。如果您正在向服务器(即使是高度信任的服务器)进行身份验证,并且不需要使用您的特权帐户进行“双跳”,建议您使用受限管理员。一个常见且将极大受益于受限管理员的场景是“帮助台场景”,其中帮助台代理使用特权帐户通过远程桌面修复用户工作站。

可以通过以下方式启动远程桌面来使用受限管理员:

1
Mstsc.exe /restrictedadmin

3. LSA 凭证清理和其他更改

a. 注销后移除凭证

如微软的传递哈希白皮书中所述,每当用户登录时,Windows 都会在 LSASS 进程中缓存用户的凭证。这包括用户的明文密码、用户的 NT/LM 密码哈希以及用户的 Kerberos TGT/会话密钥。用户注销后,凭证应从内存中清除。在此更新之前,情况并非总是如此。现在修复了阻止凭证被清除的问题,凭证将在用户注销后始终从内存中清除。

b. 新的已知 SID

此更新增加了对两个新的已知 SID 的支持:

  • LOCAL_ACCOUNT – 任何本地帐户都将继承此 SID
  • LOCAL_ACCOUNT_AND_MEMBER_OF_ADMINISTRATORS_GROUP – 任何是管理员组成员的本地帐户都将继承此 SID

引入这些 SID 是为了更轻松地防止本地帐户通过网络被使用(攻击者在执行传递哈希攻击时通常这样做)。管理员可以使用上述 SID 配置组策略设置“拒绝从网络访问此计算机”和“拒绝通过远程桌面服务登录”,以防止攻击者通过网络使用本地帐户。有关这些设置的更多信息(和详细说明)可以在微软的传递哈希白皮书中找到。

c. 从 LSASS 中移除明文凭证

如前所述,LSASS 存储的凭证之一是用户的明文密码。此更新阻止了 LSASS 中除 WDigest 之外的每个微软 SSP 存储用户的明文密码。WDigest 仍然存储用户的明文密码,因为它没有用户的密码就无法运行(微软不想通过发布更新来禁用它而破坏现有的客户设置)。微软建议用户检查其域控制器日志中的摘要认证登录(下面提供了说明);如果未使用摘要认证,客户可以应用 KB 文章中的 FixIt 来禁用 WDigest。这样做将从 LSASS 内存中消除所有明文凭证。

重要的是要认识到,虽然明文凭证将不再被存储,但 NT 哈希和 Kerberos TGT/会话密钥仍将被存储,并被视为凭证(如果没有存储在内存中的等效凭证,单点登录将不可能)。此外,即使明文凭证不再存储在内存中,攻击者也可以使用其他技术(如键盘记录器)来恢复明文密码。从内存中消除明文密码是有用的并降低了风险,但不能保证阻止攻击者。

识别 WDigest 使用

WDigest 的使用可以在两个地方识别:您的域控制器日志或您的服务器日志(必须检查所有服务器)。

  1. 域控制器安全事件日志:事件 ID 4776

    1
    2
    3
    4
    
    认证包:WDigest
    登录帐户:Administrator
    源工作站:WIN2K12R2CLIENT
    错误代码:0x0
    
  2. 服务器安全事件日志:事件 ID 4624(必须在所有服务器上检查)

     1
     2
     3
     4
     5
     6
     7
     8
     9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    
    一个帐户已成功登录。
    主题:
        安全 ID:NULL SID
        帐户名称:-
        帐户域:-
        登录 ID:0x0
    登录类型:3
    模拟级别:模拟
    新登录:
        安全 ID:TESTLAB\administrator
        帐户名称:Administrator
        帐户域:TESTLAB
        登录 ID:0x2D8B63
        登录 GUID:{00000000-0000-0000-0000-000000000000}
    进程信息:
        进程 ID:0x0
        进程名称:-
    网络信息:
        工作站名称:-
        源网络地址:::1
        源端口:57514
    详细认证信息:
        登录进程:WDIGEST
        认证包:WDigest
        中转服务:-
        包名称(仅 NTLM):-
        密钥长度:0
    
  • Joe Bialek, MSRC 工程团队
comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计