有没有办法知道 Windows Server 2008 和 2003 中任务计划程序中任务的来源和合法性?我可以检查任务是由 Microsoft(即来自 sccm)还是由第三方应用程序添加的?
对于任务计划程序中的每个任务,我想验证该任务是否由第三方应用程序创建。我只想允许标准 Microsoft 任务并禁用所有其他非标准任务。
我已经创建了一个 PowerShell 脚本,它可以遍历 C:\Windows\System32\Tasks 目录中的所有 xml 文件,并且我能够成功读取所有 xml 任务文件,但我不清楚如何验证任务。
以下是供您参考的脚本:
Function TaskSniper()
{
#Getting all the fils in the Tasks folder
$files = Get-ChildItem "C:\Windows\System32\Tasks" -Recurse | Where-Object {!$_.PSIsContainer};
[Xml] $StandardXmlFile = Get-Content "Edit Me";
foreach($file in $files)
{
#constructing the file path
$path = $file.DirectoryName + "\" + $file.Name
#reading the file as an XML doc
[Xml] $xmlFile = Get-Content $path
#DS SEE: http://social.technet.microsoft.com/Forums/en-US/w7itprogeneral/thread/caa8422f-6397-4510-ba6e-e28f2d2ee0d2/
#(get-authenticodesignature C:\Windows\System32\appidpolicyconverter.exe).status -eq "valid"
#Display something
$xmlFile.Task.Settings.Hidden
}
}
答案1
合法性听起来很模糊。
如果您要按来源查阅作者,则可在“主体”节点中找到:
$xmlFile.Task.Principals.ChildNodes
id GroupId RunLevel
-- ------- --------
Author S-1-5-32-545 LeastPrivilege
另一种方法可能是审核何时以及谁创建了计划任务。以下是 Windows 2008 R2 的安全事件 ID:
4698 A scheduled task was created.
4700 A scheduled task was enabled.
4702 A scheduled task was updated.