Rechteausweitung: Erstellen vertraulicher Kubernetes-Bindungen

In diesem Dokument wird ein bestimmter Typ von Bedrohungsergebnissen in Security Command Center beschrieben. Bedrohungsergebnisse werden von Bedrohungsdetektoren generiert, wenn sie eine potenzielle Bedrohung in Ihren Cloud-Ressourcen erkennen. Eine vollständige Liste der verfügbaren Bedrohungsergebnisse finden Sie im Index der Bedrohungsergebnisse.

Übersicht

Zur Ausweitung der Rechte hat ein potenziell böswilliger Akteur versucht, ein neues RoleBinding- oder ClusterRoleBinding-Objekt für die Rolle cluster-admin zu erstellen.

Die Quelle dieses Ergebnisses ist Event Threat Detection.

Maßnahmen

So reagieren Sie auf dieses Ergebnis:

Schritt 1: Ergebnisdetails prüfen

  1. Öffnen Sie das Privilege Escalation: Creation of sensitive Kubernetes bindings-Ergebnis, wie unter Ergebnisse prüfen beschrieben. Der Detailbereich für das Ergebnis wird geöffnet und der Tab Zusammenfassung wird angezeigt.

  2. Sehen Sie sich auf dem Tab Zusammenfassung die Informationen in den folgenden Abschnitten an:

    • Was erkannt wurde, insbesondere die folgenden Felder:
      • Hauptkonto-E-Mail-Adresse: Das Konto, über das der Anruf getätigt wurde.
      • Kubernetes-Bindungen: Die vertrauliche Kubernetes-Bindung oder ClusterRoleBinding, die erstellt wurde.
    • Betroffene Ressource, insbesondere die folgenden Felder:
      • Anzeigename der Ressource: Der Kubernetes-Cluster, in dem die Aktion ausgeführt wurde.
    • Zugehörige Links, insbesondere die folgenden Felder:
      • Cloud Logging-URI: Link zu Logging-Einträgen.
      • MITRE-ATT&CK-Methode: Link zur MITRE-ATT&CK-Dokumentation.
      • Ähnliche Ergebnisse: Links zu ähnlichen Ergebnissen.

Schritt 2: Protokolle prüfen

  1. Rufen Sie auf dem Tab Zusammenfassung der Ergebnisdetails in der Google Cloud -Konsole den Log-Explorer auf. Klicken Sie dazu auf den Link im Feld Cloud Logging-URI.
  2. Prüfen Sie mit den folgenden Filtern, ob der Hauptnutzer andere Aktionen ausgeführt hat:

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

      Ersetzen Sie Folgendes:

    • CLUSTER_NAME: Der Wert, den Sie in den Funddetails im Feld Anzeigename der Ressource notiert haben.

    • PRINCIPAL_EMAIL: Der Wert, den Sie in den Details des Ergebnisses im Feld E-Mail-Adresse des Hauptkontos notiert haben.

Schritt 3: Angriffs- und Reaktionsmethoden untersuchen

  1. Prüfen Sie die MITRE-ATT&CK-Framework-Einträge für diesen Ergebnistyp: Rechteausweitung.
  2. Prüfen Sie die Vertraulichkeit der erstellten Bindung und ob die Rollen für die Subjekte erforderlich sind.
  3. Bei Bindungen können Sie das Subjekt prüfen und untersuchen, ob es die Rolle braucht, an die es gebunden ist.
  4. Prüfen Sie, ob es weitere Anzeichen für schädliche Aktivitäten des Hauptkontos in den Logs gibt.
  5. Wenn die E-Mail-Adresse des Hauptkontos kein Dienstkonto ist, wenden Sie sich an den Inhaber, um herauszufinden, ob der rechtmäßige Kontoinhaber die Aktion ausgeführt hat.

    Wenn die E‑Mail-Adresse des Hauptkontos ein IAM- oder Kubernetes-Dienstkonto ist, identifizieren Sie die Quelle der Aktion, um deren Rechtmäßigkeit festzustellen.

  6. Wenn Sie einen Antwortplan entwickeln möchten, kombinieren Sie Ihre Prüfungsergebnisse mit der MITRE-Forschung.

Beispiel für JSON-Ergebnis

Das folgende Beispiel zeigt das JSON für ein Ergebnis.

{
  "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": {}
    }
  }
}

Nächste Schritte