证明合法的Windows用户登录(不是实时磁盘访问)

时间:2018-05-14 08:44:01

标签: windows security

如何向脚本/程序证明执行它的用户是合法的?您可以获取用户名/ ID,但是如果硬盘被Bob占用,并且在新机器中旋转,那么有什么阻止Bob创建具有相同名称/ ID的用户并欺骗程序以认为其合法吗?

Windows是否为用户提供公钥或类似内容?

基本上我想自动化一个脚本来运行一个启动,但只有在(并且只有)合法用户登录之后。我想阻止有人从机器上获取脚本,并在一个愚弄的不同环境中执行它认为合法用户的脚本已登录。

像往常一样道歉,如果这个重复,我想我正在搜索错误的关键字,因为我找不到我想要的东西。

我提到脚本是因为理想情况下我会用Python实现它,但语言对于答案并不重要。

编辑:更多谷歌搜索表明存在Windows用户安全ID(SID)以及访问令牌。那么也许我可以将脚本锁定到特定的SID,并验证脚本是否使用有效的访问令牌启动?但是可以从系统中获取SID并创建具有相同SID和虚假访问权限的新用户吗?

此外,我开始认为这需要转移到安全堆栈。

1 个答案:

答案 0 :(得分:0)

所以不是我的问题的确切答案,但解决了整体问题。

Windows Crypt.ProtectData() API会对数据进行加密,以便只有创建它的用户才能对其进行解密。

通过加密和写入文件,我可以存储不需要额外密码的东西来访问,并且可以合理地假设只有用户可以访问。使用liveisk或将文件移动到具有相同Windows用户名的另一个Windows环境中的任何人都无法读取数据。

要更直接地回答原始问题,通过测试您是否可以对其进行解密,您将证明目标用户正在运行代码。

正如我在原始问题中提到的,我想在python中编写脚本。所以我写了一个类来使用pywin32和win32Crypt.ProtectData()来存储/检索来自加密文件的key:value对。我在GitHub上发布了感兴趣的任何人。

相关问题