CreateRestrictedToken – SidsToDisable

我正在学习Python安全性(Windows API),尤其是尝试使用CreateRestrictedToken API作为受限用户启动notepad.exe。 目前,当我执行脚本时,notepad.exe按照预期启动DISABLE_MAX_PRIVILEGE (0x1)。

DISABLE_MAX_PRIVILEGE (0x1)之外,我想禁用一些SID,例如pipe理员(S-1-5-32-544),已validation用户(S-1-5-11)和控制台login(S-1 -2-1)。 我试图禁用pipe理员SID; 但是,它会失败,并出现以下错误:

 TypeError: 'PySID' object has no attribute '__getitem__' 

似乎SID_AND_ATTRIBUTES有一个结构,但我不太清楚如何把它放在一起。

我的Python版本是x64版本2.7.4。

 import win32process import win32job import time import win32event import win32security import win32api from random import randint ph = win32process.GetCurrentProcess() th = win32security.OpenProcessToken(ph,win32security.TOKEN_ALL_ACCESS) admins = win32security.ConvertStringSidToSid("S-1-5-32-544")[0] token = win32security.CreateRestrictedToken(th, 1, admins, None, None) startup = win32process.STARTUPINFO() (hProcess, hThread, processId, threadId) = win32process.CreateProcessAsUser(token, "C:\\Windows\\Notepad.exe", None, None, None, True, win32process.CREATE_BREAKAWAY_FROM_JOB, None, None, startup) 

PyWin32的CreateRestrictedTokenSidsToDisable参数需要一个PySID_AND_ATTRIBUTES 。 这是一个(PySID, Attributes)元组的序列。 在这种情况下,属性被忽略,所以使用0.例如:

 import os import win32process import win32security token = win32security.OpenProcessToken(win32process.GetCurrentProcess(), win32security.TOKEN_ALL_ACCESS) disabled_sids = [(win32security.CreateWellKnownSid(sidt), 0) for sidt in [win32security.WinBuiltinAdministratorsSid, win32security.WinAuthenticatedUserSid]] # WinConsoleLogonSid (81) requires Windows 8. # Use the string SID instead. disabled_sids.append( (win32security.ConvertStringSidToSid("S-1-2-1"), 0)) token_r = win32security.CreateRestrictedToken( token, win32security.DISABLE_MAX_PRIVILEGE, disabled_sids, None, None) notepad_path = os.path.join(os.environ['SystemRoot'], 'notepad.exe') startup = win32process.STARTUPINFO() (hProcess, hThread, processId, threadId) = win32process.CreateProcessAsUser( token_r, notepad_path, None, None, None, True, win32process.CREATE_BREAKAWAY_FROM_JOB, None, None, startup)