Vectra

במאמר הזה מוסבר איך לשלב את Vectra עם Google SecOps.

תרחישים לדוגמה

  1. להטמיע זיהויים של Vectra כדי ליצור התראות ב-Google Security Operations. בשלב הבא, אפשר להשתמש בהתראות ב-Google SecOps כדי לבצע תזמורים באמצעות פלייבוקים או ניתוח ידני.
  2. ביצוע פעולות העשרה – קבלת נתונים מ-Vectra כדי להעשיר את הנתונים בהתראות של Google SecOps.

הרשאת מוצר

כדי לקבל אסימון API, צריך לעבור לדף הפרופיל ולהעתיק אותו.

מיקום טוקן ה-API

הגדרת השילוב של Vectra ב-Google SecOps

איך מגדירים שילובים ב-Google SecOps

פרמטרים של שילוב

כדי להגדיר את השילוב, משתמשים בפרמטרים הבאים:

שם הפרמטר לתצוגה סוג ערך ברירת המחדל חובה תיאור
שם המכונה String לא רלוונטי לא שם המכונה שרוצים להגדיר לה את השילוב.
תיאור String לא רלוונטי לא תיאור המכונה.
הרמה הבסיסית (root) של ה-API String https://{address}:{port} כן שורש ה-API של שרת Vectra.
טוקן API סיסמה לא רלוונטי כן טוקן ה-API של חשבון Vectra.
אימות SSL תיבת סימון סימן אישור כן אם ההגדרה מופעלת, צריך לוודא שאישור ה-SSL של החיבור לשרת Vectra תקף.
הפעלה מרחוק תיבת סימון התיבה לא מסומנת לא מסמנים את התיבה כדי להפעיל את השילוב שהוגדר מרחוק. אחרי שמסמנים את התיבה, מופיעה האפשרות לבחור את המשתמש המרוחק (הנציג).

פעולות

פינג

תיאור

בודקים את הקישוריות ל-Vectra באמצעות הפרמטרים שצוינו בדף הגדרת השילוב בדף Google SecOps Content Hub.

ריצה

הפעולה לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
קיר נרתיקים
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההרצה של הפלייבוק:

אם התהליך הצליח:

הדפסת ההודעה "Successfully connected to the Vectra server with the provided connection parameters!‎"

הפעולה אמורה להיכשל ולעצור את ההפעלה של הפלייבוק:
אם התגובה נכשלה:

הדפסה של "החיבור לשרת Vectra נכשל! השגיאה היא {0}".format(exception.stacktrace)

כללי

נקודת קצה (endpoint) להעשרה

תיאור

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

ריצה

הפעולה הזו פועלת על הישויות הבאות:

  • כתובת IP
  • שם המארח

תוצאות הפעולה

העשרת ישויות
שם שדה ההעשרה מקור (מפתח JSON) לוגיקה – מתי להחיל
Vectra_id results/id כשהוא זמין ב-JSON
Vectra_name results/name כשהוא זמין ב-JSON
Vectra_state results/state כשהוא זמין ב-JSON
Vectra_threat results/threat כשהוא זמין ב-JSON
Vectra_certainty תוצאות/ודאות כשהוא זמין ב-JSON
Vectra_ip results/last_source כשהוא זמין ב-JSON
Vectra_tags {results/tags} מופרדים ברווחים כשהוא זמין ב-JSON
Vectra_note תוצאות/הערה כשהוא זמין ב-JSON
Vectra_url results/url כשהוא זמין ב-JSON
Vectra_last_modified results/last_modified כשהוא זמין ב-JSON
Vectra_groups {results/groups} מופרדים ברווחים כשהוא זמין ב-JSON
Vectra_is_key_asset results/is_key_asset כשהוא זמין ב-JSON
Vectra_has_active_traffic results/has_active_traffic כשהוא זמין ב-JSON
Vectra_is_targeting_key_asset results/is_targeting_key_asset כשהוא זמין ב-JSON
Vectra_privilege_level results/privilege_level כשהוא זמין ב-JSON
Vectra_previous_ip ‫{results/previous_ips} מופרדים ברווחים כשהוא זמין ב-JSON
תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
תוצאת JSON
{
            "id": 131,
            "name": "DESKTOP-DAIOS7J",
            "active_traffic": false,
            "has_active_traffic": false,
            "t_score": 0,
            "threat": 0,
            "c_score": 0,
            "certainty": 0,
            "severity": null,
            "last_source": "10.0.2.68",
            "ip": "10.0.2.68",
            "previous_ips": [],
            "last_detection_timestamp": "2019-10-08T17:13:57Z",
            "key_asset": false,
            "is_key_asset": false,
            "state": "inactive",
            "targets_key_asset": false,
            "is_targeting_key_asset": false,
            "detection_set": [],
            "host_artifact_set": [
                {
                    "type": "netbios",
                    "value": "DESKTOP-DAIOS7J",
                    "source": null,
                    "siem": false
                }
            ],
            "sensor": "YLq09aHU",
            "sensor_name": "Vectra X",
            "tags": [],
            "note": null,
            "note_modified_by": null,
            "note_modified_timestamp": null,
            "url": "https://70.54.200.216:64443/api/v2.1/hosts/131",
            "host_url": "https://70.54.200.216:64443/api/v2.1/hosts/131",
            "last_modified": "2020-02-12T13:41:51Z",
            "assigned_to": null,
            "assigned_date": null,
            "groups": [],
            "has_custom_model": false,
            "privilege_level": null,
            "privilege_category": null,
            "probable_owner": null,
            "detection_profile": null,
            "host_session_luids": [],
            "host_luid": "e0M-jygN"
}
קיר נרתיקים
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

