שילוב של CSV עם Google SecOps
במאמר הזה מוסבר איך לשלב קובצי CSV עם Google Security Operations.
במאמר הזה מוסבר איך לשלב קובץ CSV עם Google Security Operations.
תרחישים לדוגמה
ב-Google SecOps, השילוב של CSV תומך בתרחישים הבאים:
איתור איומים מבוסס-קובץ: חיפוש מהיר בקובצי יומן CSV מקומיים או מרוחקים של מחרוזות ספציפיות או ישויות זדוניות כדי לזהות איומים שתועדו בעבר.
יצירת התראות אוטומטיות: הטמעה אוטומטית של רשומות ממערכות מדור קודם שמוציאות נתונים בפורמט CSV, והמרה שלהן להתראות שניתן לפעול לפיהן עם מיפוי חומרה בהתאמה אישית.
ניידות נתונים ודיווח: המרת תוצאות JSON מפעולות אחרות של פלייבוק לפורמט CSV באופן פרוגרמטי, כדי לייצא אותן בצורה יעילה לכלי דיווח חיצוניים או לאחסון מקומי.
העשרת ישויות אוטומטית: שימוש בקובצי CSV כמקור מקומי למודיעין איומי סייבר כדי להעשיר ישויות באופן אוטומטי ולסמן אותן כחשודות במהלך הפעלת הפלייבוק.
סנכרון נתונים בין מערכות: עיבוד יעיל של קבצים עם קידודי תווים שונים, כמו פורמטים ישנים של Excel, כדי להבטיח עקביות של הנתונים בכלי אבטחה שונים.
לפני שמתחילים
לפני שאתם מגדירים את השילוב ב-Google SecOps, ודאו שיש לכם את הפרטים הבאים:
יכולות פנימיות של הפלטפורמה: השילוב הזה מספק יכולות מובנות לעיבוד קבצים, ולא דורש מפתחות API חיצוניים של צד שלישי או פרטי כניסה לאימות.
הרשאות למערכת הקבצים: אם משתמשים ב-Remote Agent, צריך הרשאות ספציפיות כדי לגשת לקבצים במערכת המארחת ולנהל אותם. מריצים את הפקודה הבאה במכונה של הנציג כדי לתת את ההרשאות הנדרשות לספריית היעד:
chown scripting:scripting "directory_path"
פרמטרים של שילוב
כדי לשלב קובץ CSV, צריך להגדיר את הפרמטרים הבאים:
| השם המוצג של הפרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| שם המכונה | String | לא רלוונטי | לא | שם המכונה שרוצים להגדיר לה את השילוב. |
| תיאור | String | לא רלוונטי | לא | תיאור המכונה. |
| הפעלה מרחוק | תיבת סימון | התיבה לא מסומנת | לא | מסמנים את השדה כדי להפעיל את השילוב שהוגדר מרחוק. אחרי שמסמנים את התיבה, מופיעה האפשרות לבחור את המשתמש המרוחק (הנציג). |
איך מגדירים שילובים ב-Google SecOps
אם צריך, אפשר לבצע שינויים בשלב מאוחר יותר. אחרי שמגדירים מופע של אינטגרציה, אפשר להשתמש בו בפלייבוקים. במאמר תמיכה במספר מופעים מוסבר איך להגדיר מספר מופעים ולתמוך בהם.
פעולות
מידע נוסף על פעולות זמין במאמרים מענה לפעולות בהמתנה משולחן העבודה והפעלה ידנית של פעולה בבקשת התמיכה.
שמירת קובץ JSON כקובץ CSV
שמירת אובייקט JSON כקובץ CSV.
פרמטרים
| שם הפרמטר | סוג | ערך ברירת המחדל | חובה | תיאור |
|---|---|---|---|---|
| אובייקט JSON | JSON | לא רלוונטי | כן | מציין את אובייקט ה-JSON שרוצים לשמור כ-CSV. |
| החלפה | בוליאני | לא נכון | לא | אם המדיניות מופעלת, הפעולה מחליפה את הקובץ הקיים. |
| נתיב הקובץ | String | לא רלוונטי | כן | מציינת את הנתיב המוחלט לקובץ ה-CSV החדש שנוצר. אם מציינים רק את שם הקובץ, הפעולה שומרת את הקובץ בתיקייה /tmp/. |
ריצה
לא רלוונטי
תוצאות הפעולה
תוצאת הסקריפט
| שם תוצאת הסקריפט | ערך |
|---|---|
| is_success | נכון/לא נכון |
תוצאת JSON
{"filepath": "{file name}"}
קיר תיקים
הפעולה מספקת את הודעות הפלט הבאות:
| הודעת פלט | תיאור ההודעה |
|---|---|
| אובייקט ה-JSON הומר ונשמר בנתיב הקובץ שצוין. | הפעולה בוצעה בהצלחה. |
| הקובץ לא נמצא בנתיב שצוין. | הקובץ לא קיים. |
| לא נמצאה פעילות של חשבונות השירות שצוינו ב- Google Cloud כלים לבקרת מדיניות | הפעולה לא הצליחה למצוא נתונים לאף אחד מחשבונות השירות שברשימה. |
| שגיאה בביצוע הפעולה "שמירת JSON כ-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"
}
]
קיר תיקים
| סוג התוצאה | ערך / תיאור | סוג |
|---|---|---|
| הודעת פלט* | אם נמצאו רשומות: "נמצא מידע על המחרוזות הבאות: \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"
}
]
קיר תיקים
| סוג התוצאה | ערך / תיאור | סוג |
|---|---|---|
| הודעת פלט* | אם נמצאו ישויות: "נמצא מידע על הישויות הבאות: \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 ותעביר אותה לתרגום ולהוספת הקשר כהתראות למקרים.
איך ממפים את רמת החומרה במחבר
כדי למפות את רמת החומרה, צריך לציין באיזה שדה להשתמש כדי לקבל את הערך של רמת החומרה בפרמטר "שם השדה של רמת החומרה". בתגובה אתם יכולים לקבל 3 סוגים של ערכים: מספרים שלמים, מספרים עם נקודה צפה (float) ומחרוזות. למספרים שלמים ולמספרים עם נקודה צפה (float) לא צריך לבצע הגדרות נוספות. המחבר יקרא את הערכים האלה וימפה אותם בהתאם לסטנדרטים של 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".
קודם כל, צריך לציין בפרמטר "Severity Field Name" שנשתמש ב-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", הוא יקצה לו את רמת החומרה Critical.
הגדרת מחבר 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 | לא רלוונטי | לא | שם השדה שמכיל מידע על החומרה. |
כללי מחברים
תמיכה בשרת proxy
המחבר לא תומך בשרת proxy.
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.