背景
大多数安装工具包都能够在安装后自动或以其他方式启动外部程序。这通常通过安装程序中的“显示自述文件”或“启动程序”等选项显示。
问题
问题是,许多安装程序的编码很差,并且没有适当地放弃权限。例如,自动启动应用程序或在浏览器中打开应用程序的主页通常会导致使用安装程序的管理权限或“高”UAC 完整性级别启动应用程序或浏览器!
通过打开现在以提升的权限运行的已安装应用程序或网页(可能还有浏览器插件),这有可能导致安全漏洞。
(这就是我强烈建议在安装软件时不要选择自动启动选项的原因。)
问题
有没有办法防止某些应用程序(如网络浏览器)曾经以管理权限启动,即根据进程名称自动删除权限?
答案1
原则上,我同意“RUNAS”的回答。
在我看来,您想要的是当子流程实例以管理员身份运行时自动限制它们。
有几种方法。但是,它们可能过于激进,不适合胆小的管理员,因为开销很烦人。不过,它们还是有用的。
仅显示方法一,除非请求更多:
对于要限制的每个应用程序:
right click the executable and go to **PROPERTIES**
go to the **SECURITY** tab
click **ADVANCED** at the bottom
click **ADD** at the bottom
type **ADMINISTRATORS** for the name. if you have a domain then adjust appropriately
press **OK** to get the custom settings for the administrator's group
check the **DENY** checkbox next to "TRAVERSE FOLDER/ EXECUTE FILE" permission (2nd on the list)
hit OK and so-on until you've closed the properties entry for that file.
现在,管理员组的成员无法执行该文件。他们可以返回并更改权限以取消选中该文件,以便可以运行它,但他们必须有意识地这样做。
此外,由于您担心在安装程序期间发生这种情况,您可能希望对系统“用户”,它也(有效地)以管理员身份运行,因为该帐户可在某些安装过程中使用(Windows“ADMIN”帐户凭据可用于获取系统凭据令牌......但这远远超出了这个问题的目标)。
以下是在 Windows 7 上执行此操作的一些图片:
答案2
您应该能够使用 dropmyrights 或 psexec 实现较低的权限级别。
棘手的部分似乎在于当安装程序生成应用程序的新实例时自动执行此操作。
为此,我怀疑您至少需要调整所有相关文件类型以及 URL 的文件关联,例如在现有命令前面加上 psexec 命令。
只要安装程序尝试使用相关应用程序打开文件/url,而不是指定要运行的可执行文件,此方法即可。如果明确指定了可执行文件路径,我猜您需要将标准可执行文件替换为运行所需命令的 shim 可执行文件。
答案3
这里忽略了一件事,那就是 Internet Explorer 和 Windows Explorer 无法提升其权限(除非您进行注册表破解)。我不知道 Firefox、Chrome 等,但如果您尝试以管理员身份运行 Internet Explorer,它会很乐意接受您的凭据,但实际上不会提升权限。这是 Windows Vista 及更高版本的安全功能。除此之外,UAC 不生效的唯一方式(除非您将其关闭)是您登录到内置管理员帐户。仅仅因为某些东西是以提升的权限安装的,并不意味着安装程序可以赋予该程序提升的权限。权限由运行程序的帐户决定。程序可以在您不知情的情况下以提升的权限运行的唯一方式是,例如,程序从注册表设置随 Windows 启动等。如果发生这种情况,可以通过编辑注册表来修复。
答案4
RUNAS /trustlevel:<TrustLevel> program
/trustlevel <Level> should be one of levels enumerated
in /showtrustlevels.
/showtrustlevels displays the trust levels that can be used
as arguments to /trustlevel.
This requires an elevated command prompt.
解释/步骤
- 打开开始菜单并在搜索栏中输入 cmd
右键单击命令提示符并选择以管理员身份运行类型:
RUNAS /showtrustlevels
选择适合您的应用程序运行的信任级别,
X
您要使用的信任级别在哪里,然后输入:RUNAS /trustlevel:X "Application target"