是否可以在不登录的情况下冒充用户?

时间:2020-03-06 14:45:37  来源:igfitidea点击:

是否可以在不提供用户名/密码的情况下冒充用户?基本上,我想使用ShGetFolderPath()函数为用户(不是当前用户)获取CSIDL_LOCAL_APPDATA。我目前所拥有的只是该用户的SID。

解决方案

不,我们必须调用Win32 API LogonUser函数以获取Windows帐户令牌,以便随后进行模拟。

我们可以通过调用ZwCreateToken来模拟用户而无需提供密码。
请参阅本文中的CreatePureUserToken函数:
基于GUI的RunAsEx
我们必须以管理员(或者LocalSystem)身份运行才能正常工作。

另一种技术是使用Windows子身份验证程序包。
这使我们可以覆盖Windows内置的身份验证,并允许LogonUser成功,即使没有提供密码也是如此。请参阅此知识库文章。