בדיקת איומים מתואמים

בדף הזה מוסבר איך אפשר לוודא שהתכונה 'איומים מתואמים' פועלת. לשם כך, צריך לדמות איומים כדי להפעיל בכוונה גלאים של Security Command Center וליצור ממצאים. ממצאי האיומים האלה יוצרים בעיות של איומים מתואמים לכל כלל.

מידע נוסף על איומים קשורים זמין במאמר סקירה כללית על איומים קשורים. אם רוצים ליצור ממצאים שמפיקים איומים מתואמים, צריך להפעיל את שירותי זיהוי האיומים המתאימים בהגדרות של Security Command Center.

מגדירים את הסביבה

התהליכים האלה לבדיקה דורשים אשכול GKE ואפשרות להקצאת מכונות וירטואליות ב-Compute Engine. מוודאים שאשכול הבדיקה שלכם הוא בגרסה נתמכת של Google Kubernetes Engine‏ (GKE). מידע נוסף זמין במאמר שימוש בגרסה נתמכת של GKE.

לפני שבודקים את התכונה 'איומים קשורים', צריך קודם לבחור פרויקט עם אשכול GKE מתאים, להפעיל את Cloud Shell ולהגדיר כמה משתני סביבה. לשם כך, בצע את הצעדים הבאים:

  1. עוברים אל Google Cloud המסוף.

    כניסה ל Google Cloud מסוף

  2. בוחרים את הפרויקט שבו רוצים לבדוק את האיומים שקשורים זה לזה.

  3. לוחצים על הפעלת Cloud Shell.

  4. ב-Cloud Shell, מגדירים משתני סביבה.

    1. מציינים את הפרויקט, האזור ואשכול GKE שבהם רוצים להשתמש לבדיקה:

      export PROJECT=PROJECT_ID
      export ZONE=ZONE
      export CLUSTER_NAME=CLUSTER_NAME
      
    2. מקבלים את פרטי הכניסה לאשכול:

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

הדמיה של מתקפת כריית מטבעות וירטואליים

בקטע הזה מוסבר איך לבצע הדמיה של כריית מטבעות קריפטוגרפיים וליצור בעיה של איומים מתואמים באמצעות מסוף Google Cloud ו-Cloud Shell. כדי לעשות את זה, קודם מפעילים את Cloud Shell, בוחרים פרויקט ואז מבצעים את הבדיקה.

כדי לבדוק את התכונה 'איומים קשורים' באמצעות הדמיה של כריית מטבעות קריפטוגרפיים, פועלים לפי השלבים הבאים:

  1. הגדרת הסביבה

  2. כדי להפעיל בעיה של איומים קשורים למטבעות וירטואליים, יוצרים שתי תוצאות: Impact: suspicious crypto mining activity using the stratum protocol ו-Malware: Cryptomining Bad IP. כדי להפעיל את שתי התוצאות האלה, מריצים את הפקודות הבאות:

    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"
    

    יכול להיות שיעבור עד שעה עד שהבעיה 'איומים מתואמים' תופיע.

  3. אחרי שנוצרת בעיה של איומים מתואמים, מבצעים ניקוי על ידי הפעלת הפקודה הבאה כדי למחוק את ה-Pod של Kubernetes ששימש לבדיקה.

    kubectl delete pod "$tag"
    

יצירת אמולציה של מתקפת תוכנה זדונית

בקטע הזה מוסבר איך לדמות מתקפת תוכנות זדוניות וליצור בעיה של איומים מתואמים באמצעות מסוף Google Cloud ו-Cloud Shell. כדי לעשות את זה, קודם מפעילים את Cloud Shell, בוחרים פרויקט ואז מבצעים את הבדיקה.

כדי לבדוק את התכונה 'איומים קשורים' על ידי הדמיה של מתקפת תוכנות זדוניות, פועלים לפי השלבים הבאים:

  1. הגדרת הסביבה

  2. כדי להפעיל בעיה של איומים מתואמים של תוכנות זדוניות, יוצרים שתי תוצאות: Execution: Local Reconnaissance Tool Execution ו-Execution: Added Malicious Binary Executed. כדי ליצור Pod של Ubuntu 24.04 באשכול GKE ולהפעיל את שתי הממצאים האלה, מריצים את הפקודות הבאות:

    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"
    

    יכול להיות שיעבור עד שעה עד שהבעיה 'איומים קשורים' תופיע.

  3. אחרי שנוצרת בעיה שקשורה לאיום, מריצים את הפקודה הבאה כדי למחוק את ה-Pod של Kubernetes ששימש לבדיקה.

    kubectl delete pod "$tag"
    

יצירת אמולציה של התקפת תנועה רוחבית ב-GKE

בקטע הזה מוסבר איך לבצע הדמיה של מתקפת תנועה לרוחב ב-GKE וליצור בעיה של איומים מתואמים באמצעות מסוףGoogle Cloud ו-Cloud Shell. כדי לעשות את זה, קודם מפעילים את Cloud Shell, בוחרים פרויקט ואז מבצעים את הבדיקה.

כדי לבדוק את התכונה 'איומים קשורים' באמצעות הדמיה של מתקפת תנועה לרוחב, פועלים לפי השלבים הבאים:

  1. הגדרת הסביבה

  2. כדי להפעיל בעיה של תנועה לרוחב שקשורה לאיומים, צריך ליצור שתי תוצאות: Privilege Escalation: Launch of privileged Kubernetes container ו-Execution: Container Escape. כדי ליצור Ubuntu Pod באשכול GKE ולהפעיל את שתי התוצאות האלה, מריצים את הפקודות הבאות:

    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"
    

    יכול להיות שיעבור עד שעה עד שהבעיה 'איומים קשורים' תופיע.

  3. אחרי שנוצרת הבעיה Correlated Threats, מריצים את הפקודה הבאה כדי למחוק את ה-Pod של Kubernetes ששימש לבדיקה.

    kubectl delete pod "$tag"
    

הדמיה של מתקפת תנועה רוחבית ב-Compute Engine

בקטע הזה מוסבר איך לדמות מתקפת תנועה לרוחב ב-Compute Engine וליצור בעיה של איומים מתואמים באמצעות מסוףGoogle Cloud ו-Cloud Shell. כדי לעשות את זה, קודם מפעילים את Cloud Shell, בוחרים פרויקט ואז מבצעים את הבדיקה.

כדי לבדוק את התכונה 'איומים קשורים' באמצעות הדמיה של מתקפת תנועה לרוחב, פועלים לפי השלבים הבאים:

  1. הגדרת הסביבה

  2. יוצרים קובץ בשם lateral_movement_test.sh עם התוכן הבא. הסקריפט הזה יוצר כמה מכונות וירטואליות ב-Compute Engine ומפיק את שתי הממצאים הבאים: Lateral Movement: Modified Boot Disk Attached to Instance ו-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. הופכים את הסקריפט לניתן להרצה:

    chmod +x lateral_movement_test.sh
    
  4. כדי ליצור תובנות, מריצים את הסקריפט:

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

    יכול להיות שיעבור עד שעה עד שהבעיה 'איומים קשורים' תופיע.

  5. אחרי שהבעיה נוצרת, מבצעים ניקוי באמצעות הפקודה שמופיעה בפלט של סקריפט הבדיקה:

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

המאמרים הבאים