Windows Optics 部署指南:命令、下载与配置详解

本文详细介绍了如何部署Windows Optics,包括Sysmon配置、Windows审计策略设置、事件转发配置以及使用WinLogBeat进行日志传输,提供完整的实验室环境搭建步骤和实际操作命令。

如何部署 Windows Optics:命令、下载、说明和截图

作者:Jordan Drysdale & Kent Ickler

TL;DR

查找链接并下载。查找 GPO 并导入。查看截图以获取指导。Sysmon + Windows 审计策略 + 事件收集器和转发(处理器)+ WinLogBeat + Elastic = 产生重要端点光学的基础配置(几乎免费)。

第 1 部分 – 构建实验室环境

有一些重要的前提建议,以便完整跟随。请注意,此环境不会在您的笔记本电脑上运行。请准备消耗 6 个 CPU、20GB RAM 和约 120GB 磁盘空间。最好在虚拟环境中部署 PFSense 路由器,并在其后构建隔离网络。

PFSense VM

  • 1 vCPU,4GB RAM,20GB 磁盘
  • WAN:DHCP
  • LAN:10.10.98.1/24
  • 在 VMWare 上部署的说明:https://docs.netgate.com/pfsense/en/latest/virtualization/virtualizing-pfsense-with-vmware-vsphere-esxi.html
  • .iso 下载:https://www.pfsense.org/download/

Windows Server 2016 – 域控制器

  • 1 vCPU(2 个更好),4GB RAM(更多更好),32GB 磁盘
  • 10.10.98.10/24
  • DNS:127.0.0.1
  • DNS2:1.1.1.1
  • 部署域(Github 上的脚本):https://github.com/DefensiveOrigins/DomainBuildScripts
  • 跳过 ADDS-Step4 – 并运行 BadBlood – 为了所有一切,不要在企业域上执行此操作。

Windows 10 – 域加入工作站

  • 1 vCPU(2 个更好),4GB RAM(更多更好),32GB 磁盘
  • DHCP
  • 域加入

Ubuntu 18.04 – Elastic Stack 和攻击装备

  • 2 vCPUs,8GB RAM,32GB 磁盘
  • 10.10.98.20/24
  • DNS:10.10.98.10
  • DNS2:1.1.1.1
  • 安装 HELK。
  • 使用初始用户帐户“git clone” – 非 ROOT。
    1
    2
    3
    4
    
    user# git clone https://github.com/Cyb3rWarD0g/HELK.git
    user# sudo -s
    root# cd HELK/docker/
    root# ./helk_install.sh(将需要约 15 分钟)
    

此时,您的实验室应大致如下所示。

第 2 部分 – Sysmon

下载模块化仓库

下载 Sysmon 模块化仓库:https://github.com/olafhartong/sysmon-modular

下载后,此仓库如下所示。

此配置实用程序的强大之处在于每个关联的 Sysmon 事件 ID 容器下可用的包含/排除配置。例如,事件 ID 3 的容器:3_network_connection_initiated 具有以下文件结构。包含和排除定义了 Sysmon 用于写入事件的规则。阅读仓库的注释!您可能希望排除一些内容。太多噪音不是好事。

或者,只需从 https://github.com/olafhartong/sysmon-modular/blob/master/sysmonconfig.xml 下载 sysmonconfig.xml,并知道 Olaf 在照顾我们所有人。

生成配置文件

从 sysmon-modular 目录生成您自己的 sysmon 配置。打开 PowerShell 窗口并 CD 到刚下载并提取的仓库(repo)。

一旦您熟悉了容器结构和底层过程,请对您的网络进行适当的更改。然后,执行以下命令生成您自己的配置文件。

安装命令

以下命令实例化一个不关心您的代码签名实践的 PowerShell 会话,接受该更改请求,拉取代码并合并您的 Sysmon 模块化目录结构的内容。

1
2
3
4
Set-ExecutionPolicy bypass
Y
import-module .\Merge-SysmonXml.ps1
Merge-AllSysmonXml -Path ( Get-ChildItem '[0-9]*\*.xml') -AsString | Out-File sysmonconfig.xml

注意,此 sysmonconfig.xml 文件将在安装 Sysmon 期间使用。

手动 Sysmon 安装

应使用先前生成的配置文件(sysmonconfig.xml)进行安装。

