gpt4 book ai didi

python - CreateRestrictedToken - SidsToDisable

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:22 30 4
gpt4 key购买 nike

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

除了 DISABLE_MAX_PRIVILEGE (0x1) 之外,我还想禁用一些 SID,例如管理员 (S-1-5-32-544)、经过身份验证的用户 (S-1-5- 11) 和控制台登录 (S-1-2-1)。我尝试禁用管理员 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)

关于python - CreateRestrictedToken - SidsToDisable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40859608/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com