强强联合:使用Atomic Red测试与Falco实现Kubernetes实时威胁检测
作为Sysdig公司Falco项目的开发者倡导者,Nigel Douglas在推动云原生安全开源检测与响应(D&R)领域教育方面发挥着关键作用。他致力于撰写文章、博客并登台演讲,帮助提高人们对云安全需求变化的认识。
在云原生环境中,应用程序的扩展速度远快于传统的单体应用架构,因此主动实时识别和响应威胁的能力至关重要。随着更多组织采用云原生架构进行应用交付,需要引入更强大的安全措施。在本博客中,我们通过探索开源Falco如何在Kubernetes环境中无缝实时检测Atomic Red Team测试,深入探讨Kubernetes威胁检测的动态领域。
Atomic Red Team是一个强大的框架,旨在模拟真实世界攻击,为组织提供受控环境以验证其安全措施的有效性。我们通过贡献一个Kubernetes部署清单进一步推进,通过单条命令加速在Kubernetes集群中部署和测试Atomic Red测试,模拟有用的攻击场景,以测试现有开源云原生入侵检测系统(如Falco)的响应能力。
我们的旅程从轻松部署Atomic Red到Kubernetes开始,展示在容器化环境中编排安全测试的简单性和效率。部署完成后,我们调用特定的Atomic Red Team测试,模拟一系列威胁场景。真正的测试在于Falco根据MITRE ATT&CK框架检测这些威胁的能力,该框架是一个全球认可的矩阵,将对手技术映射到防御战术。
这次探索不仅仅是识别威胁;这是一项协作努力,旨在增强Kubernetes的安全覆盖范围。如果发现Falco检测能力存在任何差距,我们可以深入修改执行的技术并制定自定义规则。这个迭代过程旨在扩展MITRE ATT&CK覆盖范围,使Atomic Red测试与行业在Kubernetes中威胁检测和缓解的最佳实践保持一致。
部署Atomic Red Team
为避免生产环境中潜在的服务中断,我们建议在测试实验室环境或至少Kubernetes的暂存环境中安装Atomic Red。我们有一个分步视频,用于在Kubernetes中安装Atomic Red:https://www.youtube.com/watch?v=5QjGnHGnxxo
在开始部署之前,请记住创建atomic-red网络命名空间。
|
|
将部署一个特权设置为true的单个pod。Atomic Red需要管理员级别的securityContext来执行某些需要提升权限的操作。
|
|
注意:这将在‘atomic-red‘网络命名空间中创建一个名为‘atomicred‘的pod。
您可以使用以下命令检查安装状态:
|
|
如果您想从Kubernetes集群中移除Atomic Red项目,只需运行:
|
|
熟悉Atomic Red测试
部署完成后,您需要shell到Atomic Red pod中执行以下测试场景。
这可能有点令人困惑,但Atomic Red是围绕PowerShell开发的,因此以下说明要求用户shell到一个容器中,一旦进入运行的pod,他们必须运行PowerShell来导入和调用各种Atomic测试场景。
一旦熟悉了这个逻辑,您会发现Atomic Red是一个真正简单的安全模拟工具。
|
|
如前所述,进入Atomic Red pod后需要运行PowerShell:
|
|
现在,您终于可以加载Atomic Red Team模块:
|
|
检查TTP的详细信息:
|
|
检查先决条件以确保测试条件正确:
|
|
您可以在下面的屏幕截图中看到,执行这些测试不需要先决条件。因此,我们可以调用批量文件删除测试场景。
移除功能标志以执行测试模拟。
|
|
此测试将尝试删除单个文件或单个目录。当我们安装Falco时,此Atomic测试应默认触发‘Warning bulk data removed from disk‘规则。接下来,我们讨论Falco的安装。
恭喜!现在我们知道Atomic Red如何工作,让我们安装Falco并将其与Atomic Red并行运行,以证明它实时检测这些测试。我们将需要打开两个终端窗口来查看实时响应检测。
安装和测试Falco
对于本实验室指南,我们可以通过Helm在固定版本上安装Falco,该版本在将规则分离到不同规则源(如‘incubating’、‘sandbox’和‘stable’)之前。我们这样做是为了确保所有Falco规则在我们的实验室场景中可访问。要使用最新版本的Falco,只需从Helm安装脚本中移除‘–version’功能标志。
|
|
与Atomic Red部署一样,我们需要监控Falco安装的进度。pod在安装过程中会多次更改状态,但应在大约一分钟后全部处于‘RUNNING‘状态。请使用以下命令检查Falco pod的状态变化:
|
|
一旦Falco安装完成,我们可以在第二个终端窗口中使用以下命令跟踪生成的事件。
|
|
跳回第一个终端窗口并重新运行批量文件删除Atomic测试 – ‘T1070.004‘:
|
|
您将识别检测规则中的某些噪音。例如,所有Atomic测试都在‘Root’用户下运行,因此,我们总是会检测到在root下运行的脚本。要忽略此噪音,让我们改为仅检查我们想要检测的特定Falco规则:
|
|
万岁!我们看到了与Atomic Red测试场景上下文完全匹配的检测。
让我们继续调用下一个Atomic测试。今天有许多Linux测试场景可供测试。
查看官方Atomic Red Team Github项目上的列表。
T1556.003 修改认证过程
在此场景中,Atomic Red生成三个可插拔认证模块(PAM):两个用于Linux和FreeBSD的恶意PAM规则,以及一个用于Linux的恶意PAM模块。这些程序可用于打开和读取敏感文件内容,我们可以同意它们是非受信任程序。同样,我们有一个开箱即用的规则用于这些活动:
|
|
现在,是时候模拟我们的威胁了:
|
|
T1036.005 伪装:匹配合法名称或位置
此测试场景从伪装当前父目录的目录执行进程。
|
|
现在,是时候模拟我们的威胁了。
|
|
您可以看到在左侧终端窗口中,终端中有一条回显消息‘”Hello from the Atomic Red Team.”‘命令行中的任何字符串输出也可以在Falco的输出中检测到。
T1070.002 主机上的指示器移除
对手可能清除系统日志以隐藏入侵证据。macOS和Linux都通过系统日志跟踪系统或用户发起的操作。大多数本机系统日志存储在‘/var/log/‘目录下。
|
|
现在,是时候模拟我们的威胁了:
|
|
T1070.003 清除命令历史
除了清除系统日志,对手还可能清除受损帐户的命令历史,以隐藏入侵期间采取的行动。各种命令解释器跟踪用户在终端中键入的命令,以便用户可以追溯他们所做的操作。
|
|
现在,是时候模拟我们的威胁了:
|
|
您可以从下面的屏幕截图中看到执行了四个不同的操作。因此,在这些清除命令行历史的个别尝试上触发了四个独特的Falco检测。
T1014 基于可加载内核模块的Rootkit
对手可能使用Rootkit隐藏程序、文件、网络连接、服务、驱动程序和其他系统组件的存在。Rootkit是通过拦截/挂钩和修改提供系统信息的操作系统API调用来隐藏恶意软件存在的程序。
Rootkit可能驻留在操作系统的用户或内核级别或更低级别,包括虚拟机监控程序、主引导记录或系统固件。因此,Falco实时检测Rootkit至关重要。
|
|
现在,是时候模拟我们的威胁了:
|
|
Falco正在检测Linux内核模块注入尝试,无论执行是否成功。
T1037.004 [自定义规则] 启动初始化 – RC脚本
对手可能通过修改在类Unix系统启动期间执行的RC脚本来建立持久性。这些文件允许系统管理员在不同运行级别映射和启动自定义服务。RC脚本需要root权限才能修改。
模拟‘T1037.004‘测试的命令:
|
|
您会注意到,这是第一个我们没有获得与威胁相关的有用Falco检测的测试。因此,我们需要创建一个‘custom-rules.yaml‘文件,其中包含用于检测启动初始化脚本的自定义Falco规则。
|
|
对手可以通过将恶意二进制路径或shell命令添加到‘rc.local‘、‘rc.common‘和其他特定于类Unix发行版的RC脚本来建立持久性。重启后,系统以root身份执行脚本内容,从而实现持久性。
让我们尝试升级Falco以反映‘custom-rules.yaml‘文件:
|
|
假设创建‘custom-rules.yaml‘清单时没有明显的格式问题,您应该能够成功升级Falco,并且pod应处于‘RUNNING‘状态。如果自定义规则文件有问题,Falco pod状态可能会更改为‘CrashLoopBackOff‘。
让我们看看在升级Falco后是否检测到Atomic测试与新创建的自定义规则。
记住在第二个终端窗口中运行Falco,使用以下命令:
|
|
我们可以最后一次模拟技术ID‘T1037.004‘:
|
|
万岁!我们使用上述命令检测到了启动初始化脚本。回顾一下,试图滥用这些RC脚本的对手对于使用root用户作为默认值的轻量级类Unix发行版(如IoT或嵌入式系统)特别有效。如果您想知道为什么Falco规则特别关注Base64编码的Python脚本,那么我们需要回顾与Atomic测试模拟相关的详细信息。
|
|
我们可以从命令中看到它使用‘python3‘命令运行Python脚本。但是,脚本本身作为base64编码的字符串执行,以规避一些传统的检测工具。
结论
总之,Kubernetes在云原生系统中的采用开启了一个效率和可扩展性的新时代,但这些优势带来了对强大威胁检测和响应机制的迫切需求。认识到这一必要性,安全团队可以利用Kubernetes部署清单的力量来简化安全工具的部署,以Atomic Red程序为例。
与其从事从零开始构建Atomic Red程序或通过Docker容器管理其测试的繁琐任务,Kubernetes部署清单的创新使用允许安全专业人员执行单条命令。这种能力使得在Kubernetes集群中快速动态扩展Atomic Red pod,提供响应迅速且适应性强的安全解决方案。
必须承认,为Kubernetes节点提供动力的Linux端点的普遍性需要关注以Linux为中心的原子测试。虽然Kubernetes本身不限于Linux发行版,但本文介绍了Atomic Red Kubernetes清单的利用,强调其在增强Kubernetes环境中安全响应能力方面的有效性。
特别感谢Falco项目的Thomas Labarussias(@ISSIF on Github — https://github.com/Issif)为部署清单制作镜像所做的贡献。通过协作努力和像Atomic Red Kubernetes清单这样的创新解决方案,云原生生态系统中的安全格局迈出了重要一步,增强了组织在面对不断演变的威胁时的韧性和适应性。