Tester les menaces corrélées

Cette page explique comment vérifier que la fonctionnalité Menaces corrélées fonctionne en émulant des menaces pour déclencher intentionnellement les détecteurs Security Command Center et créer des résultats. Ces résultats sur les menaces créent ensuite des problèmes de menaces corrélées pour chaque règle.

Pour en savoir plus sur les menaces corrélées, consultez la présentation des menaces corrélées. Si vous souhaitez générer des résultats qui produisent des menaces corrélées, vous devez activer les services de détection des menaces appropriés dans les paramètres de Security Command Center.

Configurer votre environnement

Ces procédures de test nécessitent un cluster GKE et la possibilité de provisionner des VM Compute Engine. Assurez-vous que votre cluster de test utilise une version compatible de Google Kubernetes Engine (GKE). Pour en savoir plus, consultez Utiliser une version de GKE compatible.

Avant de tester les menaces corrélées, vous devez d'abord sélectionner un projet avec le cluster GKE approprié, activer Cloud Shell et définir plusieurs variables d'environnement. Pour ce faire, procédez comme suit :

  1. Accédez à la consoleGoogle Cloud .

    Accéder à la console Google Cloud

  2. Sélectionnez le projet dans lequel vous souhaitez tester les menaces corrélées.

  3. Cliquez sur Activer Cloud Shell.

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

    1. Spécifiez le projet, la zone et le cluster GKE à utiliser pour les tests :

      export PROJECT=PROJECT_ID
      export ZONE=ZONE
      export CLUSTER_NAME=CLUSTER_NAME
      
    2. Récupérez les identifiants de votre cluster :

      gcloud container clusters get-credentials $CLUSTER_NAME \
          --zone $ZONE \
          --project $PROJECT
      

Émuler une attaque de minage de cryptomonnaie

Cette section explique comment émuler l'extraction de cryptomonnaie et créer un problème de menaces corrélées à l'aide de la console Google Cloud et de Cloud Shell. Pour ce faire, vous devez d'abord activer Cloud Shell, sélectionner un projet, puis effectuer le test.

Pour tester les menaces corrélées en émulant le minage de cryptomonnaie, procédez comme suit :

  1. Configurer votre environnement

  2. Pour déclencher un problème de menaces corrélées liées aux cryptomonnaies, créez deux résultats : Impact: suspicious crypto mining activity using the stratum protocol et Malware: Cryptomining Bad IP. Pour déclencher ces deux résultats, exécutez les commandes suivantes :

    tag="correlated-threat-test-crypto-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
    kubectl run \
         --restart=Never \
         --image marketplace.gcr.io/google/ubuntu2404:latest \
         "$tag" -- bash -c \
         "apt-get update ; apt-get install -y curl ; cp /bin/ls /tmp/curl; /tmp/curl --url=stratum+tcp ; for i in {1..5}; do curl 34.66.147.47 > /dev/null; done; sleep infinity"
    

    L'affichage du problème "Menaces corrélées" peut prendre jusqu'à une heure.

  3. Une fois le problème de menaces corrélées généré, effectuez un nettoyage en exécutant la commande suivante pour supprimer le pod Kubernetes utilisé pour les tests.

    kubectl delete pod "$tag"
    

Émuler une attaque de logiciel malveillant

Cette section explique comment émuler une attaque de logiciel malveillant et créer un problème de menaces corrélées à l'aide de la console Google Cloud et de Cloud Shell. Pour ce faire, commencez par activer Cloud Shell, sélectionnez un projet, puis effectuez le test.

Pour tester les menaces corrélées en simulant une attaque de logiciel malveillant, procédez comme suit :

  1. Configurez votre environnement.

  2. Pour déclencher un problème de menaces corrélées de logiciel malveillant, vous devez créer deux résultats : Execution: Local Reconnaissance Tool Execution et Execution: Added Malicious Binary Executed. Pour créer un pod Ubuntu 24.04 dans votre cluster GKE et déclencher ces deux résultats, exécutez les commandes suivantes :

    tag="correlated-threat-test-malware-$(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*'
    kubectl run \
         --restart=Never \
         --image marketplace.gcr.io/google/ubuntu2404:latest \
         "$tag" -- sh -c \
         "cp /bin/ls /tmp/linenum.sh; /tmp/linenum.sh; touch /tmp/test_mal_file; echo -n '$eicar' > /tmp/test_mal_file; chmod 700 /tmp/test_mal_file; /tmp/test_mal_file; sleep infinity"
    

    L'affichage du problème "Menaces corrélées" peut prendre jusqu'à une heure.

  3. Une fois le problème de menace corrélé généré, effectuez le nettoyage en exécutant la commande suivante pour supprimer le pod Kubernetes utilisé pour les tests.

    kubectl delete pod "$tag"
    

