來自(哪里Windows C# 有沒有辦法使用父進程的 Kerberos 票證創建新進程?支持使用 SSPI 進行多進程的 kerberos 約束委派我正在嘗試將 Kerberos 憑據從一個進程復制到另一個進程以調用遠程命令。史蒂夫非常有幫助,但我對如何創建子進程,使用正確的憑據句柄加載它和模擬,然后獲取同一個子進程來執行調用后的實際命令有點困惑DuplicateHandles 要求子進程首先存在。我的問題是,如何讓子進程執行我最初打算讓它作為 CreateProcessAsUser 模擬執行的命令?到目前為止的代碼:var CurrentIdentity = ((WindowsIdentity)User.Identity).Token;IntPtr parentHandle = IntPtr.Zero;CloneParentProcessToken.QuerySecurityContextToken(ref CurrentIdentity, out parentHandle);IntPtr parentProcessHandle = Process.GetCurrentProcess().Handle;currentUser = System.Security.Principal.WindowsIdentity.GetCurrent().Name;//Create Child Process as UserIntPtr childProcessHandle = CreateProcessAsUser();IntPtr lpTargetHandle = IntPtr.Zero;//Duplicate parent security handle into childif (CloneParentProcessToken.DuplicateHandle(parentProcessHandle, parentHandle, childProcessHandle, out lpTargetHandle, ProcessUtility.TOKEN_IMPERSONATE, true, (uint)0x00000002)){ int childHandleProcessID = CloneParentProcessToken.GetProcessId(lpTargetHandle); IntPtr newChildProcess = ProcessUtility.OpenProcess(ProcessUtility.ProcessAccessFlags.All, true, childHandleProcessID); IntPtr newProcessAccessTokenHandle = IntPtr.Zero; if (ProcessUtility.OpenProcessToken(newChildProcess, ProcessUtility.TOKEN_IMPERSONATE, out newProcessAccessTokenHandle)) { //Impersonate the user in the new child process if (CloneParentProcessToken.ImpersonateLoggedOnUser(newProcessAccessTokenHandle)) { //newChildProcess is pointer to child process with token and impersonation Process child = Process.GetProcessById(childHandleProcessID); //Have child process execute??? } }
CreateProcessAsUser 到 ImpersonateLoggedOnUser
慕的地8271018
2023-08-20 10:01:32