Unexpected Child Shell

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

סקירה כללית

הכלי Container Threat Detection (זיהוי איומים בקונטיינרים) זיהה תהליך שיצר באופן לא צפוי תהליך צאצא של מעטפת. יכול להיות שהאירוע הזה מצביע על כך שתוקף מנסה לנצל לרעה פקודות וסקריפטים של מעטפת.

המקור של הממצא הזה הוא זיהוי איומים בקונטיינר.

איך מגיבים

כדי להגיב לממצא הזה:

שלב 1: בדיקת פרטי הממצא

  1. פותחים ממצא Unexpected Child Shell לפי ההוראות במאמר בדיקת ממצאים. חלונית הפרטים של הממצא נפתחת בכרטיסייה סיכום.

  2. בכרטיסייה סיכום, בודקים את המידע בקטעים הבאים:

    • מה זוהה, במיוחד השדות הבאים:
      • תהליך אב: התהליך שיצר באופן לא צפוי את תהליך מעטפת הצאצא.
      • תהליך צאצא: תהליך מעטפת צאצא.
      • ארגומנטים: הארגומנטים שסופקו לקובץ הבינארי של תהליך מעטפת הצאצא.
      • משתני סביבה: משתני הסביבה של הקובץ הבינארי של תהליך מעטפת הצאצא.
      • קונטיינרים: שם הקונטיינר.
      • URI של קונטיינרים: ה-URI של קובץ האימג' של הקונטיינר.
      • פודים של Kubernetes: שם הפוד ומרחב השמות.
    • מקור המידע שהושפע, במיוחד השדות הבאים:
      • השם המוצג של המשאב: השם של המשאב שהושפע.
      • שם המשאב המלא: שם המשאב המלא של האשכול. השם המלא של המשאב כולל את הפרטים הבאים:
        • הפרויקט שמכיל את האשכול: projects/PROJECT_ID
        • המיקום שבו נמצא האשכול: zone/ZONE או locations/LOCATION
        • שם האשכול: projects/CLUSTER_NAME
    • קישורים רלוונטיים, במיוחד השדות הבאים:
      • אינדיקטור של VirusTotal: קישור לדף הניתוח של VirusTotal.
  3. לוחצים על הכרטיסייה JSON ורושמים את השדות הבאים:

‫+processes: מערך שמכיל את כל התהליכים שקשורים לממצא. המערך הזה כולל את תהליך מעטפת הצאצא ואת תהליך האב. ‫+resource: ‫+project_display_name: שם הפרויקט שמכיל את הנכסים. ‫+sourceProperties: ‫+VM_Instance_Name: השם של צומת GKE שבו ה-Pod הופעל.

שלב 2: בדיקת האשכול והצומת

  1. נכנסים לדף Kubernetes clusters במסוף Google Cloud .

    מעבר אל Kubernetes clusters

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

  3. בוחרים את האשכול שמופיע ב-resource.name. שימו לב למטא-נתונים לגבי האשכול והבעלים שלו.

  4. לוחצים על הכרטיסייה Nodes. בוחרים את הצומת שמופיע ב-VM_Instance_Name.

  5. לוחצים על הכרטיסייה פרטים ורושמים את ההערה container.googleapis.com/instance_id.

שלב 3: בדיקת הפוד

  1. נכנסים לדף Kubernetes Workloads במסוף Google Cloud .

    עוברים אל Kubernetes Workloads

  2. בסרגל הכלים של המסוף, בוחרים את הפרויקט שצוין בשם המשאב המלא (resource.name) של האשכול בסיכום הממצאים, אם צריך. Google Cloud

  3. לוחצים על הצגת עומסי עבודה של המערכת.

  4. מסננים את רשימת עומסי העבודה לפי שם האשכול שרשמתם בשם המשאב המלא (resource.name) של סיכום הממצאים, ואם צריך, לפי מרחב השמות (kubernetes.pods.ns) של ה-Pod שרשמתם.

  5. לוחצים על שם עומס העבודה שתואם לערך של המאפיין VM_Instance_Name שציינתם קודם ב-JSON של הממצא. הדף Pod details נפתח.

  6. בדף פרטי ה-Pod, כדאי לשים לב לכל מידע על ה-Pod שעשוי לעזור לכם לפתור את האיום.

