本页面简要介绍了 Container Threat Detection 的概念和功能。
什么是 Container Threat Detection?
Container Threat Detection 是 Security Command Center 的一项内置服务,可持续监控 Container-Optimized OS 节点映像的状态。该服务会评估所有更改和远程访问尝试,以便以近乎实时的方式检测运行时攻击。
Container Threat Detection 可检测最常见的容器运行时攻击,并在 Security Command Center 和(可选)Cloud Logging 中提醒您。Container Threat Detection 可提供多种检测功能(包括可疑的二进制文件和库),并使用自然语言处理 (NLP) 来检测恶意 Bash 和 Python 代码。
Container Threat Detection 仅适用于 Security Command Center 的高级层级或 Enterprise 层级。
Container Threat Detection 的工作原理
Container Threat Detection 检测插桩收集客机内核中的低级行为并执行脚本。以下是检测到事件时的执行路径:
Container Threat Detection 通过用户模式 DaemonSet 将事件信息和标识容器的信息传递给检测器服务进行分析。启用 Container Threat Detection 时,系统会自动配置事件收集。
Watcher DaemonSet 会尽最大努力传递容器信息。如果 Kubernetes 和容器运行时未及时传递相应的容器信息,则系统可能会从报告的发现结果中删除容器信息。
检测器服务会分析事件,以确定事件是否表示突发事件。系统使用 NLP 分析 Bash 和 Python 脚本,以确定执行的代码是否为恶意代码。
如果检测器服务发现突发事件,突发事件会以发现结果形式写入 Security Command Center 和(可选)Cloud Logging 中。
- 如果检测器服务无法识别突发事件,则不会存储发现结果信息。
- 内核和检测器服务中的所有数据都是临时的,不会永久存储。
您可以在 Security Command Center 控制台中查看发现结果详情,并调查发现结果信息。您能否查看和修改结果取决于您被授予的角色。如需详细了解 Security Command Center 角色,请参阅访问权限控制。
注意事项
集群中安装的其他安全检测工具可能会影响 Container Threat Detection 的性能,并导致其出现故障。如果集群已受到容器威胁检测功能的保护,我们建议您不要在集群中安装任何其他安全检测工具。
Container Threat Detection 检测器
Container Threat Detection 包括以下检测器:
检测器 | 说明 | 要检测的输入 |
---|---|---|
已执行添加的二进制文件 |
执行了不属于原始容器映像的二进制文件。 如果添加的二进制文件是由攻击者执行的,则可能表明攻击者控制了工作负载,并且正在执行任意命令。 此检测器默认处于停用状态。如需了解如何启用该功能,请参阅测试 Container Threat Detection。 |
检测器查找正在执行的二进制文件,该二进制文件不是原始容器映像的一部分,或者是通过原始容器映像修改的。 |
已加载添加的库 |
已加载不属于原始容器映像的库。 如果添加的库已加载,则可能表示攻击者控制了工作负载并正在执行任意代码。 此检测器默认处于停用状态。如需了解如何启用该功能,请参阅测试 Container Threat Detection。 |
检测器查找正在加载的库,该库不是原始容器映像的一部分,或者是通过原始容器映像修改的。 |
命令和控制:检测到信息隐写工具 |
执行了一个被识别为类似 Unix 环境中常见的信息隐写工具的程序,表明可能有人试图隐藏通信或数据传输。 攻击者可能会利用隐写术将恶意命令和控制 (C2) 指令或窃取的数据嵌入看似良性的数字文件中,以逃避标准的安全监控和检测。识别此类工具的使用情况对于发现隐藏的恶意活动至关重要。 |
此检测器会监控已知信息隐写工具的执行情况。 此类工具的存在表明,有人故意试图混淆网络流量或窃取数据,从而可能建立用于恶意目的的隐秘通信渠道。 |
凭证访问权限:查找 Google Cloud 凭证 |
执行了命令,以在容器环境中搜索 Google Cloud 私钥、密码或其他敏感凭据。 攻击者可能会使用窃取的 Google Cloud 凭据来非法访问目标 Google Cloud 环境中的敏感数据或资源。 此检测器默认处于停用状态。如需了解如何启用该功能,请参阅测试 Container Threat Detection。 |
此检测会监控尝试查找包含 Google Cloud凭据的文件的 find 或 grep 命令。
|
凭证访问权限:GPG 密钥侦察 |
执行了用于搜索 GPG 安全密钥的命令。 攻击者可能会使用窃取的 GPG 安全密钥来获取对加密通信或文件的未经授权的访问权限。 |
此检测器会监控尝试查找 GPG 安全密钥的 find 或 grep 命令。
|
凭证访问权限:搜索私钥或密码 |
执行了在容器环境中搜索私钥、密码或其他敏感凭据的命令,表明可能有人试图收集身份验证数据。 攻击者通常会搜索凭据文件,以便未经授权访问系统、提升特权或在环境中横向移动。检测此类活动对于防止安全违规至关重要。 |
此检测器会监控用于查找私钥、密码或凭据文件的已知命令。在容器化环境中出现此类搜索可能表明存在侦察活动或正在遭受入侵。 |
防护规避:Base64 ELF 文件命令行 |
执行了一个进程,其中包含一个 ELF(可执行和可链接格式)文件的参数。 如果检测到执行经过编码的 ELF 文件,则表示攻击者正尝试对二进制数据进行编码,以便将其传输到仅限 ASCII 的命令行。攻击者可以使用此技术来逃避检测并运行嵌入 ELF 文件中的恶意代码。 |
此检测会监控包含 ELF 且采用 base64 编码的进程实参。
|
防护规避:已执行 Base64 编码的 Python 脚本 |
执行了一个进程,其中包含一个以 base64 编码的 Python 脚本的参数。 如果检测到执行经过编码的 Python 脚本,则表示攻击者正尝试对二进制数据进行编码,以便将其传输到仅限 ASCII 的命令行。攻击者可以使用此技术来逃避检测并运行嵌入 Python 脚本中的恶意代码。 |
此检测会监控包含各种形式的 python -c 且经过 base64 编码的进程实参。
|
防护规避:执行 Base64 编码的 shell 脚本 |
执行了一个进程,其中包含一个以 base64 编码的 shell 脚本的实参。 如果检测到执行经过编码的 Shell 脚本,则表示攻击者正尝试对二进制数据进行编码,以便将其传输到仅限 ASCII 的命令行。攻击者可以使用此技术来逃避检测并运行嵌入 Shell 脚本中的恶意代码。 |
此检测会监控进程实参,以查找包含各种形式的 base64 编码 shell 命令的实参。 |
防护规避:在容器中启动代码编译器工具 |
系统检测到在容器环境中启动代码编译器工具的进程,表明可能有人试图在隔离的上下文中构建或修改可执行代码。 攻击者可能会在容器中使用代码编译器来开发恶意载荷、将代码注入现有二进制文件中,或创建用于绕过安全控制的工具,同时在审查较少的环境中运行,以逃避主机系统上的检测。 |
此检测器会监控容器内已知代码编译器工具的执行情况。此类活动的存在表明,攻击者可能试图在容器内开发或修改恶意代码,这可能是为了规避防御措施,以篡改系统组件或客户端软件。 |
执行:已执行添加的恶意二进制文件 |
执行了满足以下条件的二进制文件:
如果执行了添加的恶意二进制文件,则很可能表示攻击者控制了工作负载,并且正在执行恶意软件。 |
检测器查找正在执行的二进制文件,该二进制文件不是原始容器映像的一部分,并且根据威胁情报被标识为恶意。 |
执行:加载了添加的恶意库 |
加载了满足以下条件的库:
如果加载了添加的恶意库,则很可能表示攻击者控制了工作负载,并且正在执行恶意软件。 |
检测器查找正在加载的库,该库不是原始容器映像的一部分,并且根据威胁情报被标识为恶意。 |
执行:执行了内置恶意二进制文件 |
执行了满足以下条件的二进制文件:
如果执行了内置恶意二进制文件,则表示攻击者正在部署恶意容器。攻击者可能已控制合法的映像代码库或容器构建流水线,并向容器映像中注入了恶意二进制文件。 |
检测器查找正在执行的二进制文件,该二进制文件包含在原始容器映像中,并且根据威胁情报被标识为恶意。 |
执行:容器逃逸 |
在容器内执行了一个进程,该进程试图突破容器的隔离,这可能会让攻击者获得对主机系统的访问权限。 如果检测到容器逃逸尝试,则可能表示攻击者正在利用漏洞来突破容器。 因此,攻击者可能会获得对主机系统或更广泛基础设施的未经授权的访问权限,从而入侵整个环境。 |
检测器会监控尝试利用容器边界的进程,这些进程使用已知的逃逸技术或二进制文件。这些进程被威胁情报标记为针对底层主机系统的潜在攻击。 |
执行:/memfd 中的无文件执行: |
使用内存中的文件描述符执行了进程。 如果进程是从内存文件启动的,则可能表明攻击者正试图绕过其他检测方法来执行恶意代码。 |
检测器会监控从 /memfd: 执行的进程。
|
执行:Ingress Nightmare 漏洞执行(预览版) |
通过监控包含对
此类漏洞可让恶意行为者在 |
此检测器会监控 ingress-nginx 容器中是否存在包含对 /proc 文件系统的引用的参数的 Nginx 执行,以指示潜在的远程代码执行。
|
执行:Kubernetes 攻击工具执行 |
在环境中执行了 Kubernetes 专用攻击工具,这可能表明攻击者正在以 Kubernetes 集群组件为目标。 如果攻击工具在 Kubernetes 环境中执行,则可能表明攻击者已获得对集群的访问权限,并且正在使用该工具来利用 Kubernetes 特定漏洞或配置。 |
检测器会查找正在执行且根据情报数据标识为潜在威胁的 Kubernetes 攻击工具。检测器会触发提醒,以缓解集群中潜在的入侵风险。 |
执行:本地侦察工具执行 |
执行了通常与容器或环境无关的本地侦察工具,表明有人试图收集内部系统信息。 如果执行了侦察工具,则表明攻击者可能正在试图绘制基础设施图、识别漏洞或收集系统配置数据,以规划后续步骤。 |
该检测器会监控环境中是否正在执行已知的侦察工具(通过威胁情报识别),这可能表明正在为更恶意的活动做准备。 |
执行:已执行恶意 Python |
机器学习模型将指定的 Python 代码标识为恶意代码。攻击者可以利用 Python 将工具或其他文件从外部系统转移到遭入侵的环境,并在不使用二进制文件的情况下执行命令。 |
检测器使用 NLP 技术来评估已执行的 Python 代码的内容。由于此方法并非基于签名,因此检测器可以识别已知和新型的 Python 代码。 |
执行:已执行修改的恶意二进制文件 |
执行了满足以下条件的二进制文件:
如果执行了修改的恶意二进制文件,则很可能表示攻击者控制了工作负载,并且正在执行恶意软件。 |
检测器会查找正在执行的二进制文件,该二进制文件最初包含在容器映像中,但在运行时期间被修改,并且根据威胁情报被识别为恶意文件。 |
执行:加载了修改的恶意库 |
加载了满足以下条件的库:
如果加载了修改的恶意库,则很可能表示攻击者控制了工作负载,并且正在执行恶意软件。 |
检测器会查找正在加载的库,该库最初包含在容器映像中,但在运行时期间被修改,并根据威胁情报被识别为恶意库。 |
执行:容器中的 Netcat 远程代码执行 |
在容器环境中执行了多用途网络实用程序 Netcat,这可能表明有人试图建立未经授权的远程访问或窃取数据。 在容器化环境中使用 Netcat 可能表明攻击者试图创建反向 shell、实现横向移动或执行任意命令,这可能会损害系统完整性。 |
检测器会监控容器内 Netcat 的执行情况,因为在生产环境中使用 Netcat 并不常见,这可能表明有人试图绕过安全控制或执行远程命令。 |
执行:疑似检测到远程命令执行 |
检测到一个进程通过网络套接字连接启动常见的 UNIX 命令,表明可能有人试图建立未经授权的远程命令执行功能。 攻击者经常利用模仿反向 shell 的技术来获得对遭入侵系统的交互式控制,从而能够远程执行任意命令并绕过标准网络安全措施(例如防火墙限制)。检测到通过套接字执行命令是恶意远程访问的有力证据。 |
此检测器会监控网络套接字的创建,然后监控标准 UNIX shell 命令的执行。此模式表明有人试图创建用于执行远程命令的隐蔽通道,从而可能在受入侵的主机上进一步开展恶意活动。 |
执行:在禁止使用 HTTP 代理的环境中运行的程序 |
使用被禁止的 HTTP 代理环境变量执行程序。这可能表明有人试图绕过安全控制、出于恶意目的重定向流量或通过未经授权的渠道窃取数据。 攻击者可能会配置不允许使用的 HTTP 代理来拦截敏感信息、通过恶意服务器路由流量或建立隐蔽的通信渠道。检测使用这些环境变量的程序的执行对于维护网络安全和防止数据泄露至关重要。 |
此检测器会监控是否执行了具有明确禁止的 HTTP 代理环境变量的程序。使用这些代理(尤其是当代理使用情况出乎意料时)可能表明存在恶意活动,需要立即展开调查。 |
执行:已加载可疑的 OpenSSL 共享对象 |
已执行 OpenSSL 来加载自定义共享对象。 攻击者可能会加载自定义库并替换 OpenSSL 使用的现有库,以运行恶意代码。在生产环境中使用此类代码并不常见,应立即进行调查。 |
此检测器会监控 openssl engine 命令的执行情况,以便加载自定义 .so 文件。
|
提取:在容器中启动远程文件复制工具 |
在容器内检测到远程文件复制工具执行,表明可能存在数据渗漏、横向移动或恶意载荷部署。 攻击者通常会使用这些工具将敏感数据转移到容器外部,在网络内横向移动以入侵其他系统,或引入恶意软件以进行进一步的恶意活动。 检测远程文件复制工具的使用情况对于防止数据泄露、未经授权的访问以及容器和潜在的宿主系统的进一步失陷至关重要。 |
此检测器会监控容器环境中已知远程文件复制工具的执行情况。这些文件(尤其是意外出现的文件)可能表明存在恶意活动。 |
影响:检测恶意命令行 |
执行的命令带有已知可能具有破坏性的实参,例如试图删除关键系统文件或修改密码相关配置。 攻击者可能会发出恶意命令行,导致系统不稳定、通过删除必要文件来阻止恢复,或通过操纵用户凭据来获得未经授权的访问权限。检测这些特定的命令模式对于防止重大系统影响至关重要。 |
此检测器会监控命令行实参的执行情况,这些实参与系统损坏或权限升级相关的模式相匹配。 此类命令的存在表明有人可能正在试图对系统的可用性或安全性产生负面影响。 |
影响:从磁盘中移除批量数据 |
检测到一个进程在执行批量数据删除操作,这可能表明有人试图在容器环境中清除证据、干扰服务或执行数据擦除攻击。 攻击者可能会移除大量数据来掩盖其踪迹、破坏运营或为部署勒索软件做准备。检测此类活动有助于在发生严重数据丢失之前识别潜在威胁。 |
检测器会监控与批量数据删除或其他数据擦除工具相关的命令和进程,以识别可能损害系统完整性的可疑活动。 |
影响:使用 Stratum 协议的可疑加密货币挖矿活动 |
检测到一个进程正在通过 Stratum 协议进行通信,该协议通常由加密货币挖矿软件使用。此活动表明容器环境中可能存在未经授权的挖矿操作。 攻击者通常会部署加密货币挖矿程序来利用系统资源获取经济利益,从而导致性能下降、运营成本增加,并带来潜在的安全风险。检测此类活动有助于缓解资源滥用和未经授权的访问。 |
此检测器会监控环境中的已知 Stratum 协议使用情况。由于合法的容器工作负载通常不使用 Stratum,因此 Stratum 的存在可能表明存在未经授权的挖矿操作或容器遭到入侵。 |
已执行恶意脚本 |
机器学习模型将指定的 Bash 代码标识为恶意代码。攻击者可以利用 Bash 将工具或其他文件从外部系统转移到遭到入侵的环境,并在不使用二进制文件的情况下执行命令。 |
检测器使用 NLP 技术来评估已执行的 Bash 代码的内容。由于此方法并非基于签名,因此检测器可以识别已知和新型的恶意 Bash。 |
观察到恶意网址 | Container Threat Detection 在正在运行的进程的实参列表中观察到一个恶意网址。 | 检测器会根据 Google 安全浏览服务维护的不安全 Web 资源列表,对在正在运行的进程的参数列表中观察到的网址进行检查。如果网址被错误地分类为钓鱼式攻击网址或恶意网址,请在 报告错误数据中进行举报。 |
提升权限:/dev/shm 中的无文件执行 |
从
通过从 |
检测器会查找从 /dev/shm 执行的任何进程
|
反向 shell |
通过流式传输重定向到远程连接的套接字的过程。 借助反向 shell,攻击者可以通过已破解的工作负载与攻击者控制的机器进行通信。然后,攻击者可以命令和控制工作负载,例如将其作为僵尸网络的一部分。 |
检测器会查找绑定到远程套接字的 stdin 。
|
意外的子 shell | 通常不调用 shell 的进程生成了 shell 进程。 | 检测器监控所有进程执行。调用 shell 时,如果父级进程通常不会调用 shell,则检测器会生成发现结果。 |
后续步骤
- 了解如何使用 Container Threat Detection。
- 了解如何测试 Container Threat Detection。
- 了解如何调查和制定威胁响应方案。
- 了解 Artifact Analysis 和漏洞扫描。