我需要模拟特定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