ציון סיכון של ישות בכללים

נתמך ב:

במאמר הזה מוסבר איך להשתמש בציוני סיכון של ישויות בכללים. בכללים, ציוני הסיכון של הישות מתנהגים באופן דומה להקשר של הישות. אתם יכולים לכתוב כללי YARA-L 2.0 כדי להשתמש בציוני סיכון כשיטת הזיהוי העיקרית. מידע נוסף על כללים ב-Risk Analytics זמין במאמר יצירת כללים ב-Risk Analytics. מידע נוסף על הקשר מבוסס-סיכון זמין במאמר בנושא יצירת ניתוח נתונים מבוסס-הקשר.

כדי לאחזר את דירוג הסיכון של ישות, מצטרפים לישות עם אירוע UDM ומאחזרים את השדה שצוין מ-EntityRisk.

בדוגמה הבאה מוסבר איך ליצור כלל ליצירת זיהויים בכל שם מארח של ישות שציון הסיכון שלה גדול מ-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 שעות (86,400 שניות) או 7 ימים (604,800 שניות). אם לא מציינים את גודל חלון הסיכון בכלל, הוא מוגדר כברירת מחדל ל-24 שעות או ל-7 ימים.

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

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.