Hyd*_*rum 5 windows scheduled-tasks permissions
我在 Windows 任务计划程序中设置了一个自定义计划任务,但不知何故它的访问控制权限已被破坏。即使我以管理员身份登录,我也无法更改运行任务的用户帐户、删除任务或禁用它。我收到了“权限被拒绝”错误。
该机器运行的是 Windows 10 Pro 1803。它是一台工作组机器,不在域中。
该任务是我自己创建的任务(它每天只启动两次 PowerShell 脚本,没什么特别的),因此它不应受任何防篡改机制的影响,例如与 Windows 更新相关的任务。
我尝试了以下方法:
The user account does not have permission to delete this task.Unregister-ScheduledTask -TaskName 'My custom task'从管理员级别的 PowerShell 提示符运行 PowerShell 命令来删除任务。这返回Access is denied..\psexec -i -d -s mmc taskschd.msc. 如果我理解正确,这应该是以 SYSTEM 身份启动 Task Scheduler 控制台管理单元。我也无法使用它删除任务 - 我收到与使用普通用户帐户运行时相同的错误消息,以管理员身份启动管理单元。谁能给我一些关于为什么会发生这种情况的指示,以及我如何解决它?
任务定义存储在哪里?文件系统、注册表或其他地方?看来我可能需要修复一些损坏的安全信息。
And*_*dir 11
存储在两者中的所有任务定义
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\*
Run Code Online (Sandbox Code Playgroud)
和
C:\Windows\System32\Tasks\*
安全描述符既存在于文件系统中的文件中,也存在于每个任务的注册表中:
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Schedule\TaskCache\Tree\<TaskName>\SD
Run Code Online (Sandbox Code Playgroud)
这个注册表值是二进制形式的,似乎没有像样的 UI。
您可以通过 Powershell 和 Task Scheduler API ( https://docs.microsoft.com/en-us/windows/win32/api/_taskschd/index )获取它:
$ts = New-Object -ComObject "Schedule.Service"
$ts.Connect("localhost")
$task = $ts.GetFolder("").GetTask("<TaskName>")
Write-Host $task.GetSecurityDescriptor(0xF)
Run Code Online (Sandbox Code Playgroud)
但:
C:\$WINDOWS.~BT\NewOS\Windows\System32\Tasks_Migrated\是否包含指向任务文件的硬链接C:\Windows\System32\TasksC:\$WINDOWS.~BT\NewOS\Windows\System32\Tasks_Migrated\该Unregister-ScheduledTask工作中删除了所有硬链接。更新:
我终于调查了 Windows 10 中“损坏”任务权限的问题。它与权限没有任何共同之处,看起来像是安全补丁的意外结果。
11/06/2019 微软发布了CVE-2019-1069补丁。这个补丁修复了任务调度器的一个漏洞,攻击者需要创建一个硬链接到与某些任务相关的文件才能利用它。
| 归档时间: |
|
| 查看次数: |
21993 次 |
| 最近记录: |