ניתוח סיכונים ל-UEBA

נתמך ב:

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

תיאורים של קבוצות כללים

אלה קבוצות הכללים שזמינות בקטגוריה Risk Analytics for UEBA, והן מקובצות לפי סוג הדפוסים שזוהו:

אימות

  • התחברות חדשה של משתמש למכשיר: משתמש התחבר למכשיר חדש.
  • אירועי אימות חריגים לפי משתמש: ישות משתמש אחת חוותה לאחרונה אירועי אימות חריגים בהשוואה לשימוש היסטורי.
  • אימותים שנכשלו לפי מכשיר: ישות של מכשיר יחיד עם הרבה ניסיונות התחברות שנכשלו לאחרונה, בהשוואה לשימוש בעבר.
  • אימותים שנכשלו לפי משתמש: ישות של משתמש יחיד ביצעה לאחרונה הרבה ניסיונות התחברות שנכשלו, בהשוואה לשימוש ההיסטורי.

ניתוח תנועה ברשת

  • Anomalous Inbound Bytes by Device: כמות משמעותית של נתונים שהועלו לאחרונה לישות של מכשיר יחיד, בהשוואה לשימוש ההיסטורי.
  • ‫Anomalous Outbound Bytes by Device: כמות משמעותית של נתונים שהורדו לאחרונה מישות של מכשיר אחד, בהשוואה לשימוש היסטורי.
  • חריגה בסך הבייטים לפי מכשיר: ישות של מכשיר העלתה והורידה לאחרונה כמות משמעותית של נתונים, בהשוואה לשימוש ההיסטורי.
  • בייטים חריגים נכנסים לפי משתמש: ישות של משתמש יחיד הורידה לאחרונה כמות משמעותית של נתונים, בהשוואה לשימוש ההיסטורי.
  • סך בייטים חריג לפי משתמש: ישות משתמש העלתה והורידה לאחרונה כמות משמעותית של נתונים, בהשוואה לשימוש ההיסטורי.
  • Brute Force then Successful Login by User: ישות של משתמש יחיד מכתובת IP אחת ניסתה כמה פעמים לאמת את הזהות שלה באפליקציה מסוימת, ובסוף הצליחה להתחבר.

זיהויים שמבוססים על קבוצת חברות להשוואה

  • התחברות חריגה או מוגזמת של משתמש חדש: פעילות אימות חריגה או מוגזמת של משתמש שנוצר לאחרונה. הפעולה הזו משתמשת בזמן היצירה מנתוני ההקשר של AD.

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

פעולות חשודות

  • יצירת מספר מופרז של חשבונות לפי מכשיר: ישות מכשיר יצרה כמה חשבונות משתמשים חדשים.
  • מספר חריג של התראות לפי משתמש: דווח על מספר גדול של התראות אבטחה מאנטי-וירוס או ממכשיר נקודת קצה (לדוגמה, החיבור נחסם, זוהתה תוכנה זדונית) לגבי ישות משתמש, שהיה גדול בהרבה מהדפוסים ההיסטוריים. אלה אירועים שבהם שדה ה-UDM של security_result.action מוגדר כ-BLOCK.

זיהויים שמבוססים על מניעת אובדן נתונים (DLP)

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

הנתונים הנדרשים לניתוח סיכונים בקטגוריה UEBA

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

אימות

כדי להשתמש בקבוצות הכללים האלה, צריך לאסוף נתוני יומנים מ-Azure AD Directory Audit‏ (AZURE_AD_AUDIT) או מ-Windows Event‏ (WINEVTLOG).

כדי להשתמש ב-WINEVTLOG, צריך להגדיר את איסוף הנתונים כך שיכלול את Event IDs של Windows ביומן האירועים Security Channel. האירועים האלה ממופים ישירות אל Event types (לדוגמה, USER_LOGIN או PROCESS_LAUNCH) שמשמש את מנוע הזיהוי.

דרישות לגבי מזהה אירוע ב-Windows

סוג אירוע מזהה האירוע ב-Windows
USER_LOGIN 529, 4624, 4625, 4626, 4648, 4672, 4768, 4769, 4770, 4771, 4777, 4820, 4821, 4964
USER_CREATION 4720
NETWORK_CONNECTION 4096, 4097, 4321, 5156, 5632, 5633, 5157
GROUP_MODIFICATION 4728, 4729, 4732, 4733, 4735, 4737, 4745, 4746, 4747, 4750, 4751, 4752, 4755, 4756, 4757, 4760, 4761, 4762, 4764, 4784, 4785, 4786, 4787, 4788, 4791
PROCESS_LAUNCH 4688
PROCESS_OPEN 4663, 4670, 4691, 8002

ניתוח תנועה ברשת

