导语:本文的内容描述了一种方法,通过该方法,攻击者可以在拥有域管理级别的权限的5分钟后,就可以持续的对Active Directory进行管理访问。
本文的内容描述了一种方法,通过该方法,攻击者可以在拥有域管理级别的权限的5分钟后,就可以持续的对Active Directory进行管理访问。
我在拉斯维加斯举办的DEF CON 23(2015年)峰会上介绍了这种AD权限持久的方法。
SID历史记录是支持迁移方案的属性。每个用户帐户都有一个关联的安全标识符(SID),用于跟踪安全主体和连接到资源时的帐户及访问权限。SID历史记录允许另一个帐户的访问被有效的克隆到另一个帐户。这是非常有用的,其目的是确保用户在从一个域移动(迁移)到另一个域时能保留原有的访问权限。由于在创建新帐户时用户的SID会发生更改,旧的SID需要映射到新的帐户。当域A中的用户迁移到域B时,将在DomainB中创建新的用户帐户,并将DomainA用户的SID添加到DomainB的用户帐户的SID历史记录属性中。这样就可以确保DomainB用户仍可以访问DomainA中的资源。
其中有趣的部分是SID历史在同一个域中的作用与SID在跨越多个域的同一个林中的是相同的,这意味着DomainA中的常规用户帐户可以包含DomainA 的SID,如果DomainA 的SID用于特权帐户或组,就可以授予常规用户帐户域管理员权限,而不需要成为域管理员组的成员。
注意:域中的常规用户可以在其Active Directory林中的其他域中的SID历史记录中包含企业管理员SID,从而将用户帐户的权限“升级”为域或林的管理员权限,这对林中的所有域都有效。如果你没有启用SID筛选(也称为隔离区)的林信任,则可以从另一个林中注入SID,并在进行身份验证后将其用于访问评估时将其添加到用户令牌。
Mimikatz支持SID历史注入到任何用户帐户(需要域管理员或等效的权限)。在这种情况下,攻击者创建用户帐户“bobafett”,并将该域的默认管理员帐户“ADSAdministrator”(RID 500)添加到帐户的SID历史记录属性中。
当bobafett帐户登录时,与该帐户相关联的所有SID都将添加到用于确定对资源的访问权限的用户令牌中。与帐户相关联的SID是用户的SID,用户是其成员的组SID(包括组成员的组)和SID历史记录中包含的SID。
使用PowerShell Active Directory cmdlet“Get-ADUser”,我们可以看到没有分配给bobafett帐户的组成员身份,尽管它在SIDHistory(ADSAdministrator帐户)中具有其SID。
当bobafett登录时,将对与该帐户相关联的SID进行评估,并根据这些SID来确定访问权限。由于bobafett帐户与ADSAdministrator帐户(RID 500)相关联,因此,bobafett帐户具有ADSAdministrator帐户的所有访问权限,包括域管理员权限。
利用bobafett用户帐户和通过SID历史授予的权限,可以使用PowerShell远程处理从域控制器中提取KRBTGT帐户密码数据。
检测方法
检测SID历史记录帐户提权的最佳方法是枚举所有具有SID历史记录属性的用户的数据,并标记包含同一域*中的SID的用户。如果用户尚未迁移,你可以使用SIDHistory属性中的数据来搜索所有用户。这就是为什么要在迁移完成后清除SID历史记录(并将用户添加到正确的组以获得所需的资源的访问权限)的原因。
PowerShell AD Cmdlet“Get-ADUser”对于检测“同一域的SID历史记录”非常有用:
# Detect Same Domain SID History Import-Module ActiveDirectory [string]$DomainSID = ( (Get-ADDomain).DomainSID.Value ) Get-ADUser -Filter “SIDHistory -Like ‘*'” -Properties SIDHistory | ` Where { $_.SIDHistory -Like “$DomainSID-*” }
下图显示了运行“相同域的SIDHistory”检测PowerShell脚本的结果。请注意,用户的SIDHistory属性中的SID以“500”结尾,默认的域管理员帐户是 Administrators, Domain Admins, Schema Admins 和Enterprise Admins这些用户组的成员。
*注意:在多个域的林中,建议在林中的每个域以及受信任的域或林中查找管理组SID(和成员帐户SID)。
通过域控制器事件进行检测
使用以下事件ID进行日志记录可以检测出成功修改或尝试修改SIDHistory属性却失败的操作:
在帐户管理下配置子类别审核,并在域控制器上的“审核用户帐户管理”(成功)中选择以下事件ID:
· 4765:SID历史记录被添加到一个帐户。
· 4766:尝试将SID历史记录添加到帐户的失败事件。