工程

使用 Elastic Stack、Wazuh 和 IDS 改进安全分析

Elastic Stack 提供了广泛用于威胁检测、可见性和事件响应的安全分析功能。Elasticsearch 可以快速索引和搜索大量安全相关信息,帮助安全分析师更高效地工作,而 Kibana 仪表板提供了广泛的可见性,并支持交互式威胁搜索。Machine Learning引擎可以自动分析复杂的数据集,从而帮助我们发现难以注意到的入侵。

流行的入侵检测系统 (IDS)(如 Wazuh 或 Suricata)使用基于签名的方法进行威胁检测。也就是说,它们将在文件、日志和网络流量中发现的模式与已知与恶意活动相关的模式数据库进行比较,并在发现匹配时发出警报。它们提供了有用的规则集用于分析和关联数据,通常会在生产环境中每天生成数千或数百万个警报。

“广撒网”可以确保捕获所有潜在的安全事件,但也增加了每天筛选数千(或数百万)警报的工作。Elastic Machine Learning 功能通过自动识别异常行为来帮助降低无效警报。这是一个明显的用例,其中基于异常和基于签名的技术相互补充,使得威胁检测更容易,调查更有效。

Wazuh 是一个基于开源主机的入侵检测系统 (HIDS),通常与 Elastic Stack 一起部署。它提供日志分析、文件完整性监测、恶意软件和漏洞检测、配置评估和事件响应功能。Wazuh 解决方案架构基于运行在受监测系统上的多平台轻量型代理,向进行数据分析的中央服务器报告。此外,它为配置管理、状态监测、查询和警报数据可视化提供了完整的 Kibana 插件。

另一方面,Suricata 是一个免费的开源网络威胁检测引擎,能够进行实时网络入侵检测 (NIDS)、内联入侵防御 (NIPS)、网络安全监测 (NSM) 和离线 PCAP 处理。Suricata 使用其规则和签名语言检查网络流量,以匹配已知威胁、策略违规和恶意行为,并支持用于检测复杂威胁的脚本。

在这篇博客文章中,我们将概述如何使用 Wazuh 和 Suricata 的集成以及 Elastic Machine Learning 作业来检测入侵,以帮助确定调查的优先级。

集成 Wazuh、Suricata、Elastic Stack

为了完成这篇博文的撰写目的,我们建立了一个实验室环境。在这个环境中,Wazuh 代理已经被部署到几个面向互联网的服务器,用于监测系统和应用程序日志数据、文件完整性和系统调用情况。

此外,我们正在运行 Suricata 传感器,负责监测网络流量。此传感器通常配置为通过网络分接头、镜像端口或 SPAN(交换端口分析器)端口监测流量,但也可以直接部署到您的服务器。

为了充分利用这两种工具,我们决定使用 Wazuh 规则分析 Suricata 警报,统一警报格式,并允许我们进行关联(例如与威胁情报来源关联)并触发自动响应。

这种集成是通过配置一个 Wazuh 代理来读取 Suricata JSON 输出来完成的。该代理充当收集器,将 Suricata NIDS 警报转发到 Wazuh 服务器,然后通过 Wazuh 日志分析规则处理这些警报,从而产生新的、带拓展详情的安全事件。

现在,作为这项作业的结果,NIDS 和 HIDS 警报都通过 Filebeat(配置为读取 Wazuh 警报)和 Logstash(也用于地理位置拓展)发送到 Elasticsearch ,之后我们将使用 Machine Learning 作业来检测异常和异常行为。

下面是基于主机和基于网络的 IDS 技术的部署示例, 与Elastic Stack 集成在一起:

使用 Elastic Stack 和 Wazuh 进行端对端安全分析

使用 Machine Learning 作业检测恶意行为者

在我们的实验室环境中,我们启用了所有规则,并且发现,对于我们的一台面向互联网的网络服务器来说,我们的 Wazuh 代理每天报告 4 千到 1 万个 IDS 警报。它们主要与网络攻击、身份验证失败、配置问题(使用强化检查检测)、文件完整性更改或易受攻击的软件有关。

