阻止程序在%appdata%,%temp%等中运行的利弊是什么?


13

在研究防止CryptoLocker的方法时,我看到了一个论坛帖子,建议在以下位置使用组策略对象(GPO)和/或防病毒软件来阻止运行访问:

  1. %应用程序数据%
  2. %localappdata%
  3. %temp%
  4. %用户资料%
  5. 压缩档案

显然,在论坛上撰写的任何内容都应谨慎对待。我确实看到这样做的好处,主要是因为恶意软件喜欢在这些位置之外执行。当然,这也可能影响合法程序。

阻止对这些位置的运行访问有哪些弊端?

有什么优势?


3
Of course, this could impact legitimate programs as well.-稍微...
TheCleaner 2014年

1
例如,GitHub安装在%APPDATA%中,当我的系统管理员最近执行新规则以阻止可执行文件从该位置运行时,Windows的GitHub无法再启动。然后SourceTree也因为无法运行而关闭了最初由GitHub安装的%APPDATA%中的git.exe,当然有点烦人……
Jim Raynor

Answers:


12

恶意软件喜欢从这些位置执行的原因是因为合法软件喜欢从这些位置执行。这些是用户帐户应该具有一定级别的访问权限的区域。

基于我自己系统的快速grep和我们网络上的随机最终用户帐户:

%appdata%

现在,我有了Dropbox,它是Adobe AIR的安装程序,并且在此文件夹中有一些Microsoft Office。

%localappdata%

join.me和SkyDrive似乎生活在这里,或者至少最近居住过。

%temp%

许多程序,无论是合法程序还是其他程序,都希望从此文件夹中执行。当您setup.exe在压缩的安装程序归档文件上运行时,安装程​​序通常会将自己解压缩到该文件的子文件夹。

%用户资料%

除非用户有特殊要求,否则通常将是安全的,不过请注意,上述文件夹中的至少某些文件夹可能是具有漫游配置文件的网络上的该文件夹的子集。

压缩档案

不要直接运行代码,而是通常提取到%temp%那里并从那里运行。

至于是否应该屏蔽这些区域,这取决于用户通常在做什么。如果他们要做的只是编辑Office文档,在午餐时间玩Minesweeper,并且可能通过浏览器等访问LOB应用程序,那么在至少其中一些文件夹中阻止可执行文件可能不会有太大的麻烦。

显然,对于工作负载定义不明确的人而言,相同的方法将行不通。


Chrome也住在%appdata%
Juri Robl 2014年

5
@JuriRobl仅是消费者版本,Chrome商业版本表现得更好。
GAThrawn 2014年

@JuriRobl-我的工作PC上的Chrome浏览器位于C:\ Program Files(x86)\ Google \ Chrome \ Application中。如GAThrawn所说的商业版本。另外,我试图根据我的系统给出示例,而不产生任何详尽的列表。
罗伯·摩尔

6

优点:

尝试从这些位置执行的恶意软件将无法运行。

缺点:

试图从那些位置执行的合法程序将无法运行。


至于您的环境中拥有哪些合法程序需要这些目录中的执行权限,只有您可以说,但是我看到RobM刚刚发布了具有较高概述的答案。从这些目录中阻止执行会给您带来麻烦,因此您需要首先进行一些测试以确定您将遇到的问题以及如何解决这些问题。


3

这些建议在我的环境中将非常有效。不允许任何用户安装软件,并且上述任何位置的批准软件都不能执行。工作站已在工作站映像中预安装并通过脚本更新了批准的软件。

在安装过程中,可以将Dropbox,Chrome,Skype等全部重定位到更可接受的“程序文件”安装位置。

只要您允许管理员或域管理员(也许还有一个特定的“安装程序”帐户)可以运行更新并添加批准的软件,我将同意这些建议。


2

我假设您不仅要拒绝对这些文件夹的执行权,而且要拒绝从它们开始的整个树的执行权(否则,执行您想做的事情毫无意义)。