Émuler une attaque par déplacement latéral sur GKE

Cette section explique comment émuler une attaque par déplacement latéral sur GKE et créer un problème de menaces corrélées à l'aide de la consoleGoogle Cloud et de Cloud Shell. Pour ce faire, vous devez d'abord activer Cloud Shell, sélectionner un projet, puis effectuer le test.

Pour tester les menaces corrélées en simulant une attaque par déplacement latéral, procédez comme suit :

  1. Configurez votre environnement.

  2. Pour déclencher un problème de menaces corrélées de déplacement latéral, vous devez créer deux résultats : Privilege Escalation: Launch of privileged Kubernetes container et Execution: Container Escape. Pour créer un pod Ubuntu dans votre cluster GKE et déclencher ces deux résultats, exécutez les commandes suivantes :

    tag="correlated-threat-test-podlatmove-$(date -u +%Y-%m-%d-%H-%M-%S-utc)"
    kubectl run \
         --restart=Never \
         --image marketplace.gcr.io/google/ubuntu2404:latest "$tag" \
         --privileged \
         -- bash -c \
            "cp /bin/ls /tmp/botb-linux-amd64; sleep 300; /tmp/botb-linux-amd64 -autopwn; sleep infinity"
    

    L'affichage du problème "Menaces corrélées" peut prendre jusqu'à une heure.

  3. Une fois le problème de menaces corrélées généré, effectuez le nettoyage en exécutant la commande suivante pour supprimer le pod Kubernetes utilisé pour les tests.

    kubectl delete pod "$tag"
    

Émuler une attaque par déplacement latéral sur Compute Engine

Cette section explique comment émuler une attaque par déplacement latéral sur Compute Engine et créer un problème de menaces corrélées à l'aide de la consoleGoogle Cloud et de Cloud Shell. Pour ce faire, vous devez d'abord activer Cloud Shell, sélectionner un projet, puis effectuer le test.

