阻止特定应用程序以管理员身份运行


13

背景

大多数安装工具箱都可以在安装后自动启动或以其他方式启动外部程序。它通常通过“显示自述文件”或“启动程序”之类的选项出现在安装程序中。

问题

问题是,许多这些安装程序的编码不正确,并且没有适当地删除权限。例如,自动启动应用程序或在浏览器中打开应用程序的主页,通常会导致使用安装程序的管理特权或“高” UAC完整性级别启动应用程序或浏览器!

这有可能通过打开已安装的应用程序或网页(可能还有浏览器加载项)来打开安全漏洞,这些漏洞现在正在以提升的权限运行。

(这就是我强烈建议您在安装软件时不要选择自动启动选项的原因。)

有没有一种方法,以防止某些应用程序(如Web浏览器),从以往被具有管理权限,即基于进程名称的自动落特权推出?

windows  uac 

2
我真的很喜欢这个问题。有一些产品是为基于路径,哈希等过程加薪的权利我很乐意看到的东西,自动降权,发言权,IEXPLORE.EXE,firefox.exe,的chrome.exe等
帕特里克·西摩

1
如果产卵程序具有管理员权限,难道它只能撤消您提出的任何内容并继续运行它吗?:)
Ƭᴇcʜιᴇ007

1
我猜是可以的,但是如果安装程序像“嘿,您将以管理员身份浏览我们的主页,伙计,我会感到惊讶”。并持续执行这些权限。我不愿意从这样的公司那里购买软件,只要我能找到它。
Patrick Seymour

Answers:


2

我原则上同意“ RUNAS”的答案。

在我看来,如果子流程实例以admin身份运行,那么您想要的是对它们进行自动限制。

有两种方法。然而,它们是/可能是激烈的,而不是胆小的管理员,因为开销很烦人。不过,他们会做的。

除非要求更多,否则仅显示方法一

对于您要限制的每个应用程序:

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.

现在,管理员组的成员无法执行该文件。他们可以返回并更改权限以取消选中它,以便可以运行它,但是他们必须有意识地这样做。

另外,由于您担心安装程序期间会发生这种情况,因此您希望对SYSTEM “用户” 执行相同的过程,该过程也(有效)以admin身份运行,因为该帐户可以在某些安装过程中使用( Windows“ ADMIN”帐户凭据可用于获取SYSTEM凭据令牌……但这远远超出了此问题的目标)。

这是在Windows 7上执行此操作的一些图片:

在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明 在此处输入图片说明


1

您应该能够通过dropmyrights或psexec达到较低的权限级别。

棘手的部分似乎是当安装程序生成应用程序的新实例时自动使它发生。

为此,我怀疑您至少需要调整所有相关文件类型以及URL的文件关联,例如,在现有命令之前添加psexec命令。

只要安装程序尝试使用关联的应用程序打开文件/ URL,而不是指定要运行的可执行文件,该文件便会起作用。如果显式指定了可执行文件路径,我想您需要用运行所需命令的填充程序替换标准可执行文件。


1

这里遗漏的一件事是Internet Explorer和Windows Explorer无法提升其权限(除非您进行了注册表修改)。我不了解Firefox,Chrome等。但是,如果您尝试以admin身份运行Internet Explorer,它将很乐意接受您的凭据,但实际上不会提升权限。这是Windows Vista及更高版本的安全功能。除此之外,UAC无效的唯一方法(除非您将其关闭)是如果您登录到内置管理员帐户。仅仅因为某些东西是使用提升的权限安装的,并不意味着安装程序可以为该程序提供提升的权限。权限由运行该程序的帐户确定。程序不知道是否存在的情况下,可以通过提升的权限运行程序的唯一方法是,


1
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.

说明/逐步

  1. 打开开始菜单,然后在搜索栏上键入cmd
  2. 右键单击命令提示符,然后选择以管理员身份运行输入:

    RUNAS /showtrustlevels
    
  3. 选择适合您的应用程序运行X的信任级别,您要使用和键入的信任级别在哪里:

    RUNAS /trustlevel:X "Application target"
    

我认为这行不通。为了使用RunAs以低权限运行结果浏览器窗口,您将必须以低权限运行安装程序(通过RunAs)。这样做可能会导致安装程序无法正常工作。
Patrick Seymour

好吧,如果您想这样做,可以更改浏览器的环境变量以包含RUNAS / trustlevel命令,那么浏览器将始终以选定的信任级别启动,这不太可能需要您在浏览器中运行浏览器。局势升级……值得思考
David McGowan 2012年

更改环境变量是一项艰巨的任务,它需要创建一个简单的exe来替换包含使用RUNAS命令对实际可执行文件进行简单调用的原始文件。就像我说的,您只需要复制浏览器窗口启动时使用的地址,然后关闭并重新启动浏览器,然后在其中键入地址即可
David McGowan 2012年

0

我研究了不同的解决方案,我已经可以告诉您应用程序清单或appcompat标志将不起作用(是的,这不是真正的答案,但我仍然想分享这个;))

可能最接近您所寻找的是所谓的完整性级别,它可以在文件系统(ACL)中设置,并会影响该进程持有的令牌

文章解释了如何做一个exe总是以“低完整性级别”运行

另一个方法是第三方工具,例如病毒扫描仪或应用程序防火墙将使用的实时过程监控器,但我不知道可以采用这种方式进行配置。


2
您可以忽略我的答案,我只是尝试了该方法,但没有成功:(
weberik

0

您可以使用AppLocker。

我相信这在Windows 7 Enterprise,Ultimate和Server 2K8及更高版本中可用。不确定Windows 8,但会假设它是相同的(企业版和旗舰版)。

您可以通过进入组策略来设置AppLocker:

计算机配置-> Windows设置->安全设置->应用程序控制策略-> AppLocker->可执行规则。

右键单击并“创建新规则...”

在这里,您可以阻止特定的可执行文件被选定的用户或组运行。在您的示例中,您可以选择拒绝“管理员”组对Internet Explorer的执行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.