גישה ראשונית: משתמש סופר-אדמין במסד נתונים כותב לטבלאות משתמשים

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

סקירה כללית

חשבון הסופר-משתמש במסד הנתונים של Cloud SQL (postgres ל-PostgreSQL ו-root ל-MySQL) כתב לטבלאות משתמשים. בדרך כלל לא מומלץ להשתמש במשתמש על (תפקיד עם גישה רחבה מאוד) כדי לכתוב לטבלאות משתמשים. צריך להשתמש בחשבון משתמש עם גישה מוגבלת יותר לפעילות היומיומית הרגילה. כשמשתמש על כותב לטבלת משתמשים, זה יכול להצביע על כך שתוקף העלה את ההרשאות שלו או פגע במשתמש ברירת המחדל של מסד הנתונים ומשנה את הנתונים. יכול להיות גם שהיא מצביעה על שיטות רגילות אבל לא בטוחות.

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

איך מגיבים

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

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

  1. פותחים ממצא של Initial Access: Database Superuser Writes to User Tables כמו שמתואר במאמר בדיקת ממצאים.
  2. בכרטיסייה Summary (סיכום) בחלונית הפרטים של הממצא, בודקים את המידע בקטעים הבאים:

    • מה זוהה, במיוחד השדות הבאים:
      • השם המוצג של מסד הנתונים: השם של מסד הנתונים במכונה של Cloud SQL PostgreSQL או MySQL שהושפעה.
      • שם המשתמש במסד הנתונים: משתמש העל.
      • שאילתת מסד נתונים: שאילתת ה-SQL שמופעלת בזמן הכתיבה לטבלאות המשתמשים.
    • מקור המידע שהושפע, במיוחד השדות הבאים:
      • השם המלא של המשאב: שם המשאב של מופע Cloud SQL שהושפע.
      • שם מלא של ההורה: שם המשאב של מופע Cloud SQL.
      • השם המלא של הפרויקט: Google Cloud הפרויקט שמכיל את המופע של Cloud SQL.
    • קישורים רלוונטיים, במיוחד השדות הבאים:
      • Cloud Logging URI: קישור לרשומות ב-Logging.
      • שיטת MITRE ATT&CK: קישור למסמכי התיעוד של MITRE ATT&CK.
      • ממצאים קשורים: קישורים לממצאים קשורים.
  3. כדי לראות את ה-JSON המלא של הממצא, לוחצים על הכרטיסייה JSON.

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

  1. במסוף Google Cloud , לוחצים על הקישור ב-cloudLoggingQueryURIשלב 1) כדי לעבור אל Logs Explorer. הדף Logs Explorer כולל את כל היומנים שקשורים למופע הרלוונטי של Cloud SQL.
  2. כדי לבדוק את היומנים של PostgreSQL pgaudit או את יומני הביקורת של Cloud SQL ל-MySQL, שמכילים את השאילתות שהופעלו על ידי משתמש העל, משתמשים במסננים הבאים:
    • protoPayload.request.user="SUPERUSER"

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

  1. כדאי לעיין בערך של מסגרת MITRE ATT&CK לגבי סוג הממצא הזה: Exfiltration Over Web Service (העברה לא מורשית של נתונים דרך שירות אינטרנט).
  2. כדי לקבוע אם יש צורך בפעולות נוספות לתיקון הבעיה, כדאי לשלב את תוצאות הבדיקה עם מחקר של MITRE.

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

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

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

הנה דוגמה ל-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": "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"
    }
}

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