Windows GPO 软件限制策略不适用于 %TEMP% 变量

jim*_*gee 6 security windows group-policy

我试图通过限制在少数几个位置执行 *.exe 来采取一些微不足道的额外恶意软件预防措施 - 特别是各种压缩工具解压缩到的临时文件夹,当用户可能选择打开一个可以直接从 Zip 文件中执行。

从 TechNet 文章,http : //technet.microsoft.com/nl-nl/library/cc786941%28v=ws.10%29.aspx

您可以在路径规则中使用环境变量。由于路径规则是在客户端环境中评估的,因此使用环境变量(例如 %Windir%)的能力允许规则适应特定用户的环境。

...

路径规则可以包含 ? 和 * 通配符,允许诸如“*.vbs”之类的规则匹配所有 Visual Basic 脚本文件。以下示例说明了通配符的使用:

  • “\DC-??\login$”匹配\DC-01\login$、\DC-02\login$
  • “*\Windows”匹配 C:\Windows, D:\Windows, E:\Windows
  • “c:\win*”匹配 c:\winnt、c:\windows、c:\windir

我有这些 Path 规则(我已经单独和以各种组合应用了这些规则):

  • %APPDATA%\*.exe
  • %APPDATA%\*\*.exe
  • %LOCALAPPDATA%\*.exe
  • %LOCALAPPDATA%\*\*.exe
  • %TEMP%\*.exe
  • %TEMP%\7z*\*.exe
  • %TEMP%\wz*\*.exe
  • %TEMP%\Rar*\*.exe

...理论上应该直接代表用户临时文件夹下的可执行文件,以及临时文件夹中的可执行文件以 Winzip、WinRAR 和 7-zip 可能命名它们的临时文件夹的方式命名(例如%TEMP%\7zSF20.tmp\the_file.exe)。

%APPDATA%%LOCALAPPDATA%那些工作; 在%TEMP%那些没有。可执行文件似乎在 %TEMP% 下被阻止,但这只是因为,在默认设置中,它们也符合%LOCALAPPDATA%\*\*.exe规则(默认情况下,Temp 位于 AppData\Local 下)。

我最初认为这是部分文件夹名称中通配符的问题,但似乎这是特定于 %TEMP% 变量的使用(因此重写)。

我已经确认的两种解决方法(以及为什么我不想使用它们)是:

  1. 使用%LOCALAPPDATA%\Temp代替%TEMP%

    • 严格来说,这是不正确的,因为%TEMP%变量可以设置为与 不同%LOCALAPPDATA%\Temp
  2. 使用 %HKEY_CURRENT_USER\Environment\TEMP%

    • 基于注册表的路径规则似乎适用于所有子文件夹——我希望稍微轻一点(所以我不必将其他所有内容都列入白名单)
    • 基于注册表的规则似乎受到限制,因此您不能有任何更具体的内容,例如 %HKEY_CURRENT_USER\Environment\TEMP%\7z*\*.exe
      • 从那以后我发现%HKEY_CURRENT_USER\Environment\TEMP%7z*将接近(\不应指定变量和子文件夹之间的,并且之后不能指定文件名掩码)
    • 这在技术上也是不正确的,因为此注册表位置仅包含在进程开始时应该是的值,而不是在该进程的过程中可能会更改为的值——例如,如果您打开一个命令提示符,SET TEMP=C:\从提示符发出并运行程序)。

(就其价值而言,我已尝试在 GPO 的计算机和用户部分分别独立和同时配置 SRP,以防一个覆盖另一个,或者%TEMP%在计算机和用户级别以不同方式解决。)

这个%TEMP%变量有什么特别之处以至于它不适用于这里,而类似的东西%LOCALAPPDATA%\Temp\\wz*\\*.exe呢?


更新:

似乎限制是专门针对%TEMP%环境变量的。我已经编辑了这个问题,因此。

Kla*_*egg 1

当您在 cmd.exe 或 command.com 中检查该程序时,该程序可能会看到与您不同的 %TEMP% 内容。有时它们并不相同。

但无论如何,在软件限制策略中使用环境变量都是一个坏主意,因为恶意软件可以更改该变量。