Tasksicherheitshärtung

Die Verwendung der Sicherheitshärtungsfunktion "Tasks" ermöglicht Es Taskbesitzern, ihre Aufgaben mit minimal erforderlichen Berechtigungen auszuführen. Beachten Sie, dass diese Funktion standardmäßig aktiviert ist und Taskbesitzer weitere Anpassungen vornehmen können, indem sie den Sicherheitsbezeichnertyp des Taskprozesses und das Array mit den erforderlichen Aufgabenberechtigungen verwenden.

Taskprozesstoken-SID-Typ und Array der erforderlichen Taskberechtigungen

Wenn ProcessTokenSidType auf Taskdefinitionsebene angegeben wird, können Taskbesitzer anfordern, dass ein Taskprozess mit dem SID-Typ "none" oder dem SID-Typ "unrestricted" ausgeführt wird. Wenn das Feld in der Aufgabendefinition vorhanden ist, stellt die Überprüfung sicher, dass die UserId des Tasks den Namen oder die entsprechende SID-Zeichenfolge für eines dieser integrierten Betriebssystemdienstkonten enthält: "NETWORK SERVICE" oder "LOCAL SERVICE".

Der SID-Typ "none" bedeutet, dass der Task in einem Prozess ausgeführt wird, der keine Prozesstoken-SID enthält (an der Liste der Prozesstokengruppen werden keine Änderungen vorgenommen). Die Sid des Aufgabenprinzipalkontos (LocalService/NetworkService) hat in diesem Fall Vollzugriff auf das Prozesstoken.

Der SID-Typ "unrestricted" bedeutet, dass eine Task-SID vom vollständigen Aufgabenpfad abgeleitet und der Liste der Prozesstokengruppen hinzugefügt wird. Beispielsweise wird die \ Microsoft \ Windows \ \ RAC-RACTask, die im lokalen Dienstkonto ausgeführt wird, die Task-SID vom Namen Microsoft-Windows-RAC-RACTask abgeleitet, wobei ein "-" durch "" ersetzt \ wird, da " ein \ ungültiges Benutzernamenzeichen ist. Der bekannte Gruppenname für die Task-SID lautet "NT \ TASK" \ (Domänenname-Benutzernamenformat). Die standardmäßige DACL (Discretionary Access Control List) des Prozesstokens wird ebenfalls geändert, um die vollständige Kontrolle nur für die Task-SID und die lokale System-SID zu ermöglichen und die Steuerung auf die SID des Aufgabenprinzipalkontos zu lesen. "schtasks.exe /showsid /tn" zeigt die Task-SID an, die der Aufgabe entspricht.

Wenn eine Nicht-COM-Taskaktion gestartet wird, protokolliert die Planungs-Engine das Aufgabenprinzipalkonto, ruft das Prozesstoken ab und fragt die Liste der Berechtigungen ab, über die das Token verfügt, und vergleicht diese dann mit der unter RequiredPrivileges angegebenen Berechtigungsliste. Wenn in letzterem keine Berechtigung angegeben ist, wird dies als SE _ PRIVILEGE _ REMOVED markiert. Die ausführbare Aktion wird dann mit dem resultierenden Tokenhandle mithilfe der CreateProcessAsUser-API gestartet.

Wenn eine COM-Taskaktion gestartet wird, muss sie vom taskhost.exe Prozess aktiviert werden. Die Planungs-Engine fragt den Kontextblock jedes ausgeführten taskhost.exe mit demselben Konto wie die Startaufgabe ab. Wenn festgestellt wird, dass ein Hostprozess mit einer Übermenge von Berechtigungen gestartet wurde, die der Starttask benötigt, wird dieser Task in diesem Prozess gehostet. Wenn ein solcher Prozess nicht gefunden wird, kombiniert er die Härtungsinformationen aller Aufgaben, die in den taskhosts unter dem Aufgabenprinzipalkonto ausgeführt werden, mit der angegebenen RequiredPrivileges-Maske und startet dann eine neue Instanz von taskhost.exe.

Wenn RequiredPrivileges in der Aufgabendefinition nicht vorhanden ist, werden die Standardberechtigungen des Aufgabenprinzipalkontos ohne SeImpersonatePrivilege für den Taskprozess verwendet. Wenn ProcessTokenSidType in der Taskdefinition nicht vorhanden ist, wird "unrestricted" als Standard verwendet.

Informationen zur Aufgabenregistrierung

Informationen zum Taskplaner

Sicherheitskontexte für Aufgaben