安全运行 PowerShell 及编写安全代码指南
1. 安全运行 PowerShell
1.1 应用程序控制
应用程序控制解决方案可防止未经授权的应用程序运行。第三方应用如 Trellix 可实现此功能,而 Windows 10 及更高版本自带两个内置应用:Windows Defender 应用程序控制(WDAC)和 AppLocker。它们可创建策略,强制执行允许执行的应用程序白名单,阻止其他应用运行。由于 AppLocker 已停止开发,推荐使用 WDAC。这些解决方案适用于企业环境,支持集中控制,但目前没有适用于 Linux 或 macOS 上 PowerShell 的相关解决方案。当 PowerShell 在默认 WDAC 策略下运行时,可通过语言模式为受信任的模块和脚本授予比不受信任的模块和脚本更多的访问权限。
1.2 语言模式
语言模式用于控制在受应用程序控制策略约束的 PowerShell 环境中脚本的运行方式。需要注意的是,网上很多文章介绍通过变量设置语言模式,这仅用于测试代码在特定模式下的行为,并不安全。微软表示,使用语言模式强制执行安全策略的唯一方法是通过 WDAC 等应用程序。语言模式有以下三种:
- FullLanguage :在未运行应用程序控制策略时为默认模式。
- ConstrainedLanguage :防止创建和使用某些 .NET 类型,限制从 PowerShell 访问 C# 代码,还限制对 ScheduledJob 等功能的访问。许多脚本在受限语言模式下无法运行,需要进行签名,并将发布机构添加到白名单中。
-
超级会员免费看
订阅专栏 解锁全文

92

被折叠的 条评论
为什么被折叠?