שלב 4: בדיקת היומנים

  1. במסוף Google Cloud , עוברים אל Logs Explorer.

    כניסה לדף Logs Explorer

  2. בסרגל הכלים של המסוף Google Cloud , בוחרים את הפרויקט שמופיע ב-resource.project_display_name.

  3. מגדירים את Select time range לתקופה הרצויה.

  4. בדף שנטען, מבצעים את הפעולות הבאות:

    1. כדי למצוא יומנים של Pod עבור Pod_Name, משתמשים במסנן הבא:
      • resource.type="k8s_container"
      • resource.labels.project_id="resource.project_display_name"
      • resource.labels.location="location"
      • resource.labels.cluster_name="cluster_name"
      • resource.labels.namespace_name="Pod_Namespace"
      • resource.labels.pod_name="Pod_Name"
    2. כדי למצוא יומני ביקורת של אשכול, משתמשים במסנן הבא:
      • logName="projects/resource.project_display_name/logs/cloudaudit.googleapis.com%2Factivity"
      • resource.type="k8s_cluster"
      • resource.labels.project_id="resource.project_display_name"
      • resource.labels.location="location"
      • resource.labels.cluster_name="cluster_name"
      • Pod_Name
    3. כדי למצוא יומני מסוף של צומת GKE, משתמשים במסנן הבא:
      • resource.type="gce_instance"
      • resource.labels.instance_id="instance_id"

שלב 5: בדיקת מאגר התגים הפעיל

אם הקונטיינר עדיין פועל, יכול להיות שאפשר לבדוק את סביבת הקונטיינר ישירות.

  1. נכנסים למסוף Google Cloud .

    פתיחת מסוף Google Cloud

  2. בסרגל הכלים של המסוף Google Cloud , בוחרים את הפרויקט שמופיע ב-resource.project_display_name.

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

  4. מריצים את הפקודות הבאות כדי לקבל את פרטי הכניסה של GKE לאשכול.

    לגבי אשכולות אזוריים, מריצים את הפקודה הבאה:

      gcloud container clusters get-credentials cluster_name --zone location --project resource.project_display_name
    

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

      gcloud container clusters get-credentials cluster_name --region location --project resource.project_display_name
    
  5. כדי להפעיל מעטפת בסביבת הקונטיינר, מריצים את הפקודה הבאה:

      kubectl exec --namespace=Pod_Namespace -ti Pod_Name -c Container_Name -- /bin/sh
    

    כדי להשתמש בפקודה הזו, צריך להתקין מעטפת במיקום /bin/sh במאגר.

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

      ps axjf
    

    כדי להשתמש בפקודה הזו, צריך להתקין את /bin/ps במאגר.

שלב 6: מחקר על שיטות תקיפה ותגובה

  1. כדאי לעיין ברשומות של מסגרת MITRE ATT&CK לגבי סוג הממצא הזה: Command and Scripting Interpreter: Unix Shell.
  2. כדי לבדוק את ערך הגיבוב (hash) ‏SHA-256 של הקובץ הבינארי שסומן כזדוני ב-VirusTotal, לוחצים על הקישור באינדיקטור של VirusTotal. ‫VirusTotal הוא שירות בבעלות Alphabet שמספק הקשר לגבי קבצים, כתובות URL, דומיינים וכתובות IP שעלולים להיות זדוניים.
  3. כדי לפתח תוכנית תגובה, משלבים את תוצאות החקירה עם המחקר של MITRE והניתוח של VirusTotal.

שלב 7: מטמיעים את התגובה

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

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