我试图让一个程序以普通用户的管理权限运行。(实际软件会抛出需要管理员帐户的错误,我可以通过注册表绕过窗口)。我需要的安全性相对来说是表面的(不需要严密)。
所以现在我正在使用 psexec,这是一个公开管理员名称和密码的桌面快捷方式。有没有办法锁定查看快捷方式的目标?GPO 似乎没有它,但注册表中有什么东西吗?
到目前为止我所能做的最好的事情(很糟糕)是禁用上下文菜单,以便用户无法右键单击(但仍然可以使用 Alt+Enter)。
任何想法都很好。
答案1
无论您做什么,如果您使用 PSEXEC 编写脚本,即使不使用第三方实用程序,您的用户也总能找到一种方法来轻松检索所使用的管理员密码。这是因为如果您无法每次都手动输入密码,PSEXEC 需要将密码作为命令参数以明文形式传递给它。
以下是一些示例场景:
链接参数中提供了密码:
通过查看链接属性就可以非常轻松地查看密码。
密码通过批处理脚本提供,然后将链接指向脚本:
通过链接快捷方式轻松找到脚本,并在脚本中找到密码。
密码作为安全字符串存储在文本文件中,该文件通过 PowerShell 脚本读取并传递给 PSEXEC,然后将链接指向 PowerShell 脚本:
密码仍然可以通过任务管理器在进程属性中看到。
(查看->选择列->命令行)
上面的最后一个选项来自第一次修订的答案阿迪因巴尔到另一问题。
这最新修订同一答案有一个更好的解决方案,它不是那么容易被利用,但如果他们知道自己在做什么,任何人都仍然可以获取密码。这绝对不是我会用于我自己的帐户或系统的东西,但它似乎可以提供符合您标准的可接受的保护。该解决方案完全放弃了 PSEXEC,而是在 PowerShell 中完成所有工作。但是,我认为它在实际用于多用户实现之前仍需要一些工作。(我现在不知道该怎么做。如果我以后弄明白了,会更新这个答案。)一旦成功实施,任何有权访问脚本及其支持文件的用户仍然可以提取和解密密码,但这不仅仅是简单地将其读取为明文的问题。
如果您愿意使用第三方软件,那么有一些工具可以让您将受限用户帐户添加到“sudoers”类型的组,并限制其提升的权限能力,即仅(直接)启动您选择的应用程序。
无论如何,仍需牢记一个重要事项:每当您允许用户以提升的权限启动应用程序时,您就赋予他们使用提升的权限执行应用程序能够执行的任何操作的能力。如果这包括浏览文件系统(例如:通过“打开”或“保存”对话框),则用户可以在您执行的其他程序/功能上使用提升的权限不是希望他们能够访问。
示例:假设您允许我访问您的系统,并配置了我的帐户,以便我唯一可以以提升的权限运行的应用程序是记事本。从记事本,我会...
File->Open
- 将文件类型设置为“所有文件(。)”。
- 在本地文件系统中浏览我想要的任何位置并以管理员身份运行/打开我想要的任何文件/程序。
- 例如:导航至
C:\Windows\System32\
,右键点击lusrmgr.msc
,选择“打开”,使用 MMC 将自己添加到真实的管理员组。
- 例如:导航至