• DCSync


    0x01 概述

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

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

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

    0x02 用DCSync导出域内所有用户Hash

    利用条件:获得以下任一的权限

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

    privilege::debug

    #导出指定用户的信息(包括哈希)
    lsadump::dcsync /domain:0day.org /user:administrator
    lsadump::dcsync /domain:0day.org /user:administrator /csv

    0x03 获取域管理权限

    这里我们使用一个普通域用户运行mimikatz

    可以看到是不存在票据的

    然后我手动创建了一张域管理的黄金票据:

    kerberos::golden /krbtgt:36f9d9e6d98ecf8307baf4f46ef842a2 /admin:administrator /domain:0day.org /sid:S-1-5-21-1812960810-2335050734-3517558805 /ticket:administrator.ticket.bin

    然后再使用这张票据

    然后我的低权限本地用户,就被提升到域管理权限了

    0x04 利用dcsync功能获取hash

    然后我通过DRSR协议,从域控制器获取用户jack的hash:

    lsadump::dcsync /user:jack /domain:0day.org

    伪造的信息大约可以生效20分钟左右,在此期间不会被系统检查到。

    如果我们没有足够的权限(比如域管理)来查询带DRSR的域控制器,我们会得到error 5(权限不足)的提示

    如果你使用kerberos::dcsync去提升到域管理权限,是不会记录事件日志的

    0x05 使用DCSync权限维持

    当我们获得了域内管理员权限,如果我们能修改域内普通用户的权限,使其具有DCSync权限的话,那么普通域用户也能导出域内用户的哈希了!这样可以做一个隐蔽的权限维持!

    那么如何修改域内普通用户的权限,使其具有DCSync权限呢?如下,向域内普通用户添加如下三条ACE(Access Control Entries):

    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)
    我们可以使用Empire下的 powerview.ps1 脚本执行命令添加以上三条ACE。

    #给域用户jerry添加以上三条ACE
    Add-DomainObjectAcl -TargetIdentity "DC=0day,DC=org" -PrincipalIdentity jerry -Rights DCSync -Verbose
    

    在域内一台登录了jerry用户的主机上面,直接使用mimikatz的DCSync功能

    #给域用户jerry删除以上三条ACE
    Remove-DomainObjectAcl -TargetIdentity "DC=0day,DC=org" -PrincipalIdentity jerry -Rights DCSync -Verbose
    

    再来获取

    0x06 自动化检测DCSync后门的方法

    具有高权限但不在高权限组的用户被称之为Shadow Admin,例如前面的域用户jerry,仅通过查询高权限组的成员无法发现域内的Shadow Admin。

    检测原理:

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

    实现代码:

    https://github.com/cyberark/ACLight

    利用条件:

    · Powershell v3.0。

    · 域内普通用户权限。

    检测方法:

    执行项目中的Execute-ACLight2.bat

    然后在result生成新文件查看

    0x07 参考

    http://rycon.hu/papers/goldenticket.html

  • 相关阅读:
    Optimal Milking
    Alice's Chance
    The Perfect Stall
    项目范围管理
    计算机网络总结 第六章 网络层
    计算机网络总结 第一章 计算机网络概论
    Http与url
    javaScript期末复习基础
    计算机网络各层涉及协议
    javaScript_canvas 面向对象实现
  • 原文地址:https://www.cnblogs.com/yicunyiye/p/13920026.html
Copyright © 2020-2023  润新知