使用Windows事件转发器实现端点日志集中化

本文详细介绍了如何利用Windows原生功能实现端点日志集中收集,包括WEF服务器配置、GPO策略部署、Sysmon集成以及PowerShell日志记录,构建低成本SIEM解决方案。

端点日志集中化与Windows事件转发器

Derek Banks //
我想扩展我们之前关于集中式端点事件日志记录的博客文章,使用Windows事件转发功能,并利用微软原生工具将事件发送到中央位置。为什么要这样做?

我希望有一台基于Windows的服务器,包含环境中的所有事件日志,以便可以使用PowerShell进行分析。这样我就可以将转发的事件发送到上游ELK服务器进行可视化,并拥有多种数据处理选项。这种架构随后构成了我们CredDefense工具包所需设置的一部分。

此外,在某些环境中,可能不希望再向Windows端点部署另一个代理。WEF已经存在相当长的时间,但许多人没有意识到日志集中功能是Windows内置的,不需要在端点上使用代理。

虽然已经存在一些非常好的指南(参考链接中提及),但它们并没有完全帮助我使WEF完全正常运行。这可能是由于Microsoft服务器操作系统的不同版本所致。实验室系统的服务器端使用Windows Server 2012,工作站则混合使用Windows 10企业版和专业版以及Windows 7专业版。

Windows事件转发器设置

第一步是建立收集器服务器,该服务器将接收环境中其他Windows系统的日志。系统大小将由您的环境决定,但由于我们不会发送每个事件,因此可以使用适中的服务器,并在需求变化时进行调整。

首先,在收集器服务器上运行以下命令:

1
C:>winrm qc

这将启动WinRM服务,并将服务启动类型设置为自动启动,同时配置用于发送和接收WS-Management协议消息的端口的侦听器。

接下来使用wecutil配置Windows事件收集器服务,并确保其在系统重启时启动。

1
C:>wecutil qc

这还将注册一个服务主体名称(SPN)用于Kerberos身份验证。如果您使用现有服务器且已注册HTTP SPN,则WEF将无法工作,除非您删除现有的SPN。如果您使用新系统,可能不必担心这一点。如果在设置过程中遇到问题并需要检查SPN注册,可以使用:

