Anfänglicher Zugriff: Datenbank-Superuser schreibt in Nutzertabellen

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

Das Cloud SQL-Datenbank-Superuserkonto (postgres für PostgreSQL und root für MySQL) hat in Nutzertabellen geschrieben. Der Superuser (eine Rolle mit sehr weitreichendem Zugriff) sollte im Allgemeinen nicht zum Schreiben in Nutzertabellen verwendet werden. Für normale tägliche Aktivitäten sollte ein Nutzerkonto mit eingeschränkterem Zugriff verwendet werden. Wenn ein Superuser in eine Nutzertabelle schreibt, könnte das darauf hindeuten, dass ein Angreifer seine Rechte erweitert oder den Standardnutzer der Datenbank kompromittiert hat und Daten ändert. Es könnte auch auf normale, aber unsichere Praktiken hinweisen.

Die Quelle dieses Ergebnisses ist Event Threat Detection.

Maßnahmen

So reagieren Sie auf dieses Ergebnis:

Schritt 1: Ergebnisdetails prüfen

  1. Öffnen Sie ein Initial Access: Database Superuser Writes to User Tables-Ergebnis, wie unter Ergebnisse prüfen beschrieben.
  2. Sehen Sie sich im Bereich „Ergebnisdetails“ auf dem Tab Zusammenfassung die Informationen in den folgenden Abschnitten an:

    • Was erkannt wurde, insbesondere die folgenden Felder:
      • Anzeigename der Datenbank: Der Name der Datenbank in der betroffenen Cloud SQL PostgreSQL- oder MySQL-Instanz.
      • Datenbanknutzername: Der Superuser.
      • Datenbankabfrage: Die SQL-Abfrage, die beim Schreiben in Nutzertabellen ausgeführt wird.
    • Betroffene Ressource, insbesondere die folgenden Felder:
      • Vollständiger Name der Ressource: Der Ressourcenname der betroffenen Cloud SQL-Instanz.
      • Vollständiger Name des übergeordneten Elements: der Ressourcenname der Cloud SQL-Instanz.
      • Vollständiger Projektname: Das Google Cloud Projekt, das die Cloud SQL-Instanz enthält.
    • Weitere Informationen, 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.
  3. Klicken Sie auf den Tab JSON, um das vollständige JSON für das Ergebnis aufzurufen.

Schritt 2: Protokolle prüfen

  1. Rufen Sie in der Google Cloud Console den Log-Explorer auf. Klicken Sie dazu auf den Link in cloudLoggingQueryURI (aus Schritt 1). Die Seite Log-Explorer enthält alle Logs, die sich auf die relevante Cloud SQL-Instanz beziehen.
  2. Prüfen Sie die Logs auf PostgreSQL-pgaudit-Logs oder Cloud SQL for MySQL-Audit-Logs, die die vom Superuser ausgeführten Abfragen enthalten. Verwenden Sie dazu die folgenden Filter:
    • protoPayload.request.user="SUPERUSER"

Schritt 3: Angriffs- und Reaktionsmethoden untersuchen

  1. Sehen Sie sich den MITRE-ATT&CK-Framework-Eintrag für diesen Ergebnistyp an: Exfiltration Over Web Service.
  2. Um festzustellen, ob zusätzliche Schritte zur Abhilfe erforderlich sind, kombinieren Sie Ihre Untersuchungsergebnisse mit dem MITRE-Forschung.

Schritt 4: 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 JSON-Ergebnis

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

{
    "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": "Initial Access: Database Superuser Writes to User Tables",
      "sourceProperties": {
        "sourceId": {
          "projectNumber": "PROJECT_NUMBER",
          "customerOrganizationNumber": "ORGANIZATION_ID"
        },
        "detectionCategory": {
          "ruleName": "cloudsql_superuser_writes_to_user_tables",
        },
        "detectionPriority": "LOW",
        "affectedResources": [
          {
            "gcpResourceName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER"
          },
          {
            "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"
          }
        }],
        "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"
          }
        }
      },
      "eventTime": "2022-01-19T21:36:07.901Z",
      "createTime": "2022-01-19T21:36:08.695Z",
      "severity": "LOW",
      "workflowState": "NEW",
      "canonicalName": "projects/PROJECT_NUMBER/sources/SOURCE_ID/findings/FINDING_ID"
      "mute": "UNDEFINED",
      "findingClass": "THREAT",
      "mitreAttack": {
        "primaryTactic": "INITIAL_ACCESS",
        "primaryTechniques": ["DEFAULT_ACCOUNTS"]
      },
      "database": {
        "displayName": "DATABASE_NAME",
        "userName": "USER_NAME",
        "query": "QUERY",
      },
      "access": {
        "serviceName": "cloudsql.googleapis.com",
        "methodName": "cloudsql.instances.query"
      }
    },
    "resource": {
      "name": "//cloudsql.googleapis.com/projects/PROJECT_ID/instances/INSTANCE_NAME",
      "projectName": "//cloudresourcemanager.googleapis.com/projects/PROJECT_NUMBER",
      "projectDisplayName": "PROJECT_ID",
      "parentName": "//cloudsql.googleapis.com/projects/PROJECT_NUMBER",
      "parentDisplayName": "PROJECT_ID",
      "type": "google.cloud.sql.Instance",
      "folders": [{
        "resourceFolder": "//cloudresourcemanager.googleapis.com/folders/FOLDER_NUMBER",
        "resourceFolderDisplayName": "FOLDER_ID"
      }],
      "displayName": "INSTANCE_NAME"
    }
}

Nächste Schritte