Pour tester les menaces corrélées en simulant une attaque par déplacement latéral, procédez comme suit :

  1. Configurez votre environnement.

  2. Créez un fichier nommé lateral_movement_test.sh avec le contenu suivant. Ce script crée plusieurs VM Compute Engine et génère les deux résultats suivants : Lateral Movement: Modified Boot Disk Attached to Instance et Malware: Bad IP.

    #!/bin/bash
    # emulates a boot disk swap followed by malicious IP to trigger correlated threats.
    
    set -euo pipefail
    
    # --- Default values ---
    readonly IMAGE_FAMILY="debian-12"
    readonly IMAGE_PROJECT="debian-cloud"
    TIMESTAMP=$(date +%s)
    TARGET_INSTANCE_NAME="target-vm-${TIMESTAMP}"
    WORKER_INSTANCE_NAME="worker-vm-${TIMESTAMP}"
    PROJECT_ID=""
    ZONE=""
    
    # --- Usage function ---
    usage() {
      echo "Usage: $0 --project_id <PROJECT_ID> --zone <ZONE> [OPTIONS]"
      echo "emulates a boot disk swap followed by malicious IP to trigger correlated threats."
      echo
      echo "Required arguments:"
      echo "  --project_id <PROJECT_ID>  Your Google Cloud Project ID"
      echo "  --zone <ZONE>              The Google Cloud zone to create resources in (e.g., us-central1-a)"
      echo
      echo "Optional arguments:"
      echo "  --help                   Display this help message"
    }
    
    # --- Function to run gcloud commands with --quiet ---
    run_gcloud() {
      echo "Running: gcloud $*"
      gcloud "$@" --quiet
    }
    
    main() {
      # --- Parse arguments ---
      while [[ $# -gt 0 ]]; do
        case "$1" in
          --project_id)
            PROJECT_ID="$2"
            shift 2
            ;;
          --zone)
            ZONE="$2"
            shift 2
            ;;
          --help)
            usage
            exit 0
            ;;
          *)
            echo "Unknown option: $1" >&2
            usage >&2
            exit 1
            ;;
        esac
      done
    
      # --- Validate required arguments ---
      if [[ -z "${PROJECT_ID}" ]]; then
        echo "Error: --project_id is required." >&2
        usage >&2
        exit 1
      fi
    
      if [[ -z "${ZONE}" ]]; then
        echo "Error: --zone is required." >&2
        usage >&2
        exit 1
      fi
    
      # The boot disk name defaults to the instance name
      BOOT_DISK_NAME=$TARGET_INSTANCE_NAME
    
      echo "Starting script with the following settings:"
      echo "PROJECT_ID:           ${PROJECT_ID}"
      echo "ZONE:                 ${ZONE}"
      echo "TARGET_INSTANCE_NAME: ${TARGET_INSTANCE_NAME}"
      echo "WORKER_INSTANCE_NAME: ${WORKER_INSTANCE_NAME}"
      echo "BOOT_DISK_NAME:       ${BOOT_DISK_NAME}"
      echo "IMAGE_FAMILY:         ${IMAGE_FAMILY}"
      echo "IMAGE_PROJECT:        ${IMAGE_PROJECT}"
      echo "--------------------------------------------------"
    
      # Set context
      gcloud config set project "${PROJECT_ID}"
      gcloud config set compute/zone "${ZONE}"
    
      echo "Step 1: Create target VM: ${TARGET_INSTANCE_NAME}"
      run_gcloud compute instances create "${TARGET_INSTANCE_NAME}" \
        --image-family="${IMAGE_FAMILY}" \
        --image-project="${IMAGE_PROJECT}" \
        --no-address
    
      echo "Step 2: Create worker VM: ${WORKER_INSTANCE_NAME}"
      run_gcloud compute instances create "${WORKER_INSTANCE_NAME}" \
        --image-family="${IMAGE_FAMILY}" \
        --image-project="${IMAGE_PROJECT}" \
        --no-address
    
      echo "Step 3: Stop target VM: ${TARGET_INSTANCE_NAME}"
      run_gcloud compute instances stop "${TARGET_INSTANCE_NAME}"
    
      echo "Step 4: Detach boot disk from target VM"
      run_gcloud compute instances detach-disk "${TARGET_INSTANCE_NAME}" --disk="${BOOT_DISK_NAME}"
    
      echo "Step 5: Attach disk to worker VM: ${WORKER_INSTANCE_NAME}"
      run_gcloud compute instances attach-disk "${WORKER_INSTANCE_NAME}" --disk="${BOOT_DISK_NAME}"
    
      echo " << At this point, the disk is attached to the worker VM >>"
      echo " << Malicious modifications could theoretically be made here >>"
    
      echo "Step 6: Detach disk from worker VM"
      run_gcloud compute instances detach-disk "${WORKER_INSTANCE_NAME}" --disk="${BOOT_DISK_NAME}"
    
      echo "Step 7: Re-attach disk to target VM as boot disk"
      run_gcloud compute instances attach-disk "${TARGET_INSTANCE_NAME}" --disk="${BOOT_DISK_NAME}" --boot
    
      echo "Step 8: Start target VM"
      run_gcloud compute instances start "${TARGET_INSTANCE_NAME}"
    
      echo -n "Step 9: Wait for instance SSH to be available"
      until gcloud compute ssh "${TARGET_INSTANCE_NAME}" --command="true" 2>/dev/null; do
        echo -n "."
        sleep 2
      done
      echo
    
      echo "Step 10: Trigger bad IP findings"
      run_gcloud compute ssh "${TARGET_INSTANCE_NAME}" \
        --command="for i in {1..5}; do curl 34.66.147.47 > /dev/null 2>/dev/null; done;"
    
      echo "Step 11: Delete worker VM: ${WORKER_INSTANCE_NAME}"
      run_gcloud compute instances delete "${WORKER_INSTANCE_NAME}"
    
      echo "--- Testing Complete ---"
      echo "The script has completed executing the patterns to trigger a correlated"
      echo "threats issue. Check the Security Command Center Issues page."
      echo
      echo "After observing the issue, delete the target VM using:"
      echo "  gcloud compute instances delete ${TARGET_INSTANCE_NAME}"
    
      echo "${TARGET_INSTANCE_NAME}" > ./.lateral_movement_test_name
    }
    
    main "$@"
    
  3. Rendez le script exécutable :

    chmod +x lateral_movement_test.sh
    
  4. Pour générer des résultats, exécutez le script :

    ./lateral_movement_test.sh --project_id $PROJECT --zone $ZONE
    

    L'affichage du problème "Menaces corrélées" peut prendre jusqu'à une heure.

  5. Une fois le problème généré, effectuez le nettoyage à l'aide de la commande fournie dans le résultat du script de test :

    gcloud compute instances delete $(cat .lateral_movement_test_name) && rm -f .lateral_movement_test_name
    

Étapes suivantes