אם הבקשה הצליחה ולפחות אחת מהישויות שסופקו הועשרה (is_success = true):

Print "Successfully enriched the following endpoints from Vectra: \n {0}".format(entity.identifier list)

אם הפעולה מצאה כמה התאמות ב-Vectra לישויות מסוימות ב-Google SecOps, ההתאמה הראשונה נלקחה כדי להעשיר את נקודת הקצה:

הדפסה "נמצאו כמה התאמות ב-Vectra, ההתאמה הראשונה נבחרה עבור הישויות הבאות:/n {0}".format(entity.identifiers list)

אם לא הצלחתי להעשיר ישויות ספציפיות(is_success = true):

הדפסת ההודעה "No entities were enriched" (לא הועשרו ישויות).

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

הדפסת ההודעה "Error executing action "Enrich Endpoint".‎ הסיבה: {0}''.format(error.Stacktrace)

כללי

הוספת תגים

תיאור

מוסיפים תגים לנקודת הקצה או לזיהוי ב-Vectra.

פרמטרים

שם הפרמטר לתצוגה סוג ערך ברירת המחדל חובה תיאור
סוג פריט תפריט נפתח

נקודת קצה (endpoint)

ערכים אפשריים:
נקודת קצה (endpoint)

זיהוי

כן בוחרים לאיזה סוג פריט רוצים להוסיף תגים.
מזהה פריט String לא רלוונטי כן מציינים את המזהה של הזיהוי או של נקודת הקצה.
תגים CSV לא רלוונטי כן מציינים אילו תגים רוצים להוסיף לזיהוי או לנקודת הקצה. צריך להפריד בין התגים באמצעות פסיק, לדוגמה: תג1, תג2.

ריצה

הפעולה הזו לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
קיר נרתיקים
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

אם נמצא זיהוי או נקודת קצה והתגים עודכנו בהצלחה (is_success = true):

Print "Successfully added tags {0} to {1} with ID {2}.format(tags, Item Type, Item ID)

אם נמצא זיהוי או נקודת קצה, אבל לא נוספו תגים (is_success=False):

הדפסה "הפעולה לא הצליחה להוסיף את התגים {0} אל {1} עם המזהה {2}. הסיבה: {3}. format(tags, סוג פריט, מזהה פריט, tags parameter from response)".

אם לא נמצא זיהוי או נקודת קצה (is_success=False):

הדפסה של "{0} עם מזהה {1} לא נמצאה.format(סוג פריט, מזהה פריט)"

‫II is_success=false בלי מצב ספציפי, וזו לא שגיאה קריטית:

הדפסת "הפעולה לא הצליחה להוסיף תגים אל {0} עם המזהה {1}.format(Item Type, Item ID)":

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

הדפסת ההודעה "שגיאה בביצוע הפעולה 'הוספת תגים'". הסיבה: {0}''.format(error.Stacktrace)

כללי

הסרת תגים

תיאור

מסירים את התגים מנקודת הקצה או מהזיהוי ב-Vectra.

פרמטרים

שם הפרמטר לתצוגה סוג ערך ברירת המחדל חובה תיאור
סוג פריט תפריט נפתח

נקודת קצה (endpoint)

ערכים אפשריים:
נקודת קצה (endpoint)

זיהוי

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

ריצה

הפעולה הזו לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
קיר נרתיקים
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

אם נמצא זיהוי או נקודת קצה והתגים עודכנו בהצלחה (is_success = true):

הדפסה של "התגים {0} הוסרו בהצלחה מ-{1} עם המזהה {2}.format(tags, Item Type, Item ID)

אם הזיהוי או נקודת הקצה לא נמצאו (is_success=False):

Print "{0} with ID {1} was not found.".format(Item Type, Item ID)."

אם נמצא זיהוי/נקודת קצה, אבל לא נמצא תג (is_success=False):