下载 Sysmon,因为我们无法为您提供:https://docs.microsoft.com/en-us/sysinternals/downloads/sysmon

1
sysmon64.exe -accepteula -i sysmonconfig.xml

对所有实验室系统重复此过程。

每当您对 sysmon-modular 容器进行更改时,使用合并全部脚本重新生成配置文件。然后,您可以使用以下命令轻松更新 Sysmon 配置(针对您的新配置文件运行)。仅当您更新了原始 sysmonconfig.xml 时,才运行下一个命令。

1
sysmon.exe -c sysmonconfig.xml

组策略部署

SysPanda 文章在此详细说明了过程:https://www.syspanda.com/index.php/2017/02/28/deploying-sysmon-through-gpo/

创建一个启动脚本,调用 sysmon-gpo.bat 文件,该文件包含在 APT-Class 仓库中。

将 GPO 链接到任何属于安装的位置。

第 3 部分 – Windows 审计策略

以下部分包含大量阅读,因为我们在提供的 GPO 中配置的审计策略可能与您期望的最终状态不匹配。

知识扩展

Windows 审计策略配置(基线)的指导源自: https://docs.microsoft.com/en-us/windows-server/identity/ad-ds/plan/security-best-practices/audit-policy-recommendations

Palantir 还提供了相当多的设置 GPO 的指导。 https://github.com/palantir/windows-event-forwarding/tree/master/group-policy-objects

部署 GPO

在组策略管理控制台中创建两个 GPO(并通过从提供的 GPO 导入设置来节省一些时间)。

  • Enhanced-WS-Auditing
  • Enhanced-DC-Auditing

https://github.com/DefensiveOrigins/APT06202001/tree/master/Lab-GPOs 导入设置,或按照描述的 Microsoft 或 Palantir 指导构建您自己的审计策略。

浏览到您的 GPO 备份副本。

对 DC-Auditing 策略完成相同的过程。

将 GPO 链接到 OU

本文背景较少,技术性较强。因此,快速复习一下,组策略对象(或 GPO)包含一组 Windows 对象的指令。将 GPO 链接到对象还取决于您的组织单位(OU)的结构。如果您有一个混乱的 OU 结构,这一步可能很难正确完成。然而,在我们的实验室环境中,您可能需要为工作站或 ComputerObjects > 笔记本电脑和 ComputerObjects > 工作站创建几个 OU… 以便指令集可以适当应用。

将 Enhanced-WS-Auditing GPO 链接到包含 Windows 10 安装的 AD OU。

将 Enhanced-DC-Auditing GPO 链接到名为域控制器的 AD OU。

完成后,最简单的部署如下所示。

第 4 部分:WEF / WEC / 事件通道配置

这是配置事件转发指令并启动事件收集器的部分。收集器需要用于入站日志的桶和 Windows 事件转发(WEF)客户端的事件订阅。

Windows 事件转发

在事件收集器上打开 gpmc.msc(组策略管理控制台)。 创建一个名为 Windows 事件转发的新 GPO。从以下仓库收集对象以进行导入。根据实验室的域命名,您可能需要修改服务器 FQDN。WEF GPO 位于 https://github.com/DefensiveOrigins/APT06202001/tree/master/Lab-GPOs 仓库。

我们需要确保事件日志读取器(内置本地组)可以正常工作。

配置(或只是双重检查)订阅管理器 URL,即事件收集器。

配置检查!

此策略配置参数位于 GPO 树中的此处: 计算机配置 > 策略 > 管理模板 > Windows 组件 > Windows 事件转发 > 配置目标订阅管理器)

订阅管理器应为:http://YourWEC’sFQDN:5985/wsman/SubscriptionManager/WEC,Refresh=60

似乎在使用 HTTP 进行此连接时存在一些困惑。我的理解是转发的日志在传输过程中仍通过 Kerberos 加密。

启用 WinRM – 所有系统必需

由于收集和转发过程中的所有系统都需要 WinRM,因此为此服务和防火墙规则创建并附加一个 GPO。

创建一个名为:启用 WinRM 和防火墙规则的新 GPO

导航到计算机 > 策略 > Windows 组件 > Windows 远程管理(WinRM)> WinRM 服务

将“允许远程服务器管理”设置为启用。

