【翻译】使用SysFlow和Falco的云原生可观察性和安全分析

特邀文章,最初发表在Falco的博客上,作者是IBM研究院的Frederico Araujo和Teryl Taylor

你好,Falcoers的朋友们!这篇博客向你介绍了一个新的开放系统遥测格式和项目,名为SysFlow。该项目与Falco(事实上的CNCF云原生运行时安全项目)有很深的关系。

Falco在检测应用程序的意外行为和在运行时对威胁发出警报方面非常出色。此外,它的组件和架构向创造性的使用开放。

例如,SysFlow将Falco丰富的可观察性库嵌入其云原生安全遥测栈和Falco的规则语言,以实现数据抽象、行为分析和降噪。

Falco项目和社区帮助实现了SysFlow项目,我们很高兴今天能引导你进行深入的研究同时,了解我们如何将我们的解决方案与Falcosidekick集成,以帮助诊断警报。

什么是SysFlow?

SysFlow是一种紧凑的开放式遥测格式,通过连接进程控制流、文件交互和网络通信的事件和流量表示来记录工作负载的行为。由此产生的抽象编码了一个图结构,可以对主机和容器环境进行出处推理,并快速检索安全相关的信息。

SysFlow architecture

它能解决什么挑战?

以下是使SysFlow与众不同的关键原因。

  • 与原始系统调用收集相比,大大减少了数据足迹
  • 由于它的底层实体关系模型和流量抽象,减少了事件疲劳(又称 "太多的警报")。
  • 最大限度地减少了对硬过滤器的要求
  • 通过在数据格式层面将系统事件数据连接起来,提供有用的背景。这加快了安全分析,使分析超越了简单的人工策略,包括机器学习、状态分析和自动策略生成。
  • 通过快速的边缘分析构建、易于使用的API以及对多种数据序列化和导出格式的支持,将系统安全监控作为一个数据科学问题。

建立在Falco库上

SysFlow格式由一个边缘处理管道支持,该管道聚合事件出处信息,并支持用攻击TTP标签、环境元数据和Kubernetes日志数据实时丰富遥测流。

作为使用Sysflow格式的一个好处,用户从管理不同来源产生的单个事件到获得一个增强的数据集来工作,使他们能够专注于在一个可扩展的通用开源平台上编写和分享分析结果。

该框架建立在Falco库Falco规则语言之上,以创建系统遥测所需的管道,如下图所示。

Falco库有助于通过内核空间的eBPF探针收集来自主机和容器的系统事件。

在用户层面,SysFlow收集器也利用Falco库,收集以前的事件并使用Apache Avro对象序列化导出捕获的信息。

SysFlow处理器处理和充实数据。策略引擎使用基于Falco规则的声明性语言,应用逻辑规则对系统流记录进行过滤、报警或语义标记。

SysFlow framework

SysFlow框架被设计成一个可插拔的边缘处理架构,其中包括一个策略引擎,以及更值得注意的是,一个实验性的图引擎。

策略引擎接受声明性策略(用Falco规则语法编写),支持SysFlow流的边缘过滤、标记和警报。

实验性图形引擎是一个直观的补充,它可以对被监控的应用程序进行聚类并输出简明的行为描述。我们稍后将看到一个例子。

除了SysFlow堆栈中提供的内置插件和导出器,用户可以编写和插入他们自己的实时分析,并使用我们的Golang APIs消费新的遥测源。该框架还包括Python包和一个预建的Jupyter容器,以促进交互式SysFlow数据探索。

Falco Sidekick集成

Falco Sidekick是一个相对年轻的项目,但已经在Docker Hub上利用了370万次拉动

它的核心是一个简单的守护程序,用于将Falco事件连接到许多不同的生态系统,就像一把瑞士军刀。它还为事件的可视化和过滤提供了一个直观的网络用户界面。

为了展示SysFlow如何扩展Falco的功能,我们一直在进行与Falco Sidekick的实验性整合。

完整的生态系统包括。

  • SysFlow遥测堆栈与Falco事件的新导出器编码器。
  • 一个基于S3的可搜索后端存储。
  • Apache Druid,以及Falco Sidekick的新扩展,用于可视化和交互式查询SysFlow进程小图。

Falco Sidekick的集成操作

为了说明所有这些组件是如何结合在一起的,让我们考虑以下场景。

The Falco Sidekick scenario

它显示了一个网络犯罪分子从Kubernetes服务中渗入数据的攻击。

  1. 在侦察过程中,攻击者检测到一个易受攻击的node.js服务,该服务容易受到利用node.js模块中的漏洞的远程代码执行攻击。
  2. 攻击者利用一个恶意的有效载荷,劫持了node.js服务器,从而利用了该系统。
  3. 攻击者然后从远程服务器下载一个python脚本。
  4. 该脚本联系其命令和控制服务器),然后开始扫描系统的敏感密钥。
  5. 攻击者最终获得了对敏感客户数据库的访问权。
  6. 当数据被渗出到网站之外时,攻击就完成了。

在这个设置中,SysFlow监控Kubernetes集群,并向Falco Sidekick输出警报,这些警报用一个ID("sf.graphid")来注释,引用标有MITRE ATT&CK元数据的紧凑行为图,可以帮助诊断警报。

作为概念验证,我们定制了Falco Sidekick的网络界面,以获取并显示与事件相关的图形。例如,下面的截图显示了良性的node.js应用程序被劫持到产生攻击脚本的精确感染点。

Screenshot of Falco Sidekick UI shows the benign node.js application has been hijacked into spawning an attack script

基于这个警报,我们可以使用我们的交互式Jupyter环境进一步调查潜在的威胁。通常情况下,这个诊断程序的第一步是根据原始事件制作一个假设,或指标。其语法遵循SysFlow策略引擎中使用的规则条件语言。一个合理的假设是查询与在其命令行中包含 "exfil "字符串的进程相关的网络和文件系统活动。

应用这个指标从存储后端获取一个新的图形,显示攻击脚本被执行,并一直忙于与文件系统互动和通过网络进行通信。

可疑的,是吗?

Screenshot showing network query contains exfil

由于数据渗出是直接关注的问题,我们可以使用SysFlow APIs来快速浏览与此过程相关的入口和出口流量。我们立即认识到网络流量的周期性模式,这表明了命令和控制行为,如信标。我们还看到在通信结束时有一个可疑的高出站流量,这肯定值得进一步关注。

Screenshot showing network query contains exfil

在调查的最后,我们将与上述图形相关的SysFlow轨迹投射到不同的组件上,包括容器和网络基元。这里有两种类型的流量是我们特别感兴趣的:来自172.30.106.11:3000(内部对象存储端点)的后端流量,通过容器bc3e连接到出口流量104.244.42.*:443(外部渗出端点)。

Chart example showing projecting SysFlow trace

结论

这种整合仍然是实验性的,但我们对它所拥有的可能性感到兴奋,并提醒我们Falco架构使我们有可能以一种创造性的方式使用它,这就是SysFlow。我们的目标是完善这个概念验证,为我们今后对Falco的贡献提供参考。例如,下一步自然是为孵化中的libs插件系统开发一个SysFlow库和插件。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值