ניתוח סיכונים ל-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" |
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 |
| גיבוב של קובץ התהליך הראשי | 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.