接下来,计算机 > 首选项 > 控制面板 > 服务,并添加 WinRM,如下所示。

接下来,创建防火墙规则,该规则位于 GPO 树下(或 – 我们已经完成此操作并导出了 GPO 供您使用)。

计算机配置 > 策略 > 安全设置 > Windows 防火墙和高级安全 > Windows 防火墙和高级安全

为 WinRM 添加预定义规则。

或者,创建一个名为启用 WinRM 和防火墙规则的新 GPO,并从提供的同名 GPO 导入设置。

链接 GPO

将此 GPO 附加到域。此时,以下配置是启用基线审计策略、启用 WinRM 并告诉系统订阅管理器(用于转发事件)在网络上的位置的最简单部署。

  • 所有系统:启用 WinRM 和防火墙规则
  • 工作站:审计策略和 Windows 事件转发
  • 域控制器:审计策略和 Windows 事件转发

Windows 事件收集器 / 事件通道配置(在事件收集器上)

下载并提取 Palantir 事件转发仓库:https://github.com/palantir/windows-event-forwarding

访问事件收集器(实验室环境中的 DC)并从 CMD 提示符停止 wecsvc。

1
net stop Wecsvc

在事件查看器中手动禁用所有 WEF 订阅,通过卸载当前事件通道(um = 卸载清单)。

1
wevtutil um C:\windows\system32\CustomEventChannels.man

从仓库的“windows-event-channels”容器中替换 C:\Windows\System32\ 中列出的文件。或者,如果它们不存在,只需将它们复制到那里。

  • CustomEventChannels.dll
  • CustomEventChannels.man

加载替换通道。(im = 导入清单)

1
wevtutil im C:\windows\system32\CustomEventChannels.man

现在在 PowerShell 中增加通道(日志桶)的大小!不是 CMD。

1
2
3
4
5
CMD C:\> powershell -ep bypass
$xml = wevtutil el | select-string -pattern "WEC"
     foreach ($subscription in $xml) {
      wevtutil sl $subscription /ms:4194304
     }

重新启动事件收集器服务(从 CMD 提示符)

1
net start wecsvc

事件查看器应在收集器上有一些新通道。您可能需要重新启动 Windows 事件查看器服务。

接下来,添加关联的订阅。CD 到 windows-event-forwarding 目录中的 wef-subscriptions 容器。

使用以下 for 循环安装所有订阅 – CMD 提示符,不是 PowerShell!

1
for /r %i in (*.xml) do wecutil cs %i

所有适当的 GPO 链接如下:

  • 启用 WinRM:所有系统
  • DC-Auditing:仅 DC
  • WS-Auditing:所有工作站
  • Windows-Event-Forwarding:所有系统

在两个域系统上运行以下命令。

1
gpupdate /force

第 5 部分:最后。使用 WinLogBeats 进行日志传输

下载仓库,因为我们无法为您提供。

从 Defensive Origins Github 下载 WinLogBeat 配置文件(winlogbeat.yml):https://github.com/DefensiveOrigins/APT06202001/tree/master/Lab-WinLogBeat

此配置文件,正如社区一位非常慷慨的成员向我们指出的,我们的 Elastic 实例使用 Kafka 进行摄取。您可能需要修改文件的最后几行以匹配您的网络配置。我们进一步更改了配置文件的条款,以包括所有 WEC 条目和事件通道配置。

下载 WinLogBeat 安装程序 https://www.elastic.co/downloads/beats/winlogbeat

用提供的实例替换提供的 winlogbeat.yml 文件(您可能需要检查文件最底部的 Logstash 配置的 IP 地址指令)。

安装传输器

在 WinLogBeat 目录中打开 PowerShell 会话并运行以下命令。

1
2
3
4
powershell -Exec bypass -File .\install-service-winlogbeat.ps1
Set-Service -Name "winlogbeat" -StartupType automatic
Start-Service -Name "winlogbeat"
Get-Service winlogbeat

Beats 正在运行。检查您的 Kibana 安装以获取日志。

完成!!! 感谢您阅读到这里。我们感谢社区的所有支持,包括: @banjocrashland @strandjs @cyb3rward0g @olafhartong 干杯!!祝狩猎愉快!!! Jordan 和 Kent Black Hills InfoSec Defensive Origins

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