הדפסה של "Tags {0} don't exist in {1} with ID {2}.".format(list of tags that were not found separated by comma, Item Type, Item ID)."

אם is_success=false בלי מצב ספציפי וזו לא שגיאה קריטית:

מדפיסים את ההודעה "Action wasn't able to remove tags from {0} with ID {1}.format(Item Type, Item ID)":

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

הדפסת ההודעה "Error executing action "Remove Tags".‎ הסיבה: {0}''.format(error.Stacktrace)

כללי

עדכון הפתק

תיאור

עדכון הערה לגבי נקודת הקצה או הזיהוי.

פרמטרים

שם הפרמטר לתצוגה סוג ערך ברירת המחדל חובה תיאור
סוג פריט תפריט נפתח

נקודת קצה (endpoint)

ערכים אפשריים:
נקודת קצה (endpoint)

זיהוי

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

ריצה

הפעולה הזו לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
קיר נרתיקים
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

אם הזיהוי או נקודת הקצה נמצאו וההערה עודכנה בהצלחה (is_success = true):

הדפסת ההודעה "Successfully updated note on {1} with ID {2}.format(Item Type, Item ID)

אם הזיהוי או נקודת הקצה לא נמצאו (is_success=False):

Print "{0} with ID {1} was not found.".format(Item Type, Item ID)."

אם is_success=false בלי מצב ספציפי וזו לא שגיאה קריטית:

הדפסת "הפעולה לא הצליחה לעדכן את ההערה ב-{0} עם המזהה {1}.format(סוג פריט, מזהה פריט)":

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

הדפסת ההודעה "שגיאה בהפעלת הפעולה 'עדכון הפתק'". הסיבה: {0}''.format(error.Stacktrace)

כללי

עדכון סטטוס הזיהוי

תיאור

עדכון הסטטוס של הזיהוי.

פרמטרים

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

תוקן

ערכים אפשריים:

טופלה

פעיל

כן מציינים איזה סטטוס להגדיר לזיהוי.

ריצה

הפעולה הזו לא פועלת על ישויות.

תוצאות הפעולה

תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
קיר נרתיקים
סוג התוצאה ערך / תיאור סוג
הודעת פלט\*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

אם נמצא זיהוי והסטטוס עודכן בהצלחה (is_success = true):

Print "Successfully updated status to '{0}' on detection with ID {1}.format(Status, Detection ID)

אם לא נמצא זיהוי (is_success=False):

Print "Detection with ID {1} was not found.".format(Detection ID)."‎

אם is_success=false בלי מצב ספציפי וזו לא שגיאה קריטית:

מדפיסים את ההודעה "Action wasn't able to update status on detection with ID {1}.format(detection ID)":

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

הדפסת ההודעה "Error executing action "Update Detection Status"‎. הסיבה: {0}''.format(error.Stacktrace)

כללי

קבלת פרטים על כלל המיון

תיאור

מידע מפורט על כללי המיון.

פרמטרים

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

ריצה

הפעולה הזו לא פועלת על ישויות.

תוצאות הפעולה

