我需要模擬特定Windows服務的LogOn用戶帳戶。如何獲取Windows服務的LogOn用戶的安全令牌?
我已經能夠使用WMI獲取用戶名(可惜LogOn用戶身份似乎沒有使用任何常規的Windows服務相關的.NET類暴露)。但是,只有用戶名(可以是本地帳戶或域帳戶),我如何獲得該窗口標識的標記?
可以提供令牌的LogonUser WinAPI調用期望將密碼作爲參數,這顯然不可用。用戶輸入不是一個選項。
任何洞察力將不勝感激。
我需要模擬特定Windows服務的LogOn用戶帳戶。如何獲取Windows服務的LogOn用戶的安全令牌?
我已經能夠使用WMI獲取用戶名(可惜LogOn用戶身份似乎沒有使用任何常規的Windows服務相關的.NET類暴露)。但是,只有用戶名(可以是本地帳戶或域帳戶),我如何獲得該窗口標識的標記?
可以提供令牌的LogonUser WinAPI調用期望將密碼作爲參數,這顯然不可用。用戶輸入不是一個選項。
任何洞察力將不勝感激。
最終做以下幾點:
希望這對任何需要冒充運行服務的用戶帳戶的人都很有用。
請問您可以發佈此代碼嗎? – user1438082 2014-05-08 20:58:26
我害怕的代碼是專有的。然而,我可以根據你需要澄清的步驟來指出...... – Manas 2014-05-12 21:37:59
儘管Microsoft完全沒有提供這方面的文檔,因爲他們希望假設服務登錄在登錄時不需要明文密碼,但事實上它和services.exe都使用正確的密碼調用LogonUser。
密碼被塞進註冊表的某處,只有SYSTEM有權訪問並加密才能啓動,但SYSTEM帳戶可以獲取機器密鑰並解密密碼。
http://www.computersecurityarticles.info/security/decrypting-lsa-secrets/
請注意,因爲這是沒有證件,你不應該使用它。
是否要模擬運行服務的帳戶下的用戶?如果是這樣,你可以使用CreateRemoteThread – 2013-03-23 00:43:11
讓我直截了當地說,你想模仿服務運行的用戶嗎?或者完全不同的用戶? – 2013-03-23 00:43:50
@parapurarajkumar謝謝。將探索。我想到,也許我也可以使用OpenProcessToken。 – Manas 2013-03-23 00:46:36