为了让安全分析师更容易理解,Wazuh IDS 警报中增加了元数据,例如级别值,从而可以按优先级或类型进行过滤。此外,Wazuh Kibana 插件为预先配置的仪表板提供了有关代理状态、配置和警报的有用信息。见下面的截图:

Wazuh 提供的信息当然有用,但它仍然没有告诉我们不寻常的行为。而 Elastic Machine Learning 作业在这个方面可以帮助我们。

Elastic Machine Learning 允许我们创造几种类型的“作业” 这项作业是 Machine Learning 分析的基本要素。在我们的案例中,我们决定创建所谓的“总体分析”,在这里我们指示 Machine Learning 引擎在一段时间内建立一个 IP 地址典型行为的基线模型,识别那些与其他总体相比表现异常的行为。

更具体地说,在我们的案例中,我们希望查找与所有其他 IP 地址相比,导致异常多的警报类型的源 IP 地址。这不能通过创建聚合表这单一操作来实现,因为异常发生在某个我们的安全分析师不知道的时间点,而且我们有超过 60 天的警报数据(我们检测到了一些持续时间不超过两分钟的攻击)。

群体分析结果显示了一些异常行为(以源 IP 地址列表的形式),我们决定对此进行调查。我们使用“异常浏览器”来了解每一个可能的恶意行为者何时会攻击我们的环境。

调查入侵企图

作为安全分析的一个例子,我们在此处展示一个对 Machine Learning 作业识别的一个 IP 地址的调查。这个特定的 IP 地址在不到一分钟的时间内生成了几个 NIDS 和 HIDS 警报,触发了一个自动的 Wazuh操 作,阻止了我们网络服务器本地防火墙中的 IP 地址。

如上图所示,Suricata NIDS 检测到来自指定源IP地址的恶意流量。四条规则匹配传入流量,生成以下警报:

  • ET DROP Dshield Block Listed Source group 1
  • ET CINS Active Threat Intelligence Poor Reputation IP group 77
  • SURICATA HTTP URI terminated by non-compliant character
  • SURICATA HTTP METHOD terminated by non-compliant character

前两个规则是新兴威胁规则集的一部分,根据威胁情报(TI)来源,这两个规则表明源 IP 地址的声誉较差:Dshield主动威胁情报

此外,另外两个签名检测到来自同一源 IP 地址的异常 HTTP 活动,这很可能是攻击者收集信息查找潜在漏洞的扫描阶段的一部分。

Wazuh HIDS 组件还根据对网络服务器访问日志的分析触发了不同的警报。这种方法与网络数据包检查完全不同,最终会生成以下警报:

  • IP address found in AlienVault reputation database
  • Host Blocked by firewall-drop.sh Active Response
  • Host Unblocked by firewall-drop.sh Active Response

第一个警报表示已知源 IP 地址也是另一个威胁情报 (TI) 来源的一部分:AlienNode OTXIP 信誉数据库。

后两个警报由Wazuh主动响应模块触发,由于前面提到的警报,该模块会自动添加防火墙规则,在 60 秒(时间是可配置的)内阻止来自该特定源 IP 地址的流量。此操作足以阻止扫描活动,并导致恶意行为者停止入侵尝试。

结论

使用基于签名和基于异常的入侵检测,使用 Wazuh、Suricata 和 Elastic Machine Learning 等技术,可以使威胁检测更加容易,调查更加高效。

此外,将基于主机的入侵检测系统(用于主机级别监测系统)与基于网络的入侵检测系统(用于检查网络流量)集成也可以提高威胁检测和安全可见性。Wazuh 使这个操作变得简单,因为它可以用于将主机和网络 IDS 系统与 Elastic Stack 集成,并且可以提供实时运行自动响应和阻止攻击的机制。