תובנה
כותרת התובנה תיאור התובנה
"Triage Rule {0}".format(triage_rule) "Detection Category: {0}\n Triage Category: {1}\n Detection: {2} \n Description: {3}".format(detection_category, triage_category, detection, description)
תוצאת הסקריפט
שם תוצאת הסקריפט אפשרויות של ערכים דוגמה
is_success נכון/לא נכון is_success:False
תוצאת JSON
{
    "id": 28,
    "url": "https://api.demo.vectranetworks.com/api/v2.1/rules/28",
    "description": "whatever",
    "enabled": true,
    "created_timestamp": "2020-10-01T17:21:19Z",
    "last_timestamp": "2020-10-01T17:21:19Z",
    "is_whitelist": false,
    "priority": 1,
    "active_detections": 1,
    "total_detections": 1,
    "template": false,
    "additional_conditions": {
        "OR": [
            {
                "AND": [
                    {
                        "ANY_OF": {
                            "field": "remote1_ip",
                            "values": [
                                {
                                    "url": null,
                                    "value": "35.166.75.118",
                                    "label": "35.166.75.118"
                                }
                            ],
                            "groups": [],
                            "label": "C&C Server IP"
                        }
                    }
                ]
            }
        ]
    },
    "source_conditions": {
        "OR": [
            {
                "AND": [
                    {
                        "ANY_OF": {
                            "field": "host",
                            "values": [
                                {
                                    "url": "https://api.demo.vectranetworks.com/api/v2.1/hosts/142",
                                    "value": 142,
                                    "label": "IP-10.10.100.10"
                                }
                            ],
                            "groups": [],
                            "label": "Host"
                        }
                    }
                ]
            }
        ]
    },
    "detection_category": "COMMAND & CONTROL",
    "triage_category": "triage rule 1",
    "detection": "Hidden HTTPS Tunnel"
קיר נרתיקים
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

הפעולה לא אמורה להיכשל או להפסיק את ההפעלה של הפלייבוק:

אם הפעולה הצליחה ולפחות אחד ממזהי הכללים שסופקו הועשר (is_success = true):

Print "Successfully retrieved information about the following triage rules from Vectra: \n {0}".format(processed rule ids)

אם העשרת ישויות ספציפיות נכשלה(is_success = true):

Print "Action was not able to retrieve information about the following triage rules\n: {0}".format(not processed rule ids)

אם ההעשרה נכשלה בכל הישויות (is_success = false):

מדפיסים את ההודעה "לא אוחזר מידע על כללי המיון".

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

הדפסת ההודעה "שגיאה בהפעלת הפעולה 'קבלת פרטים של כלל המיון'". הסיבה: {0}''.format(error.Stacktrace)

כללי
שולחן קיר עם ארונית

שם הטבלה: פרטי כללי המיון

עמודות בטבלה:

מזהה (ממופה בתור id)

מופעל (ממופה כמופעל)

קטגוריית זיהוי (ממופה בתור detection_category)

קטגוריית מיון (ממופה כ-triage_category)

זיהוי (ממופה כזיהוי)

רשימת היתרים (ממופה כ-is_whitelist)

עדיפות (ממופה כעדיפות)

נוצר בתאריך (ממופה כ-created_timestamp)

כללי

מחברים

‫Vectra – מחבר זיהויים

הגדרת Vectra – מחבר זיהויים ב-Google SecOps

הוראות מפורטות להגדרת מחבר ב-Google SecOps מופיעות במאמר הגדרת המחבר.

פרמטרים של מחברים

כדי להגדיר את המחבר, משתמשים בפרמטרים הבאים:

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

שם השדה של הסביבה

String "" לא

מתאר את שם השדה שבו מאוחסן שם הסביבה.

אם שדה הסביבה לא נמצא, הסביבה היא סביבת ברירת המחדל.

תבנית ביטוי רגולרי של סביבה

String .* לא

תבנית של ביטוי רגולרי להפעלה על הערך שנמצא בשדה "שם השדה של הסביבה".

ברירת המחדל היא .* כדי לכלול את הכול ולהחזיר את הערך ללא שינוי.

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

אם תבנית הביטוי הרגולרי היא null או ריקה, או אם ערך הסביבה הוא null, תוצאת הסביבה הסופית היא סביבת ברירת המחדל.

זמן קצוב לתפוגה של סקריפט (בשניות) מספר שלם 180 כן מגבלת הזמן הקצוב לתהליך Python שמריץ את הסקריפט הנוכחי.
הרמה הבסיסית (root) של ה-API String https://x.x.x.x:x:x כן שורש ה-API של שרת Vectra.
טוקן API סיסמה לא רלוונטי כן טוקן ה-API של חשבון Vectra.
ציון האיום הנמוך ביותר לאחזור מספר שלם 50 כן

ציון האיום הנמוך ביותר שישמש לאחזור זיהויים.

מינימום: 0

מקסימום: 100

ציון הוודאות הנמוך ביותר לאחזור מספר שלם 0 לא

ציון הוודאות הנמוך ביותר שישמש לאחזור זיהויים.

מינימום: 0

מקסימום: 100

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

מציינים אילו קטגוריות של זיהויים להטמיע ב-Google SecOps.

ערכים אפשריים:

פקודות ואמצעי בקרה

Botnet

שלב איסוף המידע

תנועה רוחבית

זליגת נתונים

מידע

אחזור שעות מקסימליות אחורה מספר שלם 1 לא מספר השעות שמהן צריך לאחזר איומים.
מספר הזיהויים המקסימלי לאחזור מספר שלם 25 לא כמה זיהויים לעבד בכל איטרציה של מחבר. המגבלה היא 5,000. זו מגבלה של Vectra.
שימוש ברשימת ההיתרים כרשימת חסימה תיבת סימון התיבה לא מסומנת כן אם המדיניות מופעלת, רשימת ההיתרים תשמש כרשימת חסימה.
אימות SSL תיבת סימון סימן אישור כן אם ההגדרה מופעלת, צריך לוודא שאישור ה-SSL של החיבור לשרת Vectra תקף.
כתובת שרת ה-Proxy String לא רלוונטי לא הכתובת של שרת ה-Proxy שבו רוצים להשתמש.
שם המשתמש בשרת ה-proxy String לא רלוונטי לא שם המשתמש של שרת ה-proxy לאימות.
סיסמת שרת ה-Proxy סיסמה לא רלוונטי לא הסיסמה לאימות מול שרת ה-proxy.

כללי מחברים

תמיכה בשרת proxy

המחבר תומך בשרת proxy.

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