freeBuf
主站

分类

漏洞 工具 极客 Web安全 系统安全 网络安全 无线安全 设备/客户端安全 数据安全 安全管理 企业安全 工控安全

特色

头条 人物志 活动 视频 观点 招聘 报告 资讯 区块链安全 标准与合规 容器安全 公开课

官方公众号企业安全新浪微博

FreeBuf.COM网络安全行业门户,每日发布专业的安全资讯、技术剖析。

FreeBuf+小程序

FreeBuf+小程序

AD(Active Directory) 第三部分-组策略
2022-04-25 12:11:04
所属地 海外

1、概述

在本节中,我们将讨论Active Directory中的组策略,它是AD的重要元素之一。我们将介绍以下概念:

  • 什么是Active Directory 中的组策略
  • 为什么需要组策略
  • 使用组策略可以实现什么
  • 如何枚举和破坏组策略

创建组策略是为了集中管理整个Active Directory域中的操作系统、用户和计算机。这些策略允许我们从GPMC(Group Policy Management Console)集中式控制台管理用户和计算机设置。

在运行中输入gpmc.msc可以打开GPMC

image-20220402153139847

2、组策略对象(Group Policy Objects)

GPO(组策略对象)包含组策略设置和与文件系统和Active Directory中的策略设置相关的文件描述。如上图所示,组策略对象容器下只有两个GPO。这两个是在创建域时自动创建的核心GPO

Default Domain Policy(默认域策略)

此默认策略根据密码策略、Kerberos策略和帐户锁定策略为域中的所有用户和计算机定义了一组基本设置。

image-20220402153610287

Default Domain Controllers Policy(默认域控制器策略)

默认域控制器策略为域中的所有域控制器定义一组基本安全和审核设置。

image-20220402153804922

组策略对象是一组组合在一起并应用于计算机或用户对象的策略。

image-20220402154013843

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

SYSVOLAD中最重要的网络共享之一,因为它存储组策略模板并默认在域控制器上共享。所有域计算机都访问此共享以检查域策略。它的默认位置是域控制器中的%SYSTEMROOT%\SYSVOL\sysvol。网络上的位置是\\<domain_name>\SYSVOL

image-20220402160434284

一个sysvol文件夹由以下部分组成:

  • 脚本(即GPO中引用的启动脚本和文件,如.bat、vbs等)
  • 组策略文件夹和模板(在整个域中复制)
  • 连接点(类似快捷方式。一个目录可以指向不同的目录)

image-20220402160657397

SYSVOL Policies folder(SYSVOL策略文件夹)

SYSVOL策略文件夹包含所有GPO。每个GPO的文件夹名称与该GPOGUID相同。

image-20220402161447999

以下是SYSVOLPolicy 文件夹的组成:

  • Machine存储GPO的计算机特定配置
  • User存储GPO的用户特定配置
  • GPT.INI存储GPO配置

image-20220402161721205

DFSR(分布式文件系统复制)是SYSVOL文件夹复制的默认复制机制,SYSVOL复制由DFSR完成。

7、组策略首选项

微软引入了一项称为“组策略首选项”的重要功能,可帮助在创建计划任务、更改所有工作站上的本地管理员密码等场景中存储和使用凭据。这对管理员非常有帮助,因为它提供了一种自动化机制(而不是借助脚本来完成),其中密码不会像脚本那样以明文形式保存,而是以AES-256位加密的形式存储在SYSVOL 目录的xml 文件中。但后来微软在他们的MSDN门户上发布了私钥,允许解密存储在这样创建的xml 文件中的任何密码。

image-20220402162345432

由于域中每个人都具有对SYSVOL的读访问权限,因此只需在XML文件中找到cpassword并解密密码即可。

PowerSploitGPP-Password 工具可以在sysvol策略目录中的xml中搜索cpassword字段,并使用Microsoft 之前发布的密钥对其进行解密。

PowerSploit项目:https://github.com/PowerShellMafia/PowerSploit

image-20220402163542970

尽管微软后来发布了补丁,并禁用了像这样输入密码的选项,但如果管理员不删除XML文件,这个问题仍然存在,而且密码在很多时候都有效,所以这是一个有效个攻击方法。

后来,微软使用LAPS(本地管理员密码解决方案)来更改本地管理员密码。

最佳实践:

  • 对于系统管理员来说,删除SYSVOL文件夹中有密码的现有GPP XML文件,并确保那里没有这样的文件。
  • 对于渗透测试者,最佳实践是枚举SYSVOL策略文件夹以寻找包含cpasswordxml文件。
  • 防御者的最佳做法是创建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>"

image-20220402164729947

可以看到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

image-20220402165520889

然后,我们获取GPOcn

image-20220406102854011

并在此GPO上执行ACL检查,查看用户Ghost具有我们配置的权限。

image-20220406103355587

这就是配置错误的组策略对象的例子。由于用户ghost具有编辑GPO的权限,因此可以在没有域管理员权限的情况下从该GPO编辑设置和完成一些其他任务。

9、说明

本文由笔者在原文上编译,转载请注明原文出处。

原文出处:Active Directory Fundamentals (Part 3)- Group Policies

# 渗透测试 # 域渗透
本文为 独立观点,未经允许不得转载,授权请联系FreeBuf客服小蜜蜂,微信:freebee2022
被以下专辑收录,发现更多精彩内容
+ 收入我的专辑
+ 加入我的收藏
相关推荐
  • 0 文章数
  • 0 关注者
文章目录