Questa pagina descrive come verificare il funzionamento di Correlated Threats emulando le minacce per attivare intenzionalmente i rilevatori di Security Command Center e creare risultati. Questi risultati delle minacce creano quindi problemi di Correlated Threats per ogni regola.
Per saperne di più su Correlated Threats, consulta la panoramica di Correlated Threats. Se vuoi generare risultati che producono Correlated Threats, devi attivare i servizi di rilevamento delle minacce appropriati nelle impostazioni di Security Command Center settings.
Configura l'ambiente
Queste procedure di test richiedono sia un cluster GKE sia la possibilità di eseguire il provisioning delle VM Compute Engine. Assicurati che il cluster di test sia eseguito su una versione supportata di Google Kubernetes Engine (GKE). Per maggiori informazioni, consulta Utilizzare una versione di GKE supportata.
Prima di testare Correlated Threats, devi prima selezionare un progetto con il cluster GKE appropriato, attivare Cloud Shell e impostare diverse variabili di ambiente. A questo scopo, procedi nel seguente modo:
Vai alla Google Cloud console.
Seleziona il progetto in cui vuoi testare Correlated Threats.
Fai clic su Attiva Cloud Shell.
In Cloud Shell, imposta le variabili di ambiente.
Specifica il progetto, la zona e il cluster GKE da utilizzare per i test:
export PROJECT=PROJECT_ID export ZONE=ZONE export CLUSTER_NAME=CLUSTER_NAMERecupera le credenziali per il tuo cluster:
gcloud container clusters get-credentials $CLUSTER_NAME \ --zone $ZONE \ --project $PROJECT
Emula un attacco di mining di criptovalute
Questa sezione descrive come emulare il mining di criptovalute e creare un problema di Correlated Threats utilizzando la Google Cloud console e Cloud Shell. Per farlo, devi prima attivare Cloud Shell, selezionare un progetto ed eseguire il test.
Per testare Correlated Threats emulando il mining di criptovalute:
Per attivare un problema di Correlated Threats di criptovalute, crea due risultati:
Impact: suspicious crypto mining activity using the stratum protocoleMalware: Cryptomining Bad IP. Per attivare questi due risultati, esegui i seguenti comandi: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"La visualizzazione del problema di Correlated Threats potrebbe richiedere fino a un'ora.
Dopo aver generato il problema di Correlated Threats, esegui la pulizia eseguendo il seguente comando per eliminare il pod Kubernetes utilizzato per i test.
kubectl delete pod "$tag"
Emula un attacco malware
Questa sezione descrive come emulare un attacco malware e creare un problema di Correlated Threats utilizzando la Google Cloud console e Cloud Shell. Per farlo, devi prima attivare Cloud Shell, selezionare un progetto ed eseguire il test.
Per testare Correlated Threats emulando un attacco malware:
Per attivare un problema di Correlated Threats di malware, crea due risultati:
Execution: Local Reconnaissance Tool ExecutioneExecution: Added Malicious Binary Executed. Per creare un pod Ubuntu 24.04 nel cluster GKE e attivare questi due risultati, esegui i seguenti comandi: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"La visualizzazione del problema di Correlated Threats potrebbe richiedere fino a un'ora.
Dopo aver generato il problema di minaccia correlata, esegui la pulizia eseguendo il seguente comando per eliminare il pod Kubernetes utilizzato per i test.
kubectl delete pod "$tag"
Emula un attacco di movimento laterale su GKE
Questa sezione descrive come emulare un attacco di movimento laterale su GKE e creare un problema di Correlated Threats utilizzando la Google Cloud console e Cloud Shell. Per farlo, devi prima attivare Cloud Shell, selezionare un progetto ed eseguire il test.
Per testare Correlated Threats emulando un attacco di movimento laterale, segui questi passaggi:
Per attivare un problema di Correlated Threats di movimento laterale, crea due risultati:
Privilege Escalation: Launch of privileged Kubernetes containereExecution: Container Escape. Per creare un pod Ubuntu nel cluster GKE e attivare questi due risultati, esegui i seguenti comandi: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"La visualizzazione del problema di Correlated Threats potrebbe richiedere fino a un'ora.
Dopo aver generato il problema di Correlated Threats, esegui la pulizia eseguendo il seguente comando per eliminare il pod Kubernetes utilizzato per i test.
kubectl delete pod "$tag"
Emula un attacco di movimento laterale su Compute Engine
Questa sezione descrive come emulare un attacco di movimento laterale su Compute Engine e creare un problema di Correlated Threats utilizzando la Google Cloud console e Cloud Shell. Per farlo, devi prima attivare Cloud Shell, selezionare un progetto ed eseguire il test.
Per testare Correlated Threats emulando un attacco di movimento laterale:
Crea un file denominato
lateral_movement_test.shcon i seguenti contenuti. Questo script crea più VM Compute Engine e genera i seguenti due risultati:Lateral Movement: Modified Boot Disk Attached to InstanceeMalware: 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 "$@"Rendi eseguibile lo script:
chmod +x lateral_movement_test.shPer generare i risultati, esegui lo script:
./lateral_movement_test.sh --project_id $PROJECT --zone $ZONELa visualizzazione del problema di Correlated Threats potrebbe richiedere fino a un'ora.
Dopo aver generato il problema, esegui la pulizia utilizzando il comando fornito nell'output dello script per il test:
gcloud compute instances delete $(cat .lateral_movement_test_name) && rm -f .lateral_movement_test_name
Passaggi successivi
- Scopri come Correlated Threats funziona.