הסלמת הרשאות: יצירה של קשרי Kubernetes רגישים

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

סקירה כללית

כדי להרחיב את ההרשאות, גורם זדוני פוטנציאלי ניסה ליצור אובייקט חדש מסוג RoleBinding או ClusterRoleBinding לתפקיד cluster-admin.

המקור של הממצא הזה הוא Event Threat Detection.

איך מגיבים

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

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

  1. פותחים את Privilege Escalation: Creation of sensitive Kubernetes bindings הממצא לפי ההוראות שבקטע בדיקת הממצאים. חלונית הפרטים של הממצא נפתחת בכרטיסייה סיכום.

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

    • מה זוהה, במיוחד השדות הבאים:
      • כתובת אימייל ראשית: החשבון שממנו בוצעה השיחה.
      • Kubernetes bindings: ה-Kubernetes binding הרגיש או ClusterRoleBinding שנוצר.
    • מקור המידע שהושפע, במיוחד השדות הבאים:
      • השם המוצג של המשאב: קלאסטר Kubernetes שבו התרחשה הפעולה.
    • קישורים רלוונטיים, במיוחד השדות הבאים:
      • ‫Cloud Logging URI: קישור לרשומות ב-Logging.
      • שיטת MITRE ATT&CK: קישור למסמכי התיעוד של MITRE ATT&CK.
      • ממצאים קשורים: קישורים לממצאים קשורים.

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

  1. בכרטיסייה סיכום של פרטי הממצא ב Google Cloud מסוף, לוחצים על הקישור בשדה Cloud Logging URI כדי לעבור אל Logs Explorer.
  2. כדי לבדוק פעולות אחרות שבוצעו על ידי חשבון המשתמש, אפשר להשתמש במסננים הבאים:

    • resource.labels.cluster_name="CLUSTER_NAME"
    • protoPayload.authenticationInfo.principalEmail="PRINCIPAL_EMAIL"

      מחליפים את מה שכתוב בשדות הבאים:

    • ‫CLUSTER_NAME: הערך שרשמתם בשדה שם התצוגה של המשאב בפרטי הממצא.

    • ‫PRINCIPAL_EMAIL: הערך שרשמתם בשדה כתובת האימייל העיקרית בפרטי הממצא.

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

  1. מעיינים ברשומות של מסגרת MITRE ATT&CK לגבי סוג הממצא הזה: העלאת רמת ההרשאה.
  2. בודקים את רמת הרגישות של הקישור שנוצר, ואם התפקידים נחוצים לנושאים.
  3. במקרה של קישורים, אפשר לבדוק את הנושא ולחקור אם הנושא צריך את התפקיד שהוא מקושר אליו.
  4. בודקים אם יש ביומנים סימנים אחרים לפעילות זדונית של הגורם המרכזי.
  5. אם כתובת האימייל של הגורם המבצע לא שייכת לחשבון שירות, צריך ליצור קשר עם הבעלים של החשבון כדי לוודא שהבעלים הלגיטימי ביצע את הפעולה.

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

  6. כדי לפתח תוכנית תגובה, משלבים את תוצאות החקירה עם מחקר של MITRE.

דוגמה למציאת JSON

הנה דוגמה ל-JSON של הממצא.

{
  "findings": {
    "access": {
      "principalEmail": "PRINCIPAL_EMAIL",
      "callerIp": "IP_ADDRESS",
      "callerIpGeo": {
        "regionCode": "US"
      },
      "serviceName": "k8s.io",
      "methodName": "io.k8s.authorization.rbac.v1.clusterrolebindings.create"
    },
    "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/02dcbf565d9d4972a126ac3c38fd4295",
    "category": "Privilege Escalation: Creation of sensitive Kubernetes bindings",
    "contacts": {
      "technical": {
        "contacts": [
          {
            "email": "EMAIL_ADDRESS"
          },
          {
            "email": "EMAIL_ADDRESS"
          },
          {
            "email": "EMAIL_ADDRESS"
          }
        ]
      }
    },
    "createTime": "2022-10-11T09:29:44.425Z",
    "database": {},
    "eventTime": "2022-10-11T09:29:26.309Z",
    "exfiltration": {},
    "findingClass": "THREAT",
    "findingProviderId": "organizations/ORGANIZATION_NUMBER/firstPartyFindingProviders/etd",
    "indicator": {},
    "kubernetes": {
      "bindings": [
        {
          "name": "cluster-admin",
          "role": {
            "kind": "CLUSTER_ROLE",
            "name": "cluster-admin"
          }
        }
      ]
    },
    "mitreAttack": {},
    "mute": "UNDEFINED",
    "name": "organizations/ORGANIZATION_NUMBER/sources/SOURCE_ID/findings/02dcbf565d9d4972a126ac3c38fd4295",
    "parent": "organizations/ORGANIZATION_NUMBER/sources/SOURCE_ID",
    "parentDisplayName": "Event Threat Detection",
    "resourceName": "//container.googleapis.com/projects/PROJECT_ID/locations/us-west1-a/clusters/CLUSTER_NAME",
    "severity": "LOW",
    "sourceDisplayName": "Event Threat Detection",
    "state": "ACTIVE",
    "vulnerability": {},
    "workflowState": "NEW"
  },
  "resource": {
    "name": "//container.googleapis.com/projects/PROJECT_ID/locations/us-west1-a/clusters/CLUSTER_NAME",
    "display_name": "CLUSTER_NAME",
    "project_name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "project_display_name": "PROJECT_ID",
    "parent_name": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
    "parent_display_name": "PROJECT_ID",
    "type": "google.container.Cluster",
    "folders": [
      {
        "resourceFolderDisplayName": "FOLDER_NAME",
        "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER"
      }
    ]
  },
  "sourceProperties": {
    "sourceId": {
      "projectNumber": "PROJECT_NUMBER",
      "customerOrganizationNumber": "ORGANIZATION_NUMBER"
    },
    "detectionCategory": {
      "ruleName": "gke_control_plane",
      "subRuleName": "create_sensitive_binding"
    },
    "detectionPriority": "LOW",
    "affectedResources": [
      {
        "gcpResourceName": "//k8s.io/rbac.authorization.k8s.io/v1/clusterrolebindings/cluster-admin"
      },
      {
        "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
      }
    ],
    "evidence": [
      {
        "sourceLogId": {
          "projectId": "PROJECT_ID",
          "resourceContainer": "projects/PROJECT_ID",
          "timestamp": {
            "seconds": "1665480566",
            "nanos": 309136000
          },
          "insertId": "e4b2fb24-a118-4d74-80ea-2ec069251321"
        }
      }
    ],
    "properties": {},
    "findingId": "02dcbf565d9d4972a126ac3c38fd4295",
    "contextUris": {
      "mitreUri": {
        "displayName": "MITRE Link",
        "url": "https://attack.mitre.org/tactics/TA0004/"
      },
      "cloudLoggingQueryUri": [
        {
          "displayName": "Cloud Logging Query Link",
          "url": "https://console.cloud.google.com/logs/query;query=timestamp%3D%222022-10-11T09:29:26.309136Z%22%0AinsertId%3D%22e4b2fb24-a118-4d74-80ea-2ec069251321%22%0Aresource.labels.project_id%3D%22PROJECT_ID%22?project=PROJECT_ID"
        }
      ],
      "relatedFindingUri": {}
    }
  }
}

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