ניתוח סיכונים ל-UEBA
במאמר הזה מוסבר על קבוצות הכללים בקטגוריה Risk Analytics for UEBA, על הנתונים הנדרשים ועל ההגדרות שבהן אפשר להשתמש כדי לשנות את ההתראות שנוצרות על ידי כל קבוצת כללים. ערכות הכללים האלה עוזרות לזהות איומים על ידי הערכה של מקורות היומן הנתמכים.
תיאורים של קבוצות כללים
אלה קבוצות הכללים שזמינות בקטגוריה Risk Analytics for UEBA, והן מקובצות לפי סוג הדפוסים שזוהו:
אימות
- כניסה חדשה של משתמש למכשיר: משתמש נכנס למכשיר חדש.
- אירועי אימות חריגים לפי משתמש: לאחרונה היו לישות משתמש יחידה אירועי אימות חריגים, בהשוואה לשימוש היסטורי.
- כשלים באימות לפי מכשיר: לישות של מכשיר יחיד היו הרבה ניסיונות כושלים להתחברות לאחרונה, בהשוואה לשימוש היסטורי.
- אימותים כושלים לפי משתמש: ישות של משתמש יחיד ביצעה לאחרונה ניסיונות כניסה רבים שנכשלו, בהשוואה לשימוש היסטורי.
ניתוח תנועה ברשת
- Anomalous Inbound Bytes by Device: כמות משמעותית של נתונים שהועלו לאחרונה לישות של מכשיר יחיד, בהשוואה לשימוש היסטורי.
- Anomalous Outbound Bytes by Device: significant amount of data recently downloaded from a single device entity, compared to historical usage.
- חריגה בנפח הכולל של בייטים לפי מכשיר: ישות מכשיר העלתה והורידה לאחרונה כמות משמעותית של נתונים, בהשוואה לשימוש היסטורי.
- Anomalous Inbound Bytes by User: ישות של משתמש יחיד הורידה לאחרונה כמות משמעותית של נתונים, בהשוואה לשימוש היסטורי.
- חריגה בנתוני סך הבייטים לפי משתמש: ישות משתמש העלתה והורידה לאחרונה כמות משמעותית של נתונים, בהשוואה לשימוש היסטורי.
- ניסיון לפריצה בכוח ואז התחברות מוצלחת של משתמש: ישות של משתמש יחיד מכתובת IP אחת ביצעה כמה ניסיונות אימות כושלים לאפליקציה מסוימת לפני שהצליחה להתחבר.
זיהויים שמבוססים על קבוצות של חברות להשוואה
התחברויות חריגות או מוגזמות של משתמש שנוצר לאחרונה: פעילות אימות חריגה או מוגזמת של משתמש שנוצר לאחרונה. הפעולה הזו משתמשת בזמן היצירה מנתוני ההקשר של AD.
פעולות חריגות או חשודות מוגזמות של משתמש שנוצר לאחרונה: פעילות חריגה או מוגזמת (כולל, בין היתר, טלמטריה של HTTP, ביצוע תהליכים ושינוי קבוצות) של משתמש שנוצר לאחרונה. הערך הזה מבוסס על זמן היצירה מנתוני ההקשר של AD.
פעולות חשודות
- יצירת חשבונות מוגזמת לפי מכשיר: ישות מכשיר יצרה כמה חשבונות משתמשים חדשים.
- מספר מוגזם של התראות לפי משתמש: דווח על מספר גדול של התראות אבטחה ממכשיר אנטי-וירוס או ממכשיר נקודת קצה (לדוגמה, החיבור נחסם, זוהתה תוכנה זדונית) לגבי ישות משתמש, והמספר היה גבוה בהרבה מהדפוסים ההיסטוריים.
אלה אירועים שבהם השדה
security_result.actionUDM מוגדר לערךBLOCK.
זיהויים שמבוססים על מניעת אובדן נתונים
- תהליכים חריגים או מוגזמים עם יכולות של זליגת נתונים: פעילות חריגה או מוגזמת בתהליכים שמשויכים ליכולות של זליגת נתונים, כמו תוכנות לרישום הקשות, צילומי מסך וגישה מרחוק. הפעולה הזו משתמשת בהעשרה של מטא-נתונים של קבצים מ-VirusTotal.
הנתונים הנדרשים לניתוח סיכונים עבור קטגוריית UEBA
בקטע הזה מפורטים הנתונים שנדרשים לכל קטגוריה של קבוצת כללים כדי להשיג ביצועים אופטימליים. התכונה 'זיהוי התנהגות חריגה של משתמשים' מיועדת לפעול עם כל מנתחי ברירת המחדל הנתמכים, אבל כדי להפיק ממנה את המרב, מומלץ להשתמש בסוגי הנתונים הספציפיים הבאים. רשימה מלאה של מנתחי ברירת המחדל הנתמכים זמינה במאמר סוגי יומנים ומנתחי ברירת מחדל נתמכים.
אימות
כדי להשתמש באחד מסדרות הכללים האלה, צריך לאסוף נתוני יומן מ-Azure AD Directory Audit (AZURE_AD_AUDIT) או מ-Windows Event (WINEVTLOG).
ב-WINEVTLOG, צריך להגדיר את הגדרות איסוף הנתונים כך שיכללו את Windows Event IDs הבא ביומן האירועים 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).
יחסי תלות בין שדות
בקטע הזה מפורטים המדדים ושדות המאפיינים שבהם נעשה שימוש בכללי UEBA של Google SecOps.
יחסי תלות בין מדדים
בטבלה הבאה מפורטים המדדים ושאילתות החיפוש התואמות ב-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 |
| גיבוב הקובץ הראשי | 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 |
שינוי ההגדרות של ההתראות שמוחזרות על ידי קבוצות הכללים בקטגוריה הזו
אפשר לצמצם את מספר הזיהויים שכלל או קבוצת כללים יוצרים באמצעות החרגות של כללים.
החרגת כלל מגדירה את הקריטריונים שמשמשים להחרגת אירוע מהערכה על ידי קבוצת הכללים או על ידי כללים ספציפיים בקבוצת הכללים. כדי לצמצם את נפח הזיהויים, יוצרים החרגות של כללים. הסבר איך לעשות זאת מופיע במאמר בנושא הגדרת החרגות של כללים.
דוגמה לכלל של ניתוח סיכונים לקטגוריית 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.