创建RestrictedToken SidsToDisab

2024-09-29 19:37:34 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在学习Python安全性(windowsapi),尤其是尝试启动记事本.exe作为使用CreateRestrictedTokenAPI的受限用户。当我执行脚本时,记事本.exe按预期以DISABLE_MAX_PRIVILEGE(0x1)启动。在

除了DISABLE_MAX_PRIVILEGE(0x1),我还想禁用一些sid,例如Administrators(S-1-5-32-544)、Authenticated Users(S-1-5-11)和控制台登录(S-1-2-1)。我尝试禁用管理员SID;但是失败,并出现以下错误:

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

SID_AND_ATTRIBUTES中似乎有一个结构,但我不太确定如何将其组合起来。在

我的Python版本是x64版本2.7.4。在

^{pr2}$

Tags: 用户版本脚本exeusersmaxdisable记事本
1条回答
网友
1楼 · 发布于 2024-09-29 19:37:34

{{a1}取win32}的参数。这是(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)

相关问题 更多 >

    热门问题