שילוב קובץ CSV עם Google SecOps

במאמר הזה מוסבר איך לשלב CSV עם Google Security Operations.

במאמר הזה מוסבר איך לשלב קובץ CSV עם Google Security Operations.

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

ב-Google SecOps, השילוב של CSV תומך בתרחישי השימוש הבאים:

  • איתור איומים מבוסס-קובץ: חיפוש מהיר בקובצי יומן CSV מקומיים או מרוחקים של מחרוזות ספציפיות או ישויות זדוניות, כדי לזהות איומים שתועדו בעבר.

  • יצירת התראות אוטומטית: המערכת קולטת באופן אוטומטי רשומות ממערכות מדור קודם שמפיקות נתונים בפורמט CSV, וממירה אותן להתראות שניתן לפעול לפיהן עם מיפוי חומרת התראות בהתאמה אישית.

  • ניוד נתונים ודיווח: אפשר להמיר באופן אוטומטי תוצאות JSON מפעולות אחרות ב-Playbook לפורמט CSV, כדי לייצא אותן בקלות לכלי דיווח חיצוניים או לאחסון מקומי.

  • העשרה אוטומטית של ישויות: אפשר להשתמש בקובצי CSV כמקור מקומי למודיעין איומים כדי להעשיר ישויות באופן אוטומטי ולסמן אותן כחשודות במהלך הפעלת פלייבוק.

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

לפני שמתחילים

לפני שמגדירים את השילוב ב-Google SecOps, צריך לוודא שיש לכם את הדברים הבאים:

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

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

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

השילוב של CSV מחייב את הפרמטרים הבאים:

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

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

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

פעולות

מידע נוסף על פעולות זמין במאמרים איך מגיבים לפעולות שממתינות לאישור ב-Your Workdesk ואיך מבצעים פעולה ידנית.

שמירת JSON כ-CSV

שמירה של אובייקט JSON כקובץ CSV.

פרמטרים

שם הפרמטר סוג ערך ברירת המחדל חובה תיאור
אובייקט JSON JSON לא רלוונטי כן מציינים את אובייקט ה-JSON שרוצים לשמור כקובץ CSV.
החלפה בוליאני לא נכון לא אם האפשרות הזו מופעלת, הפעולה מחליפה את הקובץ הקיים.
נתיב הקובץ String לא רלוונטי כן מציינת את הנתיב המוחלט לקובץ ה-CSV שנוצר. אם מספקים רק את שם הקובץ, הפעולה שומרת את הקובץ בתיקייה /tmp/.

ריצה

לא רלוונטי

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

תוצאת סקריפט
שם התוצאה של הסקריפט ערך
is_success נכון/לא נכון
תוצאה בפורמט JSON
{"filepath": "{file name}"}
Case Wall

הפעולה מספקת את הודעות הפלט הבאות:

הודעת פלט תיאור ההודעה
אובייקט ה-JSON הומר ונשמר בנתיב הקובץ שצוין. הפעולה הושלמה בהצלחה.
הקובץ לא נמצא בנתיב שצוין. הקובץ לא קיים.
לא נמצאה פעילות בחשבונות השירות שצוינו ב- Google Cloud כלים לבקרת מדיניות הפעולה לא הצליחה למצוא נתונים לגבי אף אחד מחשבונות השירות שמופיעים ברשימה.
Error executing action "Save JSON To CSV".

הפעולה החזירה שגיאה.

צריך לבדוק את החיבור לשרת, את פרמטרי הקלט או את פרטי הכניסה.

חיפוש לפי מחרוזת

חיפוש מחרוזות בקובצי CSV.

פרמטרים

