Windows 10 和 PowerShell V5 脚本安全与防护的进展
在 Windows 的最近几个版本中,我们一直致力于使平台对管理员、开发者和高级用户更加功能强大。PowerShell 是一种极其有用且强大的语言,用于管理 Windows 域。不幸的是,攻击者可以在执行“后利用”活动(系统被入侵后执行的操作)时利用这些相同的特性。
PowerShell 团队认识到这种行为,在 Windows 10 和 PowerShell V5 中显著增强了以安全为重点的日志记录和检测功能。一些功能利用了 Windows 10 的新功能,其他功能在 Windows 8.1 和 Windows Server 2012R2 上通过 KB3000850 可用,而特定于 PowerShell V5 的功能将在下一个版本的 Windows 管理框架发布时在 Windows 7 和 Windows Server 2008R2 上可用。
反恶意软件引擎的脚本透明度
反恶意软件引擎传统上主要关注应用程序(或系统)打开的文件。脚本历来难以被反恶意软件引擎评估,因为脚本可以很容易地被混淆。除非反恶意软件引擎能够模拟特定的脚本语言,否则它将无法对脚本进行去混淆以查看实际的有效负载。
Windows 10 的一项新功能——反恶意软件扫描接口(AMSI)——使应用程序能够成为恶意软件防御的积极参与者。应用程序现在可以请求对任何内容进行反恶意软件评估,而不仅仅是磁盘上的文件。这使脚本引擎(和其他应用程序)能够请求对去混淆的脚本进行评估,并请求对直接输入控制台的内容进行评估。
有关反恶意软件扫描接口的更多信息,请参阅 http://blogs.technet.com/b/mmpc/archive/2015/06/09/windows-10-to-offer-application-developers-new-malware-defenses.aspx
PowerShell 日志记录改进
鉴于 PowerShell 的 shell 和脚本语言的强大功能,我们在 PowerShell V5 的透明度方面取得了重大进展:
改进的旁录转录
以前版本的 PowerShell 提供了转录会话的功能。不幸的是,转录不是全局可配置的,可以轻松禁用,并且仅在交互式 PowerShell 控制台中工作。结果是转录对于检测恶意活动不太实用。
对于 PowerShell V5 和带有 KB3000850 的 Windows 8.1/2012R2,转录进行了以下更改:
- 现在可以配置为系统范围的组策略
- 提供比以前的转录功能更好的会话信息
- 转录在非交互式和交互式 PowerShell 会话中均有效
深度脚本块日志记录
以前版本的 PowerShell 提供了“管道日志记录”,这是一种记录所有调用的命令(包括参数)的机制。这些信息的记录方式使其难以用于安全审计和检测。在 PowerShell V5 和带有 KB3000850 的 Windows 8.1/2012R2 中,PowerShell 获得了一种新的以安全为重点的日志记录机制,称为“脚本块日志记录”。
“脚本块”是 PowerShell 中可执行代码的基本级别。即使脚本被混淆,它最终也必须从混淆的脚本块转换回包含其恶意有效负载的去混淆脚本块。
PowerShell 现在提供了在执行之前将所有脚本块记录到事件日志中的选项。对于混淆的脚本,混淆的和去混淆的脚本块都将被记录。这使防御者能够准确查看在其系统上运行的 PowerShell 代码。
受保护的事件日志记录
增加机器上的日志记录时的一个担忧是,您记录的信息可能包含敏感数据。如果攻击者入侵了该机器,事件日志中的这些敏感信息可能是凭据、机密系统等的宝库。为了解决这个问题,我们在 Windows 10 中添加了受保护的事件日志记录,它允许参与的应用程序在将敏感数据写入事件日志时对其进行加密。然后,您可以在将这些日志移动到更安全和集中的日志收集器后解密和处理它们。
其他安全改进
添加到 PowerShell V5 的其他安全功能包括:
- 使用加密消息语法(CMS)标准的加密和解密 cmdlet
- 为开发者提供的安全代码生成 API
- 用于实施 AppLocker 策略的系统的“受限 PowerShell”
有关 PowerShell 透明度改进、受保护事件日志记录和其他 PowerShell 安全改进的更多信息,请参阅 http://blogs.msdn.com/b/powershell/archive/2015/06/09/powershell-the-blue-team.aspx
Joe Bialek(MSRC 工程)、Lee Holmes(PowerShell)