摘要
CVE-2021-42278 解决了安全绕过漏洞,使潜在攻击者能够使用计算机帐户 sAMAccountName 欺骗来模拟域控制器。
本文提供了有关 2021 年 11 月 9 日及更高版本发布的 Windows 更新(如CVE-2021-42278所述)的 Active Directory 安全帐户管理器 (SAM) 强化更改的其他详细信息和常见问题部分。
Active Directory 验证检查
安装 CVE-2021-42278后,Active Directory 将针对计算机帐户没有管理员权限的用户创建或修改的计算机帐户的 sAMAccountName 和 UserAccountControl 属性执行下面列出的验证检查。
-
用户和计算机帐户的 sAMAccountType 验证
-
ObjectClass=计算机 (帐户的) 或子类必须具有用户或UF_WORKSTATION_TRUST_ACCOUNT的 UserAccountControl UF_SERVER_TRUST_ACCOUNT
-
ObjectClass=User 必须具有 UAC 标志UF_NORMAL_ACCOUNT或UF_INTERDOMAIN_TRUST_ACCOUNT
-
-
计算机帐户的 sAMAccountName 验证
其UserAccountControl属性包含 UF_WORKSTATION_TRUST_ACCOUNT 标志的计算机帐户的sAMAccountName 必须以 $ (美元) 。 如果不满足这些条件,Active Directory 将返回故障代码0x523 ERROR_INVALID_ACCOUNTNAME。 失败的验证记录在系统事件日志中的 Directory-Services-SAM 事件 ID 16991 中。
如果不满足这些条件,Active Directory 将返回一个失败代码ACCESS_DENIED。 失败的验证记录在系统事件日志中的 Directory-Services-SAM 事件 ID 16990 中。
审核事件
对象类和 UserAccountControl 验证失败
当 Object 类和 UserAccountControl 验证失败时,将在系统日志中记录以下事件:
事件日志 |
系统 |
事件类型 |
错误 |
事件源 |
Directory-Services-SAM |
事件 ID |
16990 |
事件文本 |
安全帐户管理器阻止非管理员在此域中创建具有不匹配 objectClass 和 userAccountControl 帐户类型标志的 Active Directory 帐户。 详细信息: 帐户名称:%1%n Account objectClass:%2%n userAccountControl:%3%n 呼叫者地址:%4%n 调用方 SID:%5%n%n |
SAM 帐户名称验证失败
当 SAM 帐户名称验证失败时,以下事件将记录在系统日志中:
事件日志 |
系统 |
事件类型 |
错误 |
事件源 |
Directory-Services-SAM |
事件 ID |
16991 |
事件文本 |
安全帐户管理器阻止非管理员使用无效的 sAMAccountName 创建或重命名计算机帐户。 计算机帐户上的 sAMAccountName 必须以单个尾随 $ 符号结尾。 尝试的 sAMAccountName:%1 建议的 sAMAccountName:%1$ |
成功创建计算机帐户审核事件
以下现有审核事件可用于成功创建计算机帐户:
有关详细信息,请参阅 审核计算机帐户管理。
常见问题
Q1. 此更新如何影响 Active Directory 中的现有对象?
A1. 对于现有对象,当没有管理员权限的用户修改 sAMAccountName 或 UserAccountControl 属性时,会进行验证。
Q2. 什么是 sAMAccountName?
A2. sAMAccountName 是 Active Directory 中所有安全主体的唯一属性,包括用户、组和计算机。 sAMAccountName的名称约束记录在3.1.1.6 发起更新的属性约束中。
Q3. 什么是 sAMAccountType?
A3. 有关详细信息,请阅读以下文档:
有三个可能的 sAMAccountType 值对应于四个可能的 UserAccountcontrol 标志,如下所示:
userAccountControl |
sAMAccountType |
---|---|
UF_NORMAL_ACCOUNT |
SAM_USER_OBJECT |
UF_INTERDOMAIN_TRUST_ACCOUNT |
SAM_TRUST_ACCOUNT |
UF_WORKSTATION_TRUST_ACCOUNT |
SAM_MACHINE_ACCOUNT |
UF_SERVER_TRUST_ACCOUNT |
SAM_MACHINE_ACCOUNT |
Q4. UserAccountControl 的可能值是什么?
A4. 有关详细信息,请阅读以下文档:
Q5. 如何查找环境中已存在的不合规对象?
A5. 管理员可以使用 PowerShell 脚本(如以下示例所示)在目录中搜索现有的不合规帐户。
查找具有不符合 sAMAccountName 的计算机帐户:
Get-ADComputer -LDAPFilter "(samAccountName=*)" |? SamAccountName -NotLike "*$" | select DNSHostName, Name, SamAccountName |
查找具有不合规 UserAccountControl sAMAccountType 的计算机帐户:
Get-ADComputer -LDAPFilter "UserAccountControl:1.2.840.113556.1.4.803:=512” |