שם הפרמטר סוג ערך ברירת המחדל חובה תיאור
נתיב CSV String לא רלוונטי כן מציינים את נתיב הקובץ של קובץ ה-CSV או את נתיב התיקייה שמכילה את כל קובצי ה-CSV. אם מציינים תיקייה, הפעולה תתבצע על כל קובצי ה-CSV בתיקייה.
עמודה בקובץ CSV String לא רלוונטי לא מציינים רשימה מופרדת בפסיקים של עמודות שיכולות להכיל פרטי ישות. אם לא מציינים עמודה, הפעולה תחפש בכל העמודות.
ימים אחורה String 10 לא מציינים כמה ימים אחורה לעבד את קובצי ה-CSV.
ערך החיפוש String לא רלוונטי לא מציינים מחרוזת שצריך לחפש. אם האפשרות 'חיפוש של כמה מחרוזות' מופעלת, הפרמטר הזה מטופל כרשימה של מחרוזות שמופרדות באמצעות פסיקים, שצריך לחפש.
החזרת השורה הראשונה בלבד. תיבת סימון התיבה לא מסומנת לא אם האפשרות הזו מופעלת, הפעולה תחזיר רק שורה אחת בקובץ הראשון שתואם לישות.
סוגי קידוד של קבצים String utf-8, latin-1, iso-8859-1 כן רשימה של סוגי קידוד CSV מופרדים בפסיקים שמשמשים לפענוח קובצי ה-CSV, למשל: utf-8, ‏ latin-1, ‏ iso-8859-1, ‏ utf-16... הסדר שבו מציינים את סוגי הקידוד קובע את הסדר שבו הם ישמשו לפענוח קבצים, למשל (מהדוגמה שלמעלה): ל-utf-8 יש את העדיפות הכי גבוהה והוא ישמש בעיקר לפענוח כל הקבצים. אם יש קובץ CSV שמשתמש בקידוד אחר, אז ישמש הקידוד הבא בסדר: latin-1, וכן הלאה, עד שימוש בקידוד האחרון.
חיפוש של כמה מחרוזות תיבת סימון התיבה לא מסומנת לא אם האפשרות הזו מופעלת, 'ערך החיפוש' יפעל כרשימה של ערכים שמופרדים בפסיקים, במקום כמחרוזת יחידה.
שדות להחזרה CSV לא רלוונטי לא מציינים רשימה של ערכים שמופרדים בפסיקים שצריך להחזיר.

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

חיפוש מחרוזות בקובצי CSV.

ריצה

הפעולה הזו מופעלת על כל הישויות.

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

תוצאת סקריפט
שם תוצאת התסריט אפשרויות ערך דוגמה
count_rows_csv כל מספר של שורות count_rows += 1
תוצאה בפורמט JSON
[
    {
        "EntityResult": {
            "Field2": "Value2",
            "Field3": "Value3",
            "Field1": "Value1",
            "Field4": "Value4",
            "Field5": "Value5"
        },
        "Entity": "host"
    }, {
        "EntityResult": {
            "Field2": "Value2",
            "Field3": "Value3",
            "Field1": "Value1",
            "Field4": "Value4",
            "Field5": "Value5"
        }, "Entity": "1.1.1.1"
    }
]
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

לרשומות שנמצאו: "Successfully found information about the following strings: \n (search_string)"

אם לא נמצאו רשומות עבור חלק מהמחרוזות: "לא נמצא מידע על המחרוזות הבאות:"

אם אין הצלחה לכל הרשומות:לא נמצא מידע על הפריטים שצוינו.

אם כל הקידודים לא תקינים: "שגיאה בהפעלת הפעולה 'חיפוש CSV לפי מחרוזת'. הקידודים שצוינו לא תקינים. כדאי לבדוק את האיות".

כללי

חיפוש לפי ישות

חיפוש ישויות בקובצי CSV והוספת מידע עליהן.

פרמטרים

שם הפרמטר סוג ערך ברירת המחדל חובה תיאור
נתיב CSV String לא רלוונטי כן מציינים את נתיב הקובץ של קובץ ה-CSV או את נתיב התיקייה שמכילה את כל קובצי ה-CSV. אם מציינים תיקייה, הפעולה תתבצע על כל קובצי ה-CSV בתיקייה.
עמודה בקובץ CSV String לא רלוונטי כן מציינים רשימה מופרדת בפסיקים של עמודות שיכולות להכיל פרטי ישות. אם לא מציינים עמודה, הפעולה תחפש בכל העמודות.
ימים אחורה String 10 כן מציינים כמה ימים אחורה לעבד את קובצי ה-CSV.
סימון כ'חשוד' תיבת סימון התיבה לא מסומנת לא אם האפשרות הזו מופעלת, הפעולה תסמן את הישות כחשודה אם היא נמצאה בקובץ.
החזרת השורה הראשונה בלבד. תיבת סימון התיבה לא מסומנת לא אם האפשרות הזו מופעלת, הפעולה תחזיר רק שורה אחת בקובץ הראשון שתואם לישות.
סוגי קידוד של קבצים String utf-8, latin-1, iso-8859-1 כן רשימה של סוגי קידוד CSV מופרדים בפסיקים שמשמשים לפענוח קובצי ה-CSV, למשל: utf-8, ‏ latin-1, ‏ iso-8859-1, ‏ utf-16... הסדר שבו מציינים את סוגי הקידוד קובע את הסדר שבו הם ישמשו לפענוח קבצים, למשל (מהדוגמה שלמעלה): ל-utf-8 יש את העדיפות הכי גבוהה והוא ישמש בעיקר לפענוח כל הקבצים. אם יש קובץ CSV שמשתמש בקידוד אחר, אז ישמש הקידוד הבא בסדר: latin-1, וכן הלאה, עד שימוש בקידוד האחרון.
העשרת ישויות תיבת סימון סימן אישור לא אם האפשרות הזו מופעלת, הפעולה תוסיף מידע מקובץ ה-CSV לטבלת ההעשרה של הישות.
יצירת תובנה תיבת סימון סימן אישור לא אם האפשרות הזו מופעלת, תובנה תיווצר אם הישות נמצאה בקובץ.
שדות להחזרה CSV לא רלוונטי לא מציינים רשימה של ערכים שמופרדים בפסיקים שצריך להחזיר.