1
setspn -t <domain> -q */*

在收集器服务器上创建测试订阅

为您希望监视的端点创建一个域安全组,并将目标系统放入该组中。或者,如果您在测试环境中,可以仅使用“域计算机”。否则,最初使用环境中的所有计算机进行设置可能不是最佳主意。最好从小规模开始,逐步扩展,而不是一开始就遇到问题。

确定目标系统后,在收集器服务器上打开事件查看器并选择订阅。您可能会被提示自动配置Windows收集器服务。选择“是”。

右键单击订阅并选择“创建订阅”。对于订阅名称,输入“安全日志已清除”。目标日志应为“转发的事件”。选择“源计算机启动”的单选按钮,然后选择“选择计算机组…”。添加您最初将监视的目标组。

接下来,选择“选择事件…”,在事件日志下拉菜单中选择安全日志。

配置事件日志转发条目

在本指南中,我们将创建一个包含所有用于端点安全分析的事件日志转发设置的GPO。此外,所有域成员计算机都将转发到同一个WEF服务器。

打开组策略管理面板,选择您的域,右键单击并选择“在此域中创建GPO,并在此处链接…”。输入名称,例如Windows事件转发,然后选择确定。

在计算机>策略>管理模板>Windows组件>事件转发下,右键单击“配置目标订阅管理器”条目并选择编辑。在选项窗格中,选择“已启用”单选按钮和“订阅管理器”旁边的“显示”。

为值输入以下行,将“eventserver.domain.local”部分替换为完全限定域名:

1
Server=http://eventserver.domain.local:5985/wsman/SubscriptionManager/WEC,Refresh=60

请注意,此配置通过HTTP而不是HTTPS进行转发。如果需要,转发的事件流量可以加密并使用HTTPS。

通过GPO启用Windows远程管理(WS-Management)服务

需要在所有将转发事件的系统上启动Windows远程管理(WS-Management)服务。请注意,它们不需要侦听HTTP或HTTPS – 唯一需要侦听并配置防火墙规则的系统是WEF服务器。

要在启动时启用Windows远程管理,请在组策略管理编辑器中选择计算机配置>首选项>控制面板设置>服务。然后右键单击服务窗格并选择新建>服务。

在启动字段中,选择“自动(延迟启动)”,并选择服务名称为WinRM – 也称为Windows远程管理(WS-Management)。将服务操作保留为“启动服务”。单击应用和确定。

通过GPO允许本地网络服务访问本地事件日志

将日志转发到中央WEF服务器的本地系统需要授予网络服务帐户读取事件日志的权限。有一个内置的Windows组对此很有用,称为“事件日志读取者”。

在计算机配置>Windows设置>安全设置>受限组下,右键单击并选择添加组…,输入事件日志读取者,然后选择确定。右键单击您刚刚添加的事件日志读取者组,选择属性,并添加网络服务。单击应用和确定。

Sysmon GPO

Microsoft的Sysmon是作为Sysinternals套件一部分发布的工具。它扩展了端点的日志记录能力,超越了标准事件日志。Windows现在可以原生记录执行进程的完整命令行,但Sysmon提供了可能非常有用的额外数据。

  • 执行进程的哈希
  • 网络连接
  • 文件创建时间更改
  • WMI过滤器和消费者

在本地系统上,它将这些日志存储在事件查看器中的应用程序和服务日志>Microsoft>Windows>Sysmon>操作中。默认情况下,Sysmon日志记录会产生相当多的日志噪音。这就是为什么在安装时应使用配置文件来过滤端点上已知良好或特别已知不良的事件。这样,您就不会向中央收集器发送不必要的日志。

我们建议您从优秀的@SwiftOnSecurity配置文件开始,该文件可以在他们的Github页面上找到。从那里,您可以添加所需内容以进一步减少环境中的噪音。

处理Sysmon部署的一种方法是通过GPO创建启动脚本,运行批处理文件检查Sysmon是否已安装,如果未安装,则使用正确的配置文件进行安装。如果已安装,请确保服务已启动。

示例安装脚本可以在此处找到。确保Sysmon可执行文件、配置文件和批处理文件都在一个共享位置。我们选择了SYSVOL共享 – 根据您在环境中的选择相应编辑脚本。

在GPO编辑器中,选择计算机配置>Windows设置>脚本(启动/关机)并添加安装脚本。

PowerShell脚本块和模块日志记录

利用PowerShell进行攻击在渗透测试人员和实际威胁行为者中变得非常流行。过去,PowerShell日志记录能力不足,但随着PowerShell 5.0的发布,这种情况发生了变化。这是Windows 10的默认版本,因此如果您已将所有Windows端点从Windows 7迁移,那么您就可以开始了。

在本文发布时,大多数地方尚未完全从Windows 7迁移。如果您的环境也是如此,您需要安装Windows Management Framework 5.0并通过GPO启用日志记录。此任务留给读者根据其环境的软件部署情况自行决定。

安装后,使用GPO编辑器启用模块和脚本块日志记录。这位于管理模板>Windows组件>Windows PowerShell中。

模块日志记录将在事件ID 4103中记录管道执行详细信息,并包含有关脚本和输出格式化数据的详细信息。脚本块日志记录将记录由PowerShell引擎执行的代码,因此记录去混淆的代码到事件ID 4104。

对于Windows 7系统,另一个注意事项是下载Windows 10的管理模板,并将PowerShellExecutionPolicy.admx和PowerShellExecutionPolicy.adml复制到\sysvol\Policies\Policy Definitions目录。

其他订阅

此时,您应该准备好测试事件转发。在创建其他订阅之前,请清除其中一个已订阅端点的事件日志。您可以通过右键单击订阅并选择运行时状态来验证客户端的检查状态。如果一切正常工作,清除的日志事件很快就会显示在WEF服务器上的转发事件日志中。

如果一切正常,现在是时候创建其他订阅以促进收集重要内容。NSA发现对手出版物可以用作指南,以下是我们建议的最低要求。

帐户和组活动

此订阅将收集域和本地组及帐户活动。要添加的安全事件日志事件是:4624、4625、4648、4728、4732、4634、4735、4740、4756。这些事件对于执行身份验证分析是必要的。

Kerberos

此订阅用于来自域控制器的事件ID 4769。由于票证请求频繁,将记录大量数据,但是,与HoneyToken帐户配对,它有可能检测到Kerberoasting攻击。

PowerShell日志记录

要收集之前启用的模块和脚本块事件,请创建订阅以收集Microsoft-Windows-PowerShell/Operational日志并获取事件ID 4103和4104。

Sysmon

所有Sysmon日志都将发送到WEF服务器。选择Microsoft-Windows-Sysmon/Operational事件日志,并将目标计算机保留为“所有计算机”。

将日志发送到ELK

与我们之前关于端点日志集中化的文章类似,我们将使用nxlog将日志从WEF服务器发送到ELK堆栈。这种架构允许在基于Windows的日志服务器上使用PowerShell和C3工具以及EVTX文件,同时通过ELK提供可视化搜索能力。

如果需要,请使用之前的博客文章启动并运行ELK。nxlog的配置文件将不同。在WEF服务器上安装nxlog,并修改此处的配置文件以指向您的ELK堆栈。

可以在此处找到用于摄取转发日志的基本logstash过滤器。

结论

Windows事件转发器提供了一种原生方式来集中Windows端点日志。可以在WEF服务器上使用PowerShell和C#工具分析转发的事件。此外,将事件发送到ELK堆栈提供了可视化和狩猎能力。整体设计结合发送特定日志文件,如身份验证、PowerShell模块和脚本块日志记录以及Sysmon日志,创建了一个DIY SIEM设置,可用于检测网络中的潜在攻击者。

参考:

https://joshuadlewis.blogspot.com/2014/10/advanced-threat-detection-with-sysmon_74.html https://blogs.technet.microsoft.com/jepayne/2015/11/23/monitoring-what-matters-windows-event-forwarding-for-everyone-even-if-you-already-have-a-siem/ https://github.com/iadgov/Event-Forwarding-Guidance

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计