蚁景网安实验室
- 关注
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
0
1
2
3
4
5
6
7
8
9
1、概述
在本节中,我们将讨论Active Directory
中的组策略,它是AD
的重要元素之一。我们将介绍以下概念:
- 什么是
Active Directory
中的组策略 - 为什么需要组策略
- 使用组策略可以实现什么
- 如何枚举和破坏组策略
创建组策略是为了集中管理整个Active Directory
域中的操作系统、用户和计算机。这些策略允许我们从GPMC
(Group Policy Management Console
)集中式控制台管理用户和计算机设置。
在运行中输入gpmc.msc
可以打开GPMC
2、组策略对象(Group Policy Objects)
GPO
(组策略对象)包含组策略设置和与文件系统和Active Directory
中的策略设置相关的文件描述。如上图所示,组策略对象容器下只有两个GPO
。这两个是在创建域时自动创建的核心GPO
。
Default Domain Policy(默认域策略)
此默认策略根据密码策略、Kerberos
策略和帐户锁定策略为域中的所有用户和计算机定义了一组基本设置。
Default Domain Controllers Policy(默认域控制器策略)
默认域控制器策略为域中的所有域控制器定义一组基本安全和审核设置。
组策略对象是一组组合在一起并应用于计算机或用户对象的策略。
3、Group Policy Management Editor(组策略管理编辑器)
在运行中输入gpedit.msc
可以打开组策略管理编辑器。可以用它编辑组策略。如你所见,策略设置分为两类:计算机配置和用户配置。
计算机配置
如果在计算机配置下指定了GPO
的设置,并将其应用于特定的计算机对象,则该计算机对象将具有指定的安全设置、系统行为、应用程序设置以及计算机启动和关闭时执行的脚本,而与登录到应用了GPO
的计算机的用户无关。
用户配置
在用户配置下定义的策略定义了用户特定的系统行为、应用程序设置、安全设置、分配和发布的应用程序、用户登录和注销脚本以及文件夹重定向。如果为特定用户定义了策略,则该策略将适用于该用户登录的任何系统。
**注意:**在计算机配置下定义的策略会覆盖在用户配置下定义的策略。
创建GPO
后,需要将其链接到一个或多个AD
容器,如链接到整个域或某个特定的OU
(组织单位)才能生效。例如,如果要创建组策略以授予数据库管理员团队的所有成员访问SQL
所需的共享文件夹的权限,则此GPO
必须仅链接到DBAdmins OU
。
4、常见的GPO
一些常见类型的组策略,用于启用不同类型的任务,如一些配置:
- 安全策略(例如禁用
NTLM
身份验证)和自定义策略(例如限制普通用户对命令提示符的访问) IT
策略,如限制对USB
驱动器的访问、配置登录banner向用户显示法律通知等。- 审计和合规性策略,例如启用高级
Windows
审计策略以启用对重要对象的审计以及在事件查看器中记录建议的重要Windows
事件ID
等。 - 域中复杂的密码策略,用于应对密码喷射攻击。
- 自动化策略,如在多台计算机/服务器上部署标准工具、映射网络驱动器、自动执行登录/注销任务等。
5、组策略刷新间隔
刷新间隔定义了特定域计算机或服务器从域控制器请求组策略更新的时间,以确保复制任何组策略中的更改。默认刷新间隔为 90 分钟,并为每台计算机/服务器添加了一个随机偏移间隔,以防止所有域计算机同时从 DC 请求组策略更新。将在本系列的后面部分讨论有关 GPO 的更多信息。
6、SYSVOL
SYSVOL
是AD
中最重要的网络共享之一,因为它存储组策略模板并默认在域控制器上共享。所有域计算机都访问此共享以检查域策略。它的默认位置是域控制器中的%SYSTEMROOT%\SYSVOL\sysvol
。网络上的位置是\\<domain_name>\SYSVOL
。
一个sysvol
文件夹由以下部分组成:
- 脚本(即
GPO
中引用的启动脚本和文件,如.bat、vbs
等) - 组策略文件夹和模板(在整个域中复制)
- 连接点(类似快捷方式。一个目录可以指向不同的目录)
SYSVOL Policies folder(SYSVOL策略文件夹)
SYSVOL
策略文件夹包含所有GPO
。每个GPO
的文件夹名称与该GPO
的GUID
相同。
以下是SYSVOL
中Policy
文件夹的组成:
- Machine存储
GPO
的计算机特定配置 - User存储
GPO
的用户特定配置 - GPT.INI存储
GPO
配置
DFSR
(分布式文件系统复制)是SYSVOL
文件夹复制的默认复制机制,SYSVOL
复制由DFSR
完成。
7、组策略首选项
微软引入了一项称为“组策略首选项”的重要功能,可帮助在创建计划任务、更改所有工作站上的本地管理员密码等场景中存储和使用凭据。这对管理员非常有帮助,因为它提供了一种自动化机制(而不是借助脚本来完成),其中密码不会像脚本那样以明文形式保存,而是以AES-256
位加密的形式存储在SYSVOL
目录的xml
文件中。但后来微软在他们的MSDN
门户上发布了私钥,允许解密存储在这样创建的xml
文件中的任何密码。
由于域中每个人都具有对SYSVOL
的读访问权限,因此只需在XML
文件中找到cpassword
并解密密码即可。
PowerSploit
的GPP-Password
工具可以在sysvol
策略目录中的xml
中搜索cpassword
字段,并使用Microsoft
之前发布的密钥对其进行解密。
PowerSploit项目:https://github.com/PowerShellMafia/PowerSploit
尽管微软后来发布了补丁,并禁用了像这样输入密码的选项,但如果管理员不删除XML
文件,这个问题仍然存在,而且密码在很多时候都有效,所以这是一个有效个攻击方法。
后来,微软使用LAPS
(本地管理员密码解决方案)来更改本地管理员密码。
最佳实践:
- 对于系统管理员来说,删除
SYSVOL
文件夹中有密码的现有GPP XML
文件,并确保那里没有这样的文件。 - 对于渗透测试者,最佳实践是枚举
SYSVOL
策略文件夹以寻找包含cpassword
的xml
文件。 - 防御者的最佳做法是创建
AD
诱饵并在其中包含带有密码的xml
文件,并启用审核策略以在有人访问未链接到实际GPO
的文件夹时收到警报。这个会在后续文章中详细介绍。
8、在域中查找GPO
要检查域中的所有GPO
,可以使用以下命令:
PS C:\Users\Administrator> Get-GPO -All | Select DisplayName
DisplayName
-----------
Default Domain Policy
Default Domain Controllers Policy
查看GPO
的设置
Get-GPOReport -Name "<GPO Name>" -Path <Path With File Name> -ReportType "<HTML|XML>"
可以看到XML
格式的策略定义,比如GPO
在启用防火墙规则或运行脚本等情况下会做什么:
<Computer>
<VersionDirectory>1</VersionDirectory>
<VersionSysvol>1</VersionSysvol>
<Enabled>true</Enabled>
<ExtensionData>
<Extension xmlns:q1="http://www.microsoft.com/GroupPolicy/Settings/WindowsFirewall" xsi:type="q1:WindowsFirewallSettings">
<q1:GlobalSettings>
<q1:PolicyVersion>
<q1:Value>541</q1:Value>
</q1:PolicyVersion>
</q1:GlobalSettings>
<q1:InboundFirewallRules>
<q1:Version>2.29</q1:Version>
<q1:Action>Allow</q1:Action>
<q1:Name>Allow WinRM port 5985 </q1:Name>
<q1:Dir>In</q1:Dir>
<q1:LPort>5985</q1:LPort>
<q1:Protocol>6</q1:Protocol>
<q1:Active>true</q1:Active>
</q1:InboundFirewallRules>
</Extension>
<Name>Windows Firewall</Name>
</ExtensionData>
<ExtensionData>
<Extension xmlns:q2="http://www.microsoft.com/GroupPolicy/Settings/Registry" xsi:type="q2:RegistrySettings">
<q2:Blocked>false</q2:Blocked>
</Extension>
<Name>Registry</Name>
</ExtensionData>
</Computer>
<User>
<VersionDirectory>1</VersionDirectory>
<VersionSysvol>1</VersionSysvol>
<Enabled>true</Enabled>
</User>
</GPO>
在上面的配置中,我们可以看到它启用了Windows
防火墙中的一条规则。
查找配置错误的组策略
为了验证,首先创建了一个GPO
并配置允许Ghost
用户可以编辑GPO
。
然后,我们获取GPO
的cn
:
并在此GPO
上执行ACL
检查,查看用户Ghost
具有我们配置的权限。
这就是配置错误的组策略对象的例子。由于用户ghost
具有编辑GPO
的权限,因此可以在没有域管理员权限的情况下从该GPO
编辑设置和完成一些其他任务。
9、说明
本文由笔者在原文上编译,转载请注明原文出处。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf 客服小蜜蜂(微信:freebee1024)

