ניתוח סיכונים ל-UEBA
במסמך הזה מוסבר על קבוצות הכללים בקטגוריה Risk Analytics for UEBA, על הנתונים הנדרשים ועל ההגדרות שבהן אפשר להשתמש כדי לכוונן את ההתראות שנוצרות על ידי כל קבוצת כללים. ערכות הכללים האלה עוזרות לזהות איומים על ידי הערכה של מקורות היומן הנתמכים.
תיאורים של קבוצות כללים
קבוצות הכללים הבאות זמינות בקטגוריה Risk Analytics for UEBA ומקובצות לפי סוג הדפוסים שזוהו:
אימות
- כניסה חדשה של משתמש למכשיר: משתמש נכנס למכשיר חדש.
- אירועי אימות חריגים לפי משתמש: לאחרונה, ישות משתמש יחידה הפעילה אירועי אימות חריגים בהשוואה לשימוש היסטורי.
- אימותים שנכשלו לפי מכשיר: לגורם במכשיר יחיד היו הרבה ניסיונות כניסה שנכשלו לאחרונה, בהשוואה לשימוש היסטורי.
- אימותים שנכשלו לפי משתמש: יש משתמש אחד שביצע הרבה ניסיונות כניסה שנכשלו לאחרונה, בהשוואה לשימוש היסטורי.
ניתוח תנועה ברשת
- חריגה בבייטים נכנסים לפי מכשיר: כמות משמעותית של נתונים שהועלו לאחרונה לישות של מכשיר יחיד, בהשוואה לשימוש היסטורי.
- חריגה בבייטים יוצאים לפי מכשיר: כמות משמעותית של נתונים שהורדו לאחרונה מישות של מכשיר יחיד, בהשוואה לשימוש היסטורי.
- Anomalous Total Bytes by Device: יש ישות מכשיר שהעלתה והורידה לאחרונה כמות משמעותית של נתונים, בהשוואה לשימוש היסטורי.
- Anomalous Inbound Bytes by User: ישות של משתמש יחיד הורידה לאחרונה כמות משמעותית של נתונים, בהשוואה לשימוש היסטורי.
- חריגה בסך הבייטים לפי משתמש: ישות משתמש העלתה והורידה לאחרונה כמות משמעותית של נתונים, בהשוואה לשימוש היסטורי.
- התקפת כוח ברוטלית ואז התחברות מוצלחת של משתמש: יישות של משתמש יחיד מכתובת IP אחת ביצעה כמה ניסיונות אימות שנכשלו לאפליקציה מסוימת לפני שהצליחה להתחבר.
זיהויים שמבוססים על קבוצות של חברות להשוואה
התחברויות חריגות או מוגזמות של משתמש שנוצר לאחרונה: פעילות אימות חריגה או מוגזמת של משתמש שנוצר לאחרונה. הנתון הזה מבוסס על זמן היצירה מנתוני ההקשר של AD.
פעולות חשודות חריגות או מוגזמות של משתמש שנוצר לאחרונה: פעילות חריגה או מוגזמת (כולל, בין היתר, טלמטריה של HTTP, ביצוע תהליכים ושינוי קבוצות) של משתמש שנוצר לאחרונה. התכונה הזו משתמשת בזמן היצירה מנתוני ההקשר של AD.
פעולות חשודות
- יצירת חשבונות מוגזמת לפי מכשיר: ישות מכשיר יצרה כמה חשבונות משתמשים חדשים.
- מספר מוגזם של התראות לפי משתמש: דווח על מספר גדול של התראות אבטחה מאנטי-וירוס או ממכשיר נקודת קצה (לדוגמה, החיבור נחסם, זוהתה תוכנה זדונית) לגבי ישות משתמש, והמספר היה גדול בהרבה מהדפוסים ההיסטוריים.
אלה אירועים שבהם השדה
security_result.actionUDM מוגדר לערךBLOCK.
זיהויים שמבוססים על מניעת אובדן נתונים
- תהליכים חריגים או מוגזמים עם יכולות של זליגת נתונים: פעילות חריגה או מוגזמת בתהליכים שמשויכים ליכולות של זליגת נתונים, כמו תוכנות לרישום הקשות, צילומי מסך וגישה מרחוק. הפעולה הזו משתמשת בהעשרה של מטא-נתונים של קבצים מ-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).
זיהויים שמבוססים על מניעת אובדן נתונים
כדי להשתמש באחד מהכללים האלה, צריך לאסוף נתוני יומן שמתעדים פעילויות של תהליכים וקבצים, כמו אלה שמתועדים על ידי 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" |
AUTH_ATTEMPTS_SUCCESS |
metadata.event_type = "USER_LOGIN" |
AUTH_ATTEMPTS_TOTAL |
metadata.event_type = "USER_LOGIN" |
DNS_BYTES_OUTBOUND |
network.sent_bytes > 0 |
DNS_QUERIES_FAIL |
network.dns.id > 0 |
DNS_QUERIES_SUCCESS |
network.dns.id > 0 |
DNS_QUERIES_TOTAL |
network.dns.id > 0 |
FILE_EXECUTIONS_FAIL |
metadata.event_type = "PROCESS_LAUNCH" |
FILE_EXECUTIONS_SUCCESS |
metadata.event_type = "PROCESS_LAUNCH" |
FILE_EXECUTIONS_TOTAL |
metadata.event_type = "PROCESS_LAUNCH" |
HTTP_QUERIES_FAIL |
network.http.method != "" |
HTTP_QUERIES_SUCCESS |
network.http.method != "" |
HTTP_QUERIES_TOTAL |
network.http.method != "" |
NETWORK_BYTES_INBOUND |
network.received_bytes > 0 |
NETWORK_BYTES_OUTBOUND |
network.sent_bytes > 0 |
NETWORK_BYTES_TOTAL |
(network.received_bytes > 0 AND network.received_bytes < 1000000000000000) |
NETWORK_FLOWS_INBOUND |
network.received_bytes > 0 |
NETWORK_FLOWS_OUTBOUND |
network.sent_bytes > 0 |
NETWORK_FLOWS_TOTAL |
(network.received_bytes > 0 AND network.received_bytes < 1000000000000000) |
RESOURCE_READ_FAIL |
(metadata.event_type = "FILE_OPEN" OR metadata.event_type = "RESOURCE_READ") |
RESOURCE_READ_SUCCESS |
(metadata.event_type = "FILE_OPEN" OR metadata.event_type = "RESOURCE_READ") |
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") |
RESOURCE_WRITTEN_SUCCESS |
(metadata.event_type = "FILE_CREATION" OR metadata.event_type = "RESOURCE_CREATION") |
RESOURCE_WRITTEN_TOTAL |
(metadata.event_type = "FILE_CREATION" OR metadata.event_type = "RESOURCE_CREATION") |
יחסי תלות בין מאפיינים
בטבלה הבאה מפורטים המאפיינים ואפשרויות השדות המתאימות ב-UDM שזמינות לסינון או לקיבוץ.
| מאפיין | אפשרויות שדה |
|---|---|
| מכשיר ראשי | principal.asset.asset_idprincipal.asset.hostnameprincipal.asset.ipprincipal.asset.macprincipal.asset.product_object_id |
| מכשיר יעד | target.asset.asset_idtarget.asset.hostnametarget.asset.iptarget.asset.mactarget.asset.product_object_id |
| משתמש ראשי | principal.user.email_addressesprincipal.user.employee_idprincipal.user.product_object_idprincipal.user.useridprincipal.user.windows_sid |
| משתמש היעד | target.user.email_addressestarget.user.employee_idtarget.user.product_object_idtarget.user.useridtarget.user.windows_sid |
| שירות היעד | target.application |
| כתובת IP יעד | target.ip |
| נתיב הקובץ של התהליך הראשי | principal.process.file.full_path |
| גיבוב (hash) של קובץ התהליך העיקרי | 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 |
| גיבוב של אישור לקוח | network.tls.client.certificate.sha256 |
| סוג שאילתת DNS | network.dns.questions.type |
| דומיין DNS | network.dns_domain |
| סוכן משתמש של HTTP | network.http.user_agent |
| סוג האירוע | metadata.event_type |
| מערכת הפעלה | principal.platform |
שינוי ההגדרות של ההתראות שמוחזרות על ידי קבוצות הכללים בקטגוריה הזו
אפשר לצמצם את מספר הזיהויים שנוצרים על ידי כלל או קבוצת כללים באמצעות החרגות של כללים.
החרגת כלל מגדירה את הקריטריונים שמשמשים להחרגת אירוע מהערכה על ידי קבוצת הכללים, או על ידי כללים ספציפיים בקבוצת הכללים. כדי לצמצם את נפח הזיהויים, יוצרים החרגות של כללים. הוראות איך לעשות זאת מופיעות במאמר הגדרת החרגות של כללים.
דוגמה לכלל ב-Risk Analytics לקטגוריית 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
}
כלל הדוגמה הזה מבצע גם ביטול כפילויות עצמי באמצעות קטע ההתאמה. אם יש סיכוי שכלל זיהוי יופעל, אבל שם המארח וציון הסיכון לא משתנים בחלון של 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.