ריצה

הפעולה הזו מופעלת על כל הישויות.

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

תוצאת סקריפט
שם תוצאת התסריט אפשרויות ערך דוגמה
count_rows_csv כל מספר של שורות count_rows += 1
תוצאה בפורמט JSON
[
    {
        "EntityResult": [{
            "domain": "example.dom",
            "fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
            "reporter": "Symantec Antivirus",
            "app": "Arcsight",
            "id": "1011",
            "eventTime": "9/4/2017 10:00",
            "antivirusAction": "blocked",
            "virusName": "ECAT",
            "rule": "malicious",
            "eventName": "Virus detected",
            "User": "Ziv",
            "eventHostName": "WS-ZivDevComp",
            "File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
            "machineAddress": "192.168.11.11"
        }, {
            "domain": "SmartCompany.dom",
            "fileHash": "cbbc5aea3d4c7ec193aa2ff3b52df36ebb12338b18c9bb53fc4896115efaf78d",
            "reporter": "Symantec Antivirus",
            "app": "ESM",
            "id": "1012",
            "eventTime": "9/4/2017 10:00",
            "antivirusAction": "allowed",
            "virusName": "ECAT",
            "rule": "malicious",
            "eventName": "Virus detected",
            "User": "GG",
            "eventHostName": "WS-GGDevComp",
            "File Source Path": "C:\\\\Users\\\\Default\\\\Desktop\\\\stringTimeRaw.csv",
            "machineAddress": "192.168.11.11"
        }],
        "Entity": "192.168.11.11"
    }
]
Case Wall
סוג התוצאה ערך / תיאור סוג
הודעת פלט*

לגבי ישויות שנמצאו: "נמצאו פרטים על הישויות הבאות: \n (entity.identifier)"

לגבי ישויות שלא נמצאו: "לא נמצא מידע על הישויות הבאות: \n (entity.identifier)"

אם אין הצלחה לגבי אף אחת מהישויות: "לא נמצא מידע לגבי הישויות שצוינו".

אם כל הקידודים לא תקינים: "שגיאה בהפעלת הפעולה 'חיפוש CSV לפי מחרוזת'. הקידודים שצוינו לא תקינים. כדאי לבדוק את האיות".

כללי

פינג

בדיקת הקישוריות.

פרמטרים

לא רלוונטי

ריצה

הפעולה הזו מופעלת על כל הישויות.

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

תוצאת סקריפט

לא רלוונטי

תוצאה בפורמט JSON
N/A

מחברים

מחבר CSV

תמשוך נתונים מקובצי CSV שנמצאים בתיקייה ספציפית, ותמיר את הנתונים האלה להתראות במערכת Google SecOps.

בנושא הזה מוסבר על המנגנון וההגדרה שבאמצעותם Google SecOps יוצר קובצי CSV, וגם על תהליכי העבודה הנתמכים ועל הפעולות שמתבצעות בפלטפורמה.

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

ללקוח יש קובצי CSV שמגיעים ממערכת, והקובצים יכולים להיות בקידודים שונים.

*   Add support for comma-separated encodings in the Encoding field in the
    connector.
    *   The connector should try the different encodings by their order in
        the field (first encoding - highest priority, last - lowest
        priority) with try/except. If no matching encoding was found -
        consider the file as an error and notify.
    *   Put a default value for the fields - a list of most common CSV
        encodings by priority (utf8, latin1, and iso...)

