首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

设置PowerShell脚本块日志以加强安全

译者 | 布加迪

审校 | 重楼

本文介绍如何设置系统以捕获异常PowerShell行为,从而加强防御。

PowerShell是一种非常全面且易于使用的语言。但是管理员需要保护组织远离不法分子,以免他们利用PowerShell搞破坏活动。

作为Windows中的一路原生工具,PowerShell的广泛功能使得攻击者很容易利用该语言做文章。越来越多的恶意软件和不法分子使用PowerShell将不同的攻击方法结合起来,或者完全通过PowerShell运行漏洞利用代码。这种攻击常常逃避检测,是由于攻击者利用了操作系统的原生组件。

有许多方法和最佳实践可用于保护PowerShell。其中最有价值的是PowerShell脚本块日志记录。脚本块是作为一个整体使用的一组语句或表达式。脚本块是使用花括号{}定义一个代码块。

从Windows PowerShell版本4.0开始,脚本块日志记录会生成已执行代码的审计跟踪,但在Windows PowerShell版本5.0中得到了显著改进。Windows PowerShell版本5.0引入了一个日志引擎,可以自动解密使用XOR、Base64和ROT13等方法混淆处理的代码。PowerShell包含原始的加密代码,以供比较。

PowerShell脚本块日志有助于在安全泄密后分析事件,以便提供额外的洞察力。它还可以帮助IT人员更主动地监视恶意事件。比如说,如果您在Windows中设置了事件订阅,可以将感兴趣的事件发送到集中服务器,进行更仔细的观察。

设置Windows系统以实现日志功能

在Windows系统上配置脚本块日志的两种主要方法是直接设置注册表值,或在组策略对象中指定适当的设置。

要通过注册表配置脚本块日志记录,请在以管理员的身份登录时使用以下代码。

左右滑动查看完整代码

您可以在组策略中设置PowerShell日志记录设置,这可以在本地机器上设置,也可以通过面向全组织的策略来设置。

打开本地组策略编辑器,进入到“计算机配置>管理模板> Windows组件> Windows PowerShell >打开PowerShell脚本块日志记录”。

图1. 从Windows中的本地组策略编辑器设置PowerShell脚本块日志记录

当您启用脚本块日志记录时,编辑器会开启一个额外的选项:当命令、脚本块、函数或脚本启动和停止时,通过“日志脚本块调用启动/停止事件”来记录事件。这有助于跟踪事件发生的时间,尤其是针对长时间运行的后台脚本。这个选项在日志中生成大量的额外数据。

图2. PowerShell脚本块日志记录跟踪已执行的脚本和命令行上运行的命令

如何在非Windows系统上

配置脚本块日志记录?

PowerShell Core是PowerShell的跨平台版本,适用于Windows、Linux和macOS。要在PowerShell Core上使用脚本块日志,您就需要在$PSHome目录下的PowerShell .config.json文件中定义配置,该文件对于安装的每个PowerShell都是唯一的。

使用Nano文本编辑器等工具修改文件,并粘贴以下配置。

测试PowerShell脚本块日志记录

测试配置很容易。从命令行运行以下命令。

查看Windows操作系统上的日志

您如何知道要留意哪些条目?需要留意的主要事件ID是4104。这是ScriptBlockLogging条目,对应含有用户和域、记录的日期和时间、计算机主机以及脚本块文本的信息。

打开事件查看器,进入到以下日志位置:“Applications and Services Logs > Microsoft > Windows > PowerShell > Operational”。

点击事件,直到从测试中找到标为事件ID 4104的条目。针对该事件过滤日志,以加快搜索速度。

图3. Windows事件查看器中的事件4104详细说明了Windows计算机上的PowerShell活动

在Windows操作系统上的PowerShell Core中,日志位置是:Applications and Services Logs > PowerShellCore > Operational。

非Windows系统上的日志位置

在Linux上,PowerShell脚本块日志将记录到syslog。其位置将因发行版而异。在本教程中,我们使用Ubuntu,其syslog在/var/log/syslog目录下。

运行以下命令显示日志条目。值得注意的是,该命令需要提升的权限,因此您将需要使用sudo命令。

在Linux上设置集中式服务器不一样,因为您默认使用syslog。您可以使用许多不同的工具将日志发送到日志聚合服务,以便从中心位置跟踪PowerShell活动。Rsyslog是一种流行的选择,但其他选项包括Dynatrace、New Relic和Datadog。

https://www.techtarget.com/searchwindowsserver/tutorial/Set-up-PowerShell-script-block-logging-for-added-security

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20230407A05CCF00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券