如何在预算有限的情况下进行端点监控 - 网络研讨会文稿
Joff Thyer & Derek Banks //
作为渗透测试人员,我们经常处于建议"增加端点可见性"的位置,特别是在事件日志记录方面。我们通常对此感觉良好,因为这无疑是一个基于充分证据的合理建议。
你问什么证据?当我们进行渗透测试时,我们有特定的行为模式会留下证据痕迹;然而,这些证据很少在中央服务器上找到。大多数活动发生在环境的边缘,直到入侵后期才可能有任何集中记录的内容。
通常在测试中,我们会通过社会工程让用户运行自定义恶意软件。这可能通过网站、可移动介质或电子邮件传递方式实现,促使用户在终端站上执行操作。这种恶意软件会轻易规避端点保护,并在几乎所有情况下创建出站命令和控制(C2)通道。我们下一个典型动作是提升权限,开始在您的环境中横向移动,可能在此过程中无情地掠夺数据!作为升级的一部分,我们可能使用密码喷洒技术或利用其他软件漏洞。这些行为模式可能会在中央服务器上留下一些日志证据,但绝大多数证据将留在端点事件日志中。实际攻击者使用其特定工具、技术和程序也会在端点上留下类似的活动痕迹。
像渗透测试人员一样,攻击者依赖于通常没有人监视环境内部发生的情况,并且大多数预防和检测方法在网络入口/出口处实施。如果他们能够通过这些,他们可能在一段时间内不会被检测到。端点监控,特别是网络边缘的Windows端点,对于发现已通过上游基于网络的解决方案的攻击者至关重要。
几乎我们所有的客户都会用类似的反问来回应这个建议:“嘿[BHIS测试员],我们有数千个端点。我怎么可能收集所有端点的日志并能够追捕威胁行为者?“公平的问题!
虽然SIEM供应商绝对希望您创建大量事件数据流,但我们都知道这种方法在财务或运营上都无法扩展。那么,我们能否生成专注于正确事项且不会让我们付出巨大代价的端点事件日志记录?
如果您愿意,一个选择是构建自己的解决方案,可以适当调整和扩展。有几个有用的解决方案(开源和付费)可以应对这一挑战,并且可以智能配置以便扩展。以下是我们将考虑的组件列表,我们在最近的网络研讨会中也讨论了这些内容。
NXLOG:一个开源和商业日志管理解决方案,适用于包括Windows和Linux在内的多个平台。 SysInternals Sysmon:一个优秀的Windows事件日志增强模块,由Microsoft的Mark Russinovich编写。 Elasticsearch:一个高度可扩展的开源分析数据存储和搜索解决方案。 Kibana:Elasticsearch的配套Web界面,能够生成直接搜索查询并组合数据可视化。 Logstash:一个可扩展的日志摄取引擎,可以轻松将其输出转发到Elasticsearch。
需要强调的是,创建可扩展解决方案的关键是分发事件日志过滤配置,以便只有绝对最小和必要的信息流回Logstash,随后进入Elasticsearch。
还要意识到,这里的目的是为监控和IR团队创建一个战术监控解决方案的概念验证,而不是合规性和长期日志归档系统。
虽然可以使用多个收集器进行日志记录和多个弹性服务器来扩展解决方案,但在本文使用的概念验证中,为简单起见,Elastic、Logstash和Kibana组件(ELK堆栈)都安装在单个系统上。
首先,我们需要在Windows端点上运行Sysmon。接下来,我们将在端点上配置PowerShell日志记录。然后,我们将配置NXlog以将Sysmon日志以及特定目标事件发送到Elastic Stack解决方案。所有这些都将通过组策略对象(GPO)配置,但您可能希望在您的环境中以不同方式部署(一如既往,请咨询您友好的本地系统管理员)。
Sysmon配置
Microsoft的Sysmon是作为Sysinternals Suite的一部分发布的工具。它扩展了端点的日志记录能力,超越了标准事件日志。它记录的一些关键事件是:
- 具有完整命令行和父进程的进程创建
- 执行进程的哈希
- 网络连接
- 文件创建时间更改
在本地系统上,它将这些日志存储在事件查看器中的应用程序和服务日志>Microsoft>Windows>Sysmon>操作中。默认情况下,Sysmon日志记录会产生相当多的日志噪音。这就是为什么在安装时应使用配置文件来过滤端点上已知良好或特别已知不良的事件。这样,您就不会将大量噪音发送到中央日志记录系统。
我们建议您从优秀的@SwiftOnSecurity配置文件开始,可以在他们的Github页面上找到。从那里,您可以向文件中添加您需要的内容,以进一步减少环境中的噪音。
从命令行安装(具有管理员权限):
|
|
配置可以类似方式更新:
|
|
PowerShell日志记录
不仅仅是渗透测试人员越来越多地在他们的技巧中使用PowerShell - 实际攻击者也是如此。这是一个强大的环境,可以在攻击的每个阶段完成任务,从将shellcode注入内存到利用后的态势感知和横向移动。在大多数环境中,使用Windows 7附带的版本(版本2.0)执行PowerShell会留下很少的使用痕迹,从攻击者的角度来看非常有吸引力。
Microsoft从PowerShell版本5开始改变了日志记录盲点。此版本是Windows 10的默认版本,因此如果您只使用Windows 10,可以跳过部署GPO来启用日志记录。其他99.9%的人需要做一些事情才能在Windows 7上运行版本5。
首先,您需要在所有Windows 7端点上安装Windows Management Framework 5.1。此任务留给读者找出最适合其环境的方法。
安装后,创建一个GPO以在端点上强制执行日志记录设置。这在管理模板>Windows组件>Windows PowerShell中。
有多个日志记录选项。对于我们启用战术监控以检测潜在攻击者的目的,两个最有用的可能是PowerShell脚本块日志记录和PowerShell模块日志记录。
模块日志记录将在事件ID 4103中记录管道执行详细信息,并具有脚本和输出格式化数据的详细信息。脚本块日志记录将在PowerShell引擎执行代码时记录代码,因此将记录去混淆的代码到事件ID 4104。
您还可以选择启用PowerShell转录以收集在每个PowerShell会话中输入的命令。这将将所有输入和输出存储到用户文档目录中唯一命名的文本文件中。对于我们发送日志数据到中央日志存储库以帮助发现攻击者的目的,这不是完全必要的。
Windows 7系统的另一个注意事项是下载Windows 10的管理模板,并将PowerShellExecutionPolicy.admx和PowerShellExecutionPolicy.adml复制到\sysvol\Policies\Policy Definitions目录。
Nxlog配置
有几个端点代理选项可以将Windows事件日志发送到中央syslog服务器,包括开源和付费选项。Microsoft还提供解决方案和策略来整合端点日志。
对于本文,我们选择使用NXlog。nxlog.co的人们提供免费(社区版)和企业版。社区版应足以满足大多数Windows端点日志记录任务,并提供基于日志类型或事件ID进行过滤的能力。
与Sysmon一样,我们将从命令行安装NXlog:
|
|
我们使用的配置文件位于此处。我们选择发送Sysmon、帐户登录、帐户创建、帐户登录失败、帐户启用、帐户添加到本地组和事件日志清除。您可能希望根据监控需求添加到此列表。确定哪些额外事件ID可能帮助您找到潜在攻击者的资源是NSA Spotting the Adversary论文(本文发布时官方链接已关闭)。
NXlog配置文件片段
更改配置文件以指向中央日志记录系统后,需要将其放置到位并重新启动NXlog服务:
|
|
部署选项
您可能已经有一个软件部署系统可以安装和配置NXlog和Sysmon。如前所述,请与您的系统管理员交谈。但是,如果您没有,GPO部署是一个选项。
我们选择使用批处理文件作为启动脚本进行部署。您可以在此处获取我们的示例批处理文件。
将批处理文件以及Sysmon和NXlog的安装和配置文件复制到域的SYSVOL共享中的某个位置,并更改批处理文件路径以反映位置。
然后,使用组策略管理创建新的GPO。编辑GPO并导航到策略>Windows设置>脚本,选择启动,右键单击并选择启动的属性。
单击"添加"并浏览到您的install.bat脚本网络位置。单击"确定”,然后应用更改。关闭编辑器,右键单击GPO并确保选择了"强制”。
Elastic Stack
对于Elastic Stack,我们使用了Ubuntu 16.04的标准安装以及Elasticsearch、Logstash和Kibana的Debian包文件。一旦您的Ubuntu服务器启动并运行,从elastic.co下载文件并使用dpkg安装。
|
|
使用您最喜欢的文本编辑器(当然是Vi)编辑/etc/kibana/kibana.yml,并更改"server.host:“行以反映系统的IP地址。
现在我们需要放置一个logstash过滤器以正确格式化传入的日志文件并将它们放入Elasticsearch。从此处下载logstash配置文件并将其放在/etc/logstash/conf.d目录中。
现在启动Elasticsearch、Logstash和Kibana服务。
|
|
导航到系统的IP地址和端口5601。您应该看到Kibana服务页面。将"logstash-“更改为"winevent-“并单击"创建”。如果一切按计划进行,您应该已经看到一些事件传入。
请意识到,虽然本文中涵盖的组件可用于企业部署,但实际实施需要一些未涵盖的考虑因素。例如:安全身份验证、加密通信以及处理来自数千个工作站的更大流量量的硬件要求。这些并非不可克服的问题,每个环境都不同并有独特的需求。调整工具和概念以适应您的需求。