显而易见的结果是,其中任何可执行文件都将无法运行。

不幸的是,这将包括相当多的合法申请。

%localappdata%和%appdata%是问题最严重的:例如Dropbox,Chrome,SkyDrive将无法工作。大多数自动上传器和许多安装程序也将无法工作。

%UserProfile%甚至更糟,因为它同时包含%localappdata%和%appdata%以及许多其他文件夹。

简而言之:如果您阻止应用程序从这些文件夹中运行,则系统可能几乎无法使用。

%temp%不同。尽管您偶尔可能会从那里运行合法程序,但这种情况很少见,而且通常很容易解决。不幸的是,%temp%会根据您从中扩展的用户上下文而扩展到不同的文件夹:它可能以%localappdata%\ temp(在用户的上下文中)或%SystemRoot%\ temp(在系统),因此您必须分别保护每个位置。

%temp%也是一个不错的选择,因为大多数邮件程序在打开附件之前都会保存这些附件:在很多情况下,基于邮件的恶意软件都会有所帮助。

一个好技巧是在设置系统时更改C:\ Users \ Default \ AppData \ Local \ temp和C:\ Users \ DefaultAppPool \ AppData \ Local \ Temp文件夹上的权限(当然还有%SystemRoot% \ temp)。Windows将在创建新的配置文件时复制这些文件夹,因此新用户将拥有安全的环境。

您可能希望将%UserProfile%\ Downloads添加到列表中:大多数浏览器将在此处与用户下载的文件相同,并且拒绝执行该操作也将提高安全性。


2

在过去的三个月中,我在主工作站上运行的是类似的设置。我的主要用户具有目录的执行权限或写入权限,但没有两者。

这意味着此帐户无法引入任何新的可执行文件。那是专业人士,我可以执行系统上已有的程序或由其他帐户安装的程序,但是我无法下载任何新程序并运行它,这意味着通过浏览器或其他方式进入的任何恶意软件都很难运行。在我的系统上,简单的DLL注入也不起作用。

正如其他人指出的那样,主要问题是某些合法软件使用了我阻止的位置。就我而言:

  • Google Chrome-我安装了MSI版本
  • 任何Portable Apps应用程序-我现在在其他用户下运行
  • Process Explorer-我直接使用提取的64位版本
  • dism.exe-以admin身份运行,无论如何我还是大部分时间都必须这样做。

因此,基本上我使用的是三个帐户,一个用于登录,另一个用于执行某些经过验证的程序的普通用户帐户,以及一个用于为其他两个安装新软件的管理员帐户。

我喜欢这样的事实,它迫使我测试VM中所有新下载的软件。

我通过PowerShell启动大多数程序,并具有三个Shell,每个帐户一个适合我。这是否真正适合您,取决于您使用的软件数量必须区别对待。

在开发人员机器上,这实际上并不起作用,因为我必须先编译代码然后执行它。因此,我将数据驱动器上的代码目录设置为例外,恶意软件可以扫描所有驱动器并找到它。

我正在使用NTFS ACL,而不是策略来强制执行此操作。这样可以防止任何程序运行,但是我仍然可以创建PowerShell脚本,然后运行该脚本,并且可以造成足够的损害。

因此,尽管这使事情变得更加困难,但它不是100%安全的,但仍然可以保护您免受大多数最新的恶意软件的侵害。


0

您可以查看这些文件夹,但大多数都是数据,而该文件夹正是该文件夹的名称。例如,您将看到chrome,但是实际的可执行文件在c:\ programs文件夹中。

我阻止所有可执行文件在程序文件夹之外的任何位置在计算机上运行。仅在需要安装某些东西时才临时允许,而且我从未遇到任何问题。


-1

我建议您快速搜索目录,以查看当前每个目录中的目录。如果他们没有执行任何操作,请按照论坛中的指导进行操作。如果您将来遇到问题,则只需评估您的选择即可。无论如何,其中大多数都不应该包含可执行文件。

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.