使用开源内存分析工具检测GKE中的恶意行为

Spotify R&D团队分享GKE节点内存分析方法

Spotify R&D团队最近分享了他们在检测到可疑行为时,如何分析Google Kubernetes Engine (GKE)集群节点内存的方法。该方法的主要目标是确定工作负载中是否存在恶意行为。团队开发了一种新的方法,基于开源工具AVMLdwarf2jsonVolatility 3来转储集群节点的内核。

内核分析与开源工具

要了解Kubernetes节点上正在发生什么以及哪些进程在运行,操作系统(OS)内核是获取这些信息的关键。内核是操作系统与节点资源之间的主要层,负责进程和内存管理、网络控制、文件系统和设备控制等重要任务。

虽然市场上有许多商业工具可以执行内核分析,但结合开源工具AVML、dwarf2json和Volatility 3,同样可以达到相同的效果。

方法论的三步骤

Spotify R&D团队分享了他们的方法论,分为以下三个步骤:

  1. 创建内核内存转储:内核内存转储是特定时间内所有内核活动的快照。GKE节点运行的是Container-Optimized OS (COS),它不允许直接访问内核空间。AVML是一个用Rust编写的工具,可以在不了解操作系统或内核的情况下获取内存。通过在GKE上运行AVML,可以在特权容器中访问内核空间,并获取内核内存转储。
  2. 构建内核符号文件:为了解释转储文件,需要构建当前GKE节点内核版本的Intermediate Symbol File (ISF)。通过访问未压缩的内核镜像文件vmlinux,并使用dwarf2json工具来构建符号文件。dwarf2json是一个用Go编写的工具,它处理包含符号和类型信息的文件,生成适合Linux和macOS分析的Volatility3 ISF JSON输出。
  3. 分析内核内存转储:使用Volatility 3框架从易失性内存中提取数字工件。该工具可以查看同一GKE节点上所有正在运行的进程,包括特权进程和其他Pod。

测试架构

该方法在由Terraform和Python创建的架构上进行了测试,确保了其可行性和有效性。

开源工具的替代方案

这种基于开源工具组合的方法为监控容器化工作负载提供了一种替代现有商业解决方案的选择。Spotify团队表示,尽管该方法仅提供了进程活动的快照,但它可以作为GKE内存分析的起点,或作为现有商业解决方案的补充。

代码开源

该研究项目使用的所有代码均已开源,可以在GitHub的bsidesnyc2023仓库中查看。

总结

Spotify R&D团队通过结合AVML、dwarf2json和Volatility 3这三个开源工具,提出了一种有效分析GKE节点内存的方法,帮助识别潜在的恶意行为。该方法不仅为内存分析提供了新的思路,还展示了开源工具在复杂系统分析中的强大能力。

阅读 20
0 条评论