גישה לקובצי CSV

גישת Google SecOps לקובצי CSV: מגדירים תיקייה לקובצי ה-CSV.

העברת רשומות CSV אל Google SecOps

עבודה עם רשומות בקובצי CSV

כשמגדירים את Google SecOps לעבודה עם קובצי CSV כמקור התראות, תתבקשו לציין תיקייה ספציפית שממנה יאוחזרו קובצי ה-CSV. ‫Google SecOps יאחזר כל רשומה בקובץ CSV ויעביר אותה לתרגום, ויספק הקשר כהתראות למקרים.

איך ממפים את רמת החומרה במחבר

כדי למפות את חומרת הבעיה, צריך לציין באיזה שדה להשתמש כדי לקבל את הערך של חומרת הבעיה בפרמטר Severity Field Name (שם השדה של חומרת הבעיה). בתגובה אפשר לקבל 3 סוגים של ערכים: מספרים שלמים, מספרים עשרוניים ומחרוזות. למספרים שלמים ולמספרים עשרוניים, לא צריך לבצע הגדרה נוספת. המחבר יקרא את הערכים האלה וימפה אותם בהתאם לתקנים של Google SecOps. תזכורת קצרה לגבי המיפוי של ערכים מספריים שלמים:

  • ‫100 – קריטית
  • ‫100 > x >= 80 גבוה
  • ‫80 > x >=60 בינוני
  • ‫60 > x >=40 נמוך
  • ‫40 > x לצורך מידע

אם בתגובה אנחנו עובדים עם מחרוזות, נדרשת הגדרה נוספת. בתיקייה שבה נמצאים סקריפטים של מחברים, יהיה קובץ הגדרה בשם severity_map_config.json. הקובץ הזה מגדיר כללי מיפוי לחומרה.

בתחילה, הקובץ ייראה כך: 1 2 3 { "Default": 50 }

נניח שהערכים הנדרשים נמצאים ב-event.severity. הערכים האפשריים של event.severity הם: Malicious,‏ Benign ו-Unknown.

קודם צריך לציין בפרמטר 'שם שדה חומרת האירוע' שנשתמש ב-event.severity. בשלב השני, צריך לעדכן את קובץ ההגדרות. אחרי השינויים, קובץ severity_map_config.json צריך להיראות כך: 1 2 3 4 5 6 7 8 { "event.severity": { "Malicious": 100, "Unknown": 60, "Benign": -1 }, "Default": 50 }

עכשיו, כשהמחבר יקבל אירוע עם event.severity = "Malicious", הוא יקצה לו חומרה קריטית.

הגדרת מחבר CSV ב-Google SecOps

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

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

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

שם הפרמטר סוג ערך ברירת המחדל חובה תיאור
שם שדה המוצר String device_product כן שם השדה שמשמש לקביעת מוצר המכשיר.
שם השדה של האירוע String name לא שם השדה שמשמש לקביעת שם האירוע (סוג משנה).
זמן קצוב לסקריפט (בשניות) String 60 כן מגבלת הזמן הקצוב לתפוגה (בשניות) לתהליך Python שמריץ את הסקריפט הנוכחי.
נתיב תיקיית CSV String לא רלוונטי כן נתיב התיקייה שמכילה את כל קובצי ה-CSV שצריך להטמיע.
מגבלת CSV String לא רלוונטי לא כמה קובצי CSV לעבד בכל איטרציה.
שם השדה במחולל הכללים String לא רלוונטי לא שם השדה שמכיל מידע על יוצר הכלל.
שם שדה הזמן String לא רלוונטי לא שם השדה שמכיל מידע על זמן האירוע.
לקובץ ה-CSV יש כותרת תיבת סימון סימן אישור כן מציין אם קובץ ה-CSV כולל כותרת.
סוג קידוד הקובץ String utf-8 כן מגדירים את סוג הקידוד של קובץ ה-CSV, למשל iso-8859-1, ‏ latin1, ‏ utf-8, ‏ utf-16.
שם שדה ההתראה String לא רלוונטי לא שם השדה שמכיל מידע על שם ההתראה.
שם שדה החומרה String לא רלוונטי לא

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

כללים של מחברים

תמיכה בשרת proxy

המחבר לא תומך ב-Proxy.

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