防止绕过 PowerShell 执行策略

Prevent bypassing PowerShell execution policy

我们在 RDS environment. It's currently being used for tasks like remote management and App-V 虚拟应用程序发布中安装了 PowerShell。据我了解,绕过受限执行策略相当容易。

但是,我找不到任何关于防止绕过执行策略(或使其变得更难)的有用信息。我正在考虑使用文件屏蔽 (AppLocker) 来阻止 PowerShell 文件,但我想攻击者可能只使用附加到 Microsoft Office 文件的 VBA 脚本来执行 PowerShell 脚本。

目前我们专注于监控,但我希望更多地关注预防。

你试图达到的目的是毫无意义的。有许多方法可以绕过执行策略。事实上,它并不是出于安全考虑而设计的。

  1. 在任何地方安装PS 5+ 并实现脚本块日志记录。您可以将所有日志放在某个共享目录中 analyze\ingest 它们。
  2. 删除所有地方的 PS2
  3. 阻止来自网络文件的宏
  4. 使用应用程序白名单

这应该是一个很好的起点。

PS:您还可以监视事件 400,以检测在重新安装某些内容时对 PS2 的绕过(这是您不希望出现在用户计算机上的东西)PS2回.

实际上,有一些方法可以防止滥用 PowerShell(并使绕过执行策略变得毫无用处):

  1. 配置 AppLocker:还有锁定脚本
  2. 将 PowerShell 配置为使用约束模式,这样 .NET 代码就无法执行
  3. 对于您自己的应该支持 .NET 代码的脚本,您可以使用代码签名者证书对脚本进行签名(这些将被允许 运行 使用约束模式 + AppLocker)

除此之外,配置所有 PowerShell 命令的日志记录并通过中央位置发送它们(这样 IDS 就可以对其进行监控)也是一种很好的做法。

有关如何实现此目的的更多详细信息,请参阅 Detecting Offensive PowerShell Attack Tools