כדי להשתמש בקבוצות הכללים האלה, צריך לאסוף נתוני יומן שמתעדים את הפעילות ברשת. לדוגמה, ממכשירים כמו FortiGate (FORTINET_FIREWALL),‏ Check Point (CHECKPOINT_FIREWALL),‏ Zscaler (ZSCALER_WEBPROXY),‏ CrowdStrike Falcon (CS_EDR) או Carbon Black (CB_EDR).

זיהויים שמבוססים על קבוצת חברות להשוואה

כדי להשתמש בקבוצות הכללים האלה, צריך לאסוף נתוני יומנים מ-Azure AD Directory Audit‏ (AZURE_AD_AUDIT) או מ-Windows Event‏ (WINEVTLOG).

פעולות חשודות

כל קבוצת כללים בקבוצה הזו משתמשת בסוג נתונים שונה.

קבוצת הכללים "יצירת מספר מוגזם של חשבונות במכשיר"

כדי להשתמש בקבוצת הכללים הזו, צריך לאסוף נתוני יומנים מ-Azure AD Directory Audit‏ (AZURE_AD_AUDIT) או מ-Windows Event‏ (WINEVTLOG).

קבוצת הכללים "יותר מדי התראות לפי משתמש"

כדי להשתמש בקבוצת הכללים הזו, צריך לאסוף נתוני יומן שמתעדים פעילויות של נקודות קצה או נתוני ביקורת, כמו אלה שתועדו על ידי CrowdStrike Falcon‏ (CS_EDR),‏ Carbon Black‏ (CB_EDR) או Azure AD Directory Audit‏ (AZURE_AD_AUDIT).

זיהויים שמבוססים על מניעת אובדן נתונים (DLP)

כדי להשתמש בקבוצות הכללים האלה, צריך לאסוף נתוני יומנים שמתעדים פעילויות של תהליכים וקבצים, כמו אלה שמתועדים על ידי CrowdStrike Falcon‏ (CS_EDR),‏ Carbon Black‏ (CB_EDR) או SentinelOne EDR‏ (SENTINEL_EDR).

יחסי תלות בין שדות

בקטע הזה מתוארים שדות המדדים והמאפיינים שבהם משתמשים כללי Google SecOps UEBA.

יחסי תלות בין מדדים

בטבלה הבאה מפורטים המדדים ושאילתות החיפוש התואמות ב-UDM שמגדירות את האירועים שתורמים לכל מדד.

מדד שאילתת חיפוש ב-UDM לאירועים שתורמים למדד
AUTH_ATTEMPTS_FAIL metadata.event_type = "USER_LOGIN"
AND security_result.action != "UNKNOWN_ACTION"
AND security_result.action != "ALLOW"
AUTH_ATTEMPTS_SUCCESS metadata.event_type = "USER_LOGIN"
AND (security_result.action = "UNKNOWN_ACTION" OR security_result.action = "ALLOW")
AUTH_ATTEMPTS_TOTAL metadata.event_type = "USER_LOGIN"
AND security_result.action >= "UNKNOWN_ACTION"
DNS_BYTES_OUTBOUND network.sent_bytes > 0
AND (network.ip_protocol = "UDP" AND target.port = 53)
OR (network.ip_protocol = "TCP" AND (target.port = 53 OR target.port=3000))
DNS_QUERIES_FAIL network.dns.id > 0
AND network.dns.response_code != 0
DNS_QUERIES_SUCCESS network.dns.id > 0
AND network.dns.response_code = 0
DNS_QUERIES_TOTAL network.dns.id > 0
FILE_EXECUTIONS_FAIL metadata.event_type = "PROCESS_LAUNCH"
AND security_result.action != "ALLOW"
FILE_EXECUTIONS_SUCCESS metadata.event_type = "PROCESS_LAUNCH"
AND security_result.action = "ALLOW"
FILE_EXECUTIONS_TOTAL metadata.event_type = "PROCESS_LAUNCH"
HTTP_QUERIES_FAIL network.http.method != ""
AND (network.http.response_code >= 400 OR network.http.response_code = 0)
HTTP_QUERIES_SUCCESS network.http.method != ""
AND network.http.response_code < 400
HTTP_QUERIES_TOTAL network.http.method != ""
NETWORK_BYTES_INBOUND network.received_bytes > 0
AND network.received_bytes < 1000000000000000
NETWORK_BYTES_OUTBOUND network.sent_bytes > 0
AND network.sent_bytes < 1000000000000000
NETWORK_BYTES_TOTAL (network.received_bytes > 0 AND network.received_bytes < 1000000000000000)
OR (network.sent_bytes > 0 AND network.sent_bytes < 1000000000000000)
NETWORK_FLOWS_INBOUND network.received_bytes > 0
AND network.received_bytes < 1000000000000000
NETWORK_FLOWS_OUTBOUND network.sent_bytes > 0
AND network.sent_bytes < 1000000000000000
NETWORK_FLOWS_TOTAL (network.received_bytes > 0 AND network.received_bytes < 1000000000000000)
OR (network.sent_bytes > 0 AND network.sent_bytes < 1000000000000000)
RESOURCE_READ_FAIL (metadata.event_type = "FILE_OPEN" OR metadata.event_type = "RESOURCE_READ")
AND security_result.action != "UNKNOWN_ACTION"
AND security_result.action != "ALLOW"
RESOURCE_READ_SUCCESS (metadata.event_type = "FILE_OPEN" OR metadata.event_type = "RESOURCE_READ")
AND (security_result.action = "UNKNOWN_ACTION" OR security_result.action = "ALLOW")
RESOURCE_READ_TOTAL (metadata.event_type = "FILE_OPEN" OR metadata.event_type = "RESOURCE_READ")
RESOURCE_WRITTEN_FAIL (metadata.event_type = "FILE_CREATION" OR metadata.event_type = "RESOURCE_CREATION")
AND security_result.action != "UNKNOWN_ACTION"
AND security_result.action != "ALLOW"
RESOURCE_WRITTEN_SUCCESS (metadata.event_type = "FILE_CREATION" OR metadata.event_type = "RESOURCE_CREATION")
AND (security_result.action = "UNKNOWN_ACTION" OR security_result.action = "ALLOW")
RESOURCE_WRITTEN_TOTAL (metadata.event_type = "FILE_CREATION" OR metadata.event_type = "RESOURCE_CREATION")

יחסי תלות בין מאפיינים

בטבלה הבאה מפורטים המאפיינים ואפשרויות השדות המתאימות של UDM שזמינות לסינון או לקיבוץ.

מאפיין אפשרויות שדה
המכשיר הראשי principal.asset.asset_id
principal.asset.hostname
principal.asset.ip
principal.asset.mac
principal.asset.product_object_id
מכשיר היעד target.asset.asset_id
target.asset.hostname
target.asset.ip
target.asset.mac
target.asset.product_object_id
המשתמש הראשי principal.user.email_addresses
principal.user.employee_id
principal.user.product_object_id
principal.user.userid
principal.user.windows_sid
משתמש היעד target.user.email_addresses
target.user.employee_id
target.user.product_object_id
target.user.userid
target.user.windows_sid
שירות היעד target.application
כתובת ה-IP של היעד target.ip
נתיב הקובץ של התהליך הראשי principal.process.file.full_path
גיבוב של קובץ התהליך הראשי principal.process.file.sha256
גיבוב (hash) של הקובץ הראשי principal.file.sha256
המדינה העיקרית principal.ip_geo_artifact.location.country_or_region
קטגוריית אבטחה security_result.category
שם הארגון של הרשת הראשית principal.ip_geo_artifact.network.organization_name
שם הארגון של רשת היעד target.ip_geo_artifact.network.organization_name
גיבוב (hash) של אישור הלקוח network.tls.client.certificate.sha256
סוג שאילתת DNS network.dns.questions.type
דומיין DNS network.dns_domain
סוכן משתמש HTTP network.http.user_agent
סוג האירוע metadata.event_type
מערכת הפעלה principal.platform

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

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

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

דוגמה לכלל של ניתוח סיכונים בקטגוריה UEBA

בדוגמה הבאה מוסבר איך ליצור כלל ליצירת זיהויים בכל שם מארח של ישות שציון הסיכון שלו גבוה מ-100:

rule EntityRiskScore {
  meta:
  events:
    $e1.principal.hostname != ""
    $e1.principal.hostname = $hostname

    $e2.graph.entity.hostname = $hostname
    $e2.graph.risk_score.risk_window_size.seconds = 86400 // 24 hours
    $e2.graph.risk_score.risk_score >= 100

    // Run deduplication across the risk score.
    $rscore = $e2.graph.risk_score.risk_score

  match:
    // Dedup on hostname and risk score across a 4 hour window.
    $hostname, $rscore over 4h

  outcome:
    // Force these risk score based rules to have a risk score of zero to
    // prevent self feedback loops.
    $risk_score = 0

  condition:
    $e1 and $e2
}

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

חלונות הסיכון האפשריים היחידים לכללים של חישוב של ציון סיכונים של ישות הם 24 שעות או 7 ימים (86,400 או 604,800 שניות, בהתאמה). אם לא תכללו בכלל את גודל חלון הסיכון, הכלל יחזיר תוצאות לא מדויקות.

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

rule EntityContextAndRiskScore {
  meta:
  events:
    $log_in.metadata.event_type = "USER_LOGIN"
    $log_in.principal.hostname = $host

    $context.graph.entity.hostname = $host
    $context.graph.metadata.entity_type = "ASSET"

    $risk_score.graph.entity.hostname = $host
    $risk_score.graph.risk_score.risk_window_size.seconds = 604800

  match:
    $host over 2m

  outcome:
    $entity_risk_score = max($risk_score.graph.risk_score.normalized_risk_score)

  condition:
    $log_in and $context and $risk_score and $entity_risk_score > 100
}

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

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.