このページでは、脅威をエミュレートして Security Command Center の検出機能を意図的にトリガーし、検出結果を作成することで、相関関係のある脅威が機能していることを確認する方法について説明します。これらの脅威の検出結果により、ルールごとに相関する脅威の問題が作成されます。
相関関係のある脅威の詳細については、相関関係のある脅威の概要をご覧ください。相関関係のある脅威を生成する検出結果を生成するには、Security Command Center の設定で適切な脅威検出サービスを有効にする必要があります。
環境を設定する
これらのテスト手順では、GKE クラスタと Compute Engine VM をプロビジョニングする機能の両方が必要です。テストクラスタがサポートされているバージョンの Google Kubernetes Engine(GKE)にあることを確認します。詳細については、サポートされている GKE バージョンの使用をご覧ください。
相関関係のある脅威をテストする前に、適切な GKE クラスタを含むプロジェクトを選択し、Cloud Shell を有効にして、いくつかの環境変数を設定する必要があります。手順は次のとおりです。
Google Cloud コンソールに移動します。
相関関係のある脅威をテストするプロジェクトを選択します。
「Cloud Shell をアクティブにする」をクリックします。
Cloud Shell で、環境変数を設定します。
クラスタが配置されているゾーンを指定します。
export ZONE=CLUSTER_ZONEクラスタが配置されているプロジェクトの ID を入力します。
export PROJECT=PROJECT_IDテストクラスタの名前を指定します。
export CLUSTER_NAME=CLUSTER_NAMEクラスタの認証情報を取得します。
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
暗号通貨マイニング攻撃をエミュレートする
このセクションでは、 Google Cloud コンソールと Cloud Shell を使用して、暗号通貨マイニングをエミュレートし、相関関係のある脅威の問題を作成する方法について説明します。これを行うには、まず Cloud Shell をアクティブにしてプロジェクトを選択し、テストを実行します。
暗号通貨マイニングをエミュレートして相関関係のある脅威をテストする手順は次のとおりです。
暗号通貨の相関関係のある脅威の問題をトリガーするには、
Execution: Netcat Remote Code Execution In ContainerとMalware: Cryptomining Bad IPの 2 つの検出結果を作成します。これらの 2 つの結果をトリガーするには、次のコマンドを実行します。tag="correlated-threat-test-crypto-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- bash -c \ "apt-get update ; apt-get install -y curl ; cp /bin/ls /tmp/curl; /tmp/curl --url=stratum+tcp ; for i in {1..5}; do curl 34.66.147.47 > /dev/null; done; sleep infinity"相関関係のある脅威の問題が表示されるまでに最大 1 時間かかることがあります。
相関関係のある脅威の問題が生成されたら、次のコマンドを実行して、テストに使用した Kubernetes Pod を削除し、クリーンアップを行います。
kubectl delete pod "$tag"
マルウェア攻撃をエミュレートする
このセクションでは、 Google Cloud コンソールと Cloud Shell を使用してマルウェア攻撃をエミュレートし、相関関係のある脅威の問題を作成する方法について説明します。これを行うには、まず Cloud Shell をアクティブにしてプロジェクトを選択し、テストを実行します。
マルウェア攻撃をエミュレートして相関関係のある脅威をテストする手順は次のとおりです。
マルウェアの相関関係のある脅威の問題をトリガーするには、
Execution: Local Reconnaissance Tool ExecutionとExecution: Added Malicious Binary Executedの 2 つの検出結果を作成します。GKE クラスタに Ubuntu 24.04 Pod を作成し、これら 2 つの検出結果をトリガーするには、次のコマンドを実行します。tag="correlated-threat-test-malware-$(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 \ --image marketplace.gcr.io/google/ubuntu2404:latest \ "$tag" -- sh -c \ "cp /bin/ls /tmp/linenum.sh; /tmp/linenum.sh; touch /tmp/test_mal_file; echo -n '$eicar' > /tmp/test_mal_file; chmod 700 /tmp/test_mal_file; /tmp/test_mal_file; sleep infinity"相関関係のある脅威の問題が表示されるまでに最大 1 時間かかることがあります。
相関関係のある脅威の問題が生成されたら、次のコマンドを実行してテストに使用した Kubernetes Pod を削除し、クリーンアップを行います。
kubectl delete pod "$tag"
GKE でラテラル ムーブメント攻撃をエミュレートする
このセクションでは、GKE でラテラル ムーブメント攻撃をエミュレートし、Google Cloud コンソールと Cloud Shell を使用して相関関係のある脅威の問題を作成する方法について説明します。これを行うには、まず Cloud Shell をアクティブにしてプロジェクトを選択し、テストを実行します。
ラテラル ムーブメント攻撃をエミュレートして相関関係のある脅威をテストする手順は次のとおりです。
ラテラル ムーブメントの相関関係のある脅威の問題をトリガーするには、
Privilege Escalation: Launch of privileged Kubernetes containerとExecution: Container Escapeの 2 つの検出結果を作成します。GKE クラスタに Ubuntu Pod を作成し、これら 2 つの検出結果をトリガーするには、次のコマンドを実行します。tag="correlated-threat-test-podlatmove-$(date -u +%Y-%m-%d-%H-%M-%S-utc)" kubectl run \ --restart=Never \ --image ubuntu "$tag" \ --privileged \ -- bash -c \ "cp /bin/ls /tmp/botb-linux-amd64; sleep 60; /tmp/botb-linux-amd64 -autopwn; sleep infinity"相関関係のある脅威の問題が表示されるまでに最大 1 時間かかることがあります。
相関関係のある脅威の問題が生成されたら、次のコマンドを実行してテストに使用した Kubernetes Pod を削除し、クリーンアップを行います。
kubectl delete pod "$tag"
Compute Engine でラテラル ムーブメント攻撃をエミュレートする
このセクションでは、Compute Engine でラテラル ムーブメント攻撃をエミュレートし、Google Cloud コンソールと Cloud Shell を使用して相関関係のある脅威の問題を作成する方法について説明します。これを行うには、まず Cloud Shell をアクティブにしてプロジェクトを選択し、テストを実行します。
ラテラル ムーブメント攻撃をエミュレートして相関関係のある脅威をテストする手順は次のとおりです。
次の内容で
lateral_movement_test.shという名前のファイルを作成します。 このスクリプトは、複数の Compute Engine VM を作成し、Lateral Movement: Modified Boot Disk Attached to InstanceとMalware: Bad IPの 2 つの結果を生成します。#!/bin/bash # emulates a boot disk swap followed by malicious IP to trigger correlated threats. # Default values IMAGE_FAMILY="debian-12" IMAGE_PROJECT="debian-cloud" TIMESTAMP=$(date +%s) TARGET_INSTANCE_NAME="target-vm-${TIMESTAMP}" WORKER_INSTANCE_NAME="worker-vm-${TIMESTAMP}" PROJECT_ID="" ZONE="" # --- Usage function --- usage() { echo "Usage: $0 --project_id <PROJECT_ID> --zone <ZONE> [OPTIONS]" echo "emulates a boot disk swap followed by malicious IP to trigger correlated threats." echo echo "Required arguments:" echo " --project_id <PROJECT_ID> Your Google Cloud Project ID" echo " --zone <ZONE> The Google Cloud zone to create resources in (e.g., us-central1-a)" echo echo "Optional arguments:" echo " --help Display this help message" } # --- Parse arguments --- while [[ $# -gt 0 ]]; do case "$1" in --project_id) PROJECT_ID="$2" shift 2 ;; --zone) ZONE="$2" shift 2 ;; --help) usage exit 0 ;; *) echo "Unknown option: $1" usage exit 1 ;; esac done # --- Validate required arguments --- if [[ -z "${PROJECT_ID}" ]]; then echo "Error: --project_id is required." usage exit 1 fi if [[ -z "${ZONE}" ]]; then echo "Error: --zone is required." usage exit 1 fi # The boot disk name defaults to the instance name BOOT_DISK_NAME=$TARGET_INSTANCE_NAME set -e echo "Starting script with the following settings:" echo "PROJECT_ID: ${PROJECT_ID}" echo "ZONE: ${ZONE}" echo "TARGET_INSTANCE_NAME: ${TARGET_INSTANCE_NAME}" echo "WORKER_INSTANCE_NAME: ${WORKER_INSTANCE_NAME}" echo "BOOT_DISK_NAME: ${BOOT_DISK_NAME}" echo "IMAGE_FAMILY: ${IMAGE_FAMILY}" echo "IMAGE_PROJECT: ${IMAGE_PROJECT}" echo "--------------------------------------------------" gcloud config set project "${PROJECT_ID}" gcloud config set compute/zone "${ZONE}" # Function to run gcloud commands with --quiet run_gcloud() { echo "Running: gcloud $@" gcloud "$@" --quiet } echo "Step 1: Create target VM: ${TARGET_INSTANCE_NAME}" run_gcloud compute instances create "${TARGET_INSTANCE_NAME}" \ --image-family="${IMAGE_FAMILY}" \ --image-project="${IMAGE_PROJECT}" \ --no-address echo "Step 2: Create worker VM: ${WORKER_INSTANCE_NAME}" run_gcloud compute instances create "${WORKER_INSTANCE_NAME}" \ --image-family="${IMAGE_FAMILY}" \ --image-project="${IMAGE_PROJECT}" \ --no-address echo "Step 3: Stop target VM: ${TARGET_INSTANCE_NAME}" run_gcloud compute instances stop "${TARGET_INSTANCE_NAME}" echo "Step 4: Detach boot disk from target VM" run_gcloud compute instances detach-disk "${TARGET_INSTANCE_NAME}" --disk="${BOOT_DISK_NAME}" echo "Step 5: Attach disk to worker VM: ${WORKER_INSTANCE_NAME}" run_gcloud compute instances attach-disk "${WORKER_INSTANCE_NAME}" --disk="${BOOT_DISK_NAME}" echo " << At this point, the disk is attached to the worker VM >>" echo " << Malicious modifications could theoretically be made here >>" echo "Step 6: Detach disk from worker VM" run_gcloud compute instances detach-disk "${WORKER_INSTANCE_NAME}" --disk="${BOOT_DISK_NAME}" echo "Step 7: Re-attach disk to target VM as boot disk" run_gcloud compute instances attach-disk "${TARGET_INSTANCE_NAME}" --disk="${BOOT_DISK_NAME}" --boot echo "Step 8: Start target VM" run_gcloud compute instances start "${TARGET_INSTANCE_NAME}" echo -n "Step 9: Wait for instance SSH to be available" until gcloud compute ssh "${TARGET_INSTANCE_NAME}" --command="true" 2>/dev/null do echo -n "." sleep 2 done echo echo "Step 10: Trigger bad IP findings" run_gcloud compute ssh "${TARGET_INSTANCE_NAME}" --command="for i in {1..5}; do curl 34.66.147.47 > /dev/null 2>/dev/null; done;" echo "Step 11: Delete worker VM: ${WORKER_INSTANCE_NAME}" run_gcloud compute instances delete "${WORKER_INSTANCE_NAME}" echo "--- Testing Complete ---" echo "The script has completed executing the patterns to trigger a correlated" echo "threats issue. Check the Security Command Center Issues page to view the issue." echo "Check Security Command Center for findings." echo echo "After observing the correlated threat issue in Security Command Center" echo "use this command to delete ${TARGET_INSTANCE_NAME}." echo " gcloud compute instances delete "${TARGET_INSTANCE_NAME}"" echo ${TARGET_INSTANCE_NAME} > ./.lateral_movement_test_nameスクリプトを実行可能にします。
chmod +x lateral_movement_test.sh検出結果を生成するには、スクリプトを実行します。
./lateral_movement_test.sh --project_id $PROJECT --zone $ZONE相関関係のある脅威の問題が表示されるまでに最大 1 時間かかることがあります。
問題が生成されたら、テスト スクリプトの出力で指定したコマンドを使用してクリーンアップを実行します。
gcloud compute instances delete $(cat .lateral_movement_test_name)
次のステップ
- 相関関係のある脅威の仕組みについて学習する。