Exfiltration: Cloud SQL-Daten-Exfiltration

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

Eine Daten-Exfiltration aus Cloud SQL wird durch die Untersuchung von Audit-Logs für zwei Szenarien erkannt:

  • Live-Instanzdaten, die in einen Cloud Storage-Bucket außerhalb der Organisation exportiert wurden
  • Live-Instanzdaten, die in einen Cloud Storage-Bucket exportiert wurden, der der Organisation gehört und öffentlich zugänglich

Alle Cloud SQL-Instanztypen werden unterstützt.

Bei Aktivierungen der Security Command Center Premium-Dienststufe auf Projektebene ist dieses Ergebnis nur verfügbar, wenn die Standard-Legacy-Dienststufe in der übergeordneten Organisation aktiviert ist.

Die Quelle von diesem Ergebnis ist Event Threat Detection.

Maßnahmen

So reagieren Sie auf dieses Ergebnis:

Schritt 1: Ergebnisdetails prüfen

  1. Öffnen Sie ein Exfiltration: Cloud SQL Data Exfiltration-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 wurde erkannt, insbesondere die folgenden Felder:
      • E-Mail-Adresse des Principals : das Konto, das zur Exfiltration der Daten verwendet wird.
      • Exfiltrationsquellen: Details zur Cloud SQL -Instanz, deren Daten exfiltriert wurden.
      • Exfiltrationsziele: Details zum Cloud Storage Bucket, in den die Daten exportiert wurden.
    • Betroffene Ressource, insbesondere die folgenden Felder:
      • Vollständiger Name der Ressource: der Ressourcenname der Cloud SQL-Instanz deren Daten exfiltriert wurden.
      • Vollständiger Projektname: das Google Cloud Projekt, das die Cloud SQL-Quelldaten enthält.
    • Weitere Informationen, einschließlich:
      • Cloud Logging-URI: Link zu Logging-Einträgen.
      • MITRE ATT&CK-Methode: Link zur MITRE ATT&CK-Dokumentation.
      • Ähnliche Ergebnisse: Links zu ähnlichen Ergebnissen.
  3. Klicken Sie auf den Tab JSON.

  4. Beachten Sie im JSON-Code für das Ergebnis die folgenden Felder:

    • sourceProperties:
      • evidence:
      • sourceLogId:
        • projectId: das Google Cloud Projekt, das die Cloud SQL-Quellinstanz enthält.
      • properties
      • bucketAccess: gibt an, ob der Cloud Storage-Bucket öffentlich zugänglich oder außerhalb der Organisation befindet
      • exportScope: der Umfang der exportierten Daten, z. B. die gesamte Instanz, eine oder mehrere Datenbanken, eine oder mehrere Tabellen oder eine durch eine Abfrage angegebene Teilmenge

Schritt 2: Berechtigungen und Einstellungen prüfen

  1. Rufen Sie in der Google Cloud Console die Seite IAM auf.

    IAM aufrufen

  2. Wählen Sie bei Bedarf das Projekt der Instanz aus, die im projectId Feld im Ergebnis-JSON (aus Schritt 1) aufgeführt ist.

  3. Geben Sie auf der angezeigten Seite im Feld Filter die E-Mail-Adresse ein, die in der Zeile E-Mail-Adresse des Principals auf dem Tab Zusammenfassung der Ergebnisdetails (aus Schritt 1) aufgeführt ist. Prüfen Sie, welche Berechtigungen dem Konto zugewiesen sind.

Schritt 3: Protokolle prüfen

  1. Rufen Sie in der Google Cloud Console den Log-Explorer auf. Klicken Sie dazu auf den Link in Cloud Logging-URI (aus Schritt 1). Die Seite Log-Explorer enthält alle Logs, die sich auf die relevante Cloud SQL-Instanz beziehen.

Schritt 4: Angriffs- und Reaktionsmethoden untersuchen

  1. Prüfen Sie den MITRE-ATT&CK-Framework-Eintrag für diesen Ergebnistyp: Exfiltration over Web Service: Exfiltration to Cloud Storage.
  2. Prüfen Sie die ähnlichen Ergebnisse. Klicken Sie dazu auf den Link in der Zeile Ähnliche Ergebnisse , der in Schritt 1 beschrieben wurde. Ähnliche Ergebnisse haben denselben Ergebnistyp auf derselben Cloud SQL-Instanz.
  3. Um einen Antwortplan zu entwickeln, kombinieren Sie Ihre Prüfungsergebnisse mit der MITRE-Studie.

Schritt 5: Antwort implementieren

Der folgende Reaktionplan ist möglicherweise für dieses Ergebnis geeignet, kann sich jedoch auch auf Abläufe auswirken. Prüfen Sie die Informationen, die Sie im Rahmen Ihrer Untersuchung erfasst haben, sorgfältig, um die beste Lösung für die Behebung der Ergebnisse zu finden.

Beispiel für ein Ergebnis-JSON

Im Folgenden sehen Sie ein Beispiel für das Ergebnis-JSON.

{
    "finding": {
      "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID",
      "parent": "organizations/ORGANIZATION_ID/sources/SOURCE_ID",
      "resource_name": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "state": "ACTIVE",
      "category": "Exfiltration: CloudSQL Data Exfiltration",
      "sourceProperties": {
        "sourceId": {
          "projectNumber": "PROJECT_NUMBER",
          "customerOrganizationNumber": "ORGANIZATION_ID"
        },
        "detectionCategory": {
          "technique": "storage_bucket_exfiltration",
          "indicator": "audit_log",
          "ruleName": "cloudsql_exfil",
          "subRuleName": "export_to_public_gcs"
        },
        "detectionPriority": "HIGH",
        "affectedResources": [
          {
            "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
          },
          {
            "gcpResourceName": "//storage.googleapis.com/TARGET_STORAGE_BUCKET_NAME"
          },
          {
            "gcpResourceName": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME"
          }
        ],
        "evidence": [{
          "sourceLogId": {
            "projectId": "PROJECT_ID",
            "resourceContainer": "projects/PROJECT_ID",
            "timestamp": {
              "seconds": "0",
              "nanos": 0.0
            },
            "insertId": "INSERT_ID"
          }
        }],
        "properties": {
          "exportToGcs": {
            "principalEmail": "PRINCIPAL_EMAIL",
            "cloudsqlInstanceResource": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME",
            "gcsUri": "gs://TARGET_STORAGE_BUCKET_NAME/TARGET_FILE_NAME",
            "bucketAccess": "PUBLICLY_ACCESSIBLE",
            "bucketResource": "//storage.googleapis.com/TARGET_STORAGE_BUCKET_NAME",
            "exportScope": "WHOLE_INSTANCE"
          }
        },
        "findingId": "FINDING_ID",
        "contextUris": {
          "mitreUri": {
            "displayName": "MITRE Link",
            "url": "https://attack.mitre.org/techniques/T1567/002/"
          },
          "cloudLoggingQueryUri": [{
            "displayName": "Cloud Logging Query Link",
            "url": "LOGGING_LINK"
          }],
          "relatedFindingUri": {
            "displayName": "Related CloudSQL Exfiltration findings",
            "url": "RELATED_FINDINGS_LINK"
          }
        }
      },
      "securityMarks": {
        "name": "organizations/ORGANIZATION_ID/sources/SOURCE_ID/findings/FINDING_ID/securityMarks"
      },
      "eventTime": "2021-10-11T16:32:59.828Z",
      "createTime": "2021-10-11T16:33:00.229Z",
      "severity": "HIGH",
      "workflowState": "NEW",
      "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/FINDING_ID"
      "mute": "UNDEFINED",
      "findingClass": "THREAT",
      "mitreAttack": {
        "primaryTactic": "EXFILTRATION",
        "primaryTechniques": ["EXFILTRATION_OVER_WEB_SERVICE", "EXFILTRATION_TO_CLOUD_STORAGE"]
      },
      "access": {
        "principalEmail": "PRINCIPAL_EMAIL",
        "callerIp": "IP",
        "callerIpGeo": {
        },
        "serviceName": "cloudsql.googleapis.com",
        "methodName": "cloudsql.instances.export"
      },
      "exfiltration": {
        "sources": [
          {
            "name": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME",
            "components": []
          }
        ],
        "targets": [
          {
            "name": "//storage.googleapis.com/TARGET_STORAGE_BUCKET_NAME",
            "components": [
              "TARGET_FILE_NAME"
            ]
          }
        ]
      },
    },
    "resource": {
      "name": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "projectName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
      "projectDisplayName": "PROJECT_ID",
      "parentName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
      "parentDisplayName": "PROJECT_ID",
      "type": "google.cloud.sql.Instance",
      "folders": [{
        "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER",
        "resourceFolderDisplayName": "FOLDER_NAME"
      }],
      "displayName": "INSTANCE_NAME"
    }
}

Nächste Schritte