איסוף יומנים של Tanium Threat Response
במאמר הזה מוסבר איך להטמיע יומנים של Tanium Threat Response ב-Google Security Operations באמצעות פונקציית הייצוא המקורית של Tanium Connect ל-AWS S3. Tanium Threat Response יוצר התראות על זיהוי איומים, ממצאי חקירה ונתוני תגובה לאירועים בפורמט JSON, שאפשר לייצא ישירות ל-S3 באמצעות Tanium Connect בלי להשתמש בפונקציות Lambda בהתאמה אישית. הכלי לניתוח נתונים הופך נתוני JSON גולמיים מ-Tanium Threat Response למודל נתונים מאוחד (UDM). הוא מנסה קודם לנתח את ההודעה הנכנסת כ-JSON, מטפל בשגיאות פוטנציאליות, ואז מחלץ וממפה שדות רלוונטיים למבנה UDM, כולל פרטים על המארח, המשתמש, התהליך, פעילות הרשת וממצאי האבטחה שהושפעו.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- Tanium Core Platform גרסה 7.0 ואילך
- מודול Tanium Threat Response מותקן ומוגדר
- מודול Tanium Connect מותקן עם רישיון תקף
- Tanium Direct Connect בגרסה 1.9.30 ואילך לצורך יכולות חקירה
- גישת פריבילגיה ל-Tanium Console עם הרשאות אדמין
- גישת אדמין ל-AWS (S3, IAM)
הגדרת חשבון שירות של Tanium Threat Response
- נכנסים ל-Tanium Console.
- עוברים אל Modules > Threat Response.
- לוחצים על הגדרות בפינה השמאלית העליונה.
- בקטע Service Account (חשבון שירות), מגדירים את האפשרויות הבאות:
- משתמש בחשבון שירות: בוחרים משתמש עם הרשאות מתאימות ל-Threat Response.
- מוודאים שלחשבון יש הרשאה של תפקיד משתמש עם גישת Connect.
- מאשרים גישה להתראות של Threat Response ולנתוני חקירה.
- לוחצים על Save כדי להחיל את ההגדרה של חשבון השירות.
איסוף דרישות מוקדמות של Tanium Threat Response
- נכנסים ל-Tanium Console כאדמינים.
- עוברים אל ניהול > הרשאות > משתמשים.
- יוצרים או מאתרים משתמש בחשבון שירות עם התפקידים הבאים:
- תפקיד אדמין של תגובה לאיומים או משתמש עם הרשאת קריאה בלבד של תגובה לאיומים.
- הרשאת התפקיד Connect User.
- גישה לקבוצות מחשבים שנמצאות במעקב (מומלץ: קבוצת כל המחשבים).
- הרשאה Read Saved Question עבור ערכות תוכן של Threat Response.
הגדרה של קטגוריית AWS S3 ו-IAM ל-Google SecOps
- יוצרים קטגוריה ב-Amazon S3 לפי מדריך המשתמש הזה: יצירת קטגוריה
- שומרים את השם של ה-bucket ואת האזור לעיון בעתיד (לדוגמה,
tanium-threat-response-logs). - יוצרים משתמש לפי מדריך המשתמש הזה: יצירת משתמש IAM.
- בוחרים את המשתמש שנוצר.
- לוחצים על הכרטיסייה פרטי כניסה לאבטחה.
- בקטע מפתחות גישה, לוחצים על יצירת מפתח גישה.
- בוחרים באפשרות שירות של צד שלישי בתור תרחיש השימוש.
- לוחצים על הבא.
- אופציונלי: מוסיפים תג תיאור.
- לוחצים על Create access key (יצירת מפתח גישה).
- לוחצים על הורדת קובץ CSV כדי לשמור את מפתח הגישה ואת מפתח הגישה הסודי לשימוש מאוחר יותר.
- לוחצים על סיום.
- לוחצים על הכרטיסייה Permissions (הרשאות).
- בקטע Permissions policies, לוחצים על Add permissions.
- לוחצים על הוספת הרשאות.
- בוחרים באפשרות צירוף מדיניות ישירות.
- מחפשים את המדיניות AmazonS3FullAccess ובוחרים בה.
- לוחצים על הבא.
- לוחצים על הוספת הרשאות.
הגדרת יעד AWS S3 ב-Tanium Connect
- נכנסים ל-Tanium Console.
- עוברים אל Modules > Connect (מודולים > חיבור).
- לוחצים על יצירת חיבור.
- מספקים את פרטי ההגדרה הבאים:
- שם: מזינים שם תיאורי (לדוגמה,
Threat Response Alerts to S3 for SecOps). - תיאור: תיאור אופציונלי (לדוגמה,
Export threat detection alerts and investigation findings to AWS S3 for Google SecOps ingestion). - הפעלה: בוחרים באפשרות הזו כדי להפעיל את החיבור כך שיפעל לפי לוח הזמנים.
- שם: מזינים שם תיאורי (לדוגמה,
- לוחצים על הבא.
הגדרת מקור החיבור
- בקטע מקור, מציינים את פרטי ההגדרה הבאים:
- סוג המקור: בוחרים באפשרות שאלה שמורה.
- שאלה שמורה: בוחרים אחת מהשאלות השמורות הבאות שקשורות לתגובה לאיומים:
- תגובה לאיומים – התראות להתראות על זיהוי איומים.
- תגובה לאיומים – תוצאות החקירה לתוצאות החקירה.
- תגובה לאיומים – התאמות לנתוני מודיעין להתאמות לנתוני מודיעין איומי סייבר.
- תגובה לאיומים – פעילות בנקודת קצה כדי לראות פעילות חשודה בנקודת קצה.
- תגובה לאיומים – חיבורים לרשת לאיומים שמבוססים על רשת.
- קבוצת מחשבים: בוחרים באפשרות כל המחשבים או בקבוצות מחשבים ספציפיות למעקב.
- מרווח רענון: מגדירים מרווח מתאים לאיסוף הנתונים (לדוגמה, 10 דקות להתראות על איומים).
- לוחצים על הבא.
הגדרת יעד ב-AWS S3
- בקטע יעד, מספקים את פרטי ההגדרה הבאים:
- סוג היעד: בוחרים באפשרות AWS S3.
- שם היעד: מזינים שם ייחודי (לדוגמה,
Google SecOps ThreatResponse S3 Destination). - מפתח גישה ל-AWS: מזינים את מפתח הגישה ל-AWS מקובץ ה-CSV שהורדתם בשלב ההגדרה של AWS S3.
- מפתח גישה סודי של AWS: מזינים את מפתח הגישה הסודי של AWS מקובץ ה-CSV שהורד בשלב ההגדרה של AWS S3.
- שם הקטגוריה: מזינים את שם הקטגוריה ב-S3 (לדוגמה,
tanium-threat-response-logs). - אזור: בוחרים את אזור AWS שבו נמצאת קטגוריית ה-S3.
- Key Prefix (קידומת מפתח): מזינים קידומת לאובייקטים ב-S3 (לדוגמה,
tanium/threat-response/).
- לוחצים על הבא.
הגדרת מסננים
- בקטע Filters, מגדירים את אפשרויות סינון הנתונים:
- שליחת פריטים חדשים בלבד: בוחרים באפשרות הזו כדי לשלוח רק התראות חדשות על איומים מאז הייצוא האחרון.
- מסנני עמודות: אם צריך, אפשר להוסיף מסננים על סמך מאפיינים ספציפיים של התראות (לדוגמה, סינון לפי חומרת ההתראה, סוג האיום או סטטוס החקירה).
- לוחצים על הבא.
עיצוב נתונים ל-AWS S3
- בקטע Format (פורמט), מגדירים את פורמט הנתונים:
- פורמט: בוחרים באפשרות JSON.
- אפשרויות:
- כולל כותרות: מבטלים את הסימון כדי שהכותרות לא ייכללו בפלט JSON.
- כולל תאים ריקים: בוחרים לפי ההעדפה.
- אפשרויות מתקדמות:
- שמות קבצים: שימוש בשמות שמתבססים על חותמת זמן כברירת מחדל.
- דחיסה: בוחרים באפשרות Gzip כדי לצמצם את עלויות האחסון ואת זמן ההעברה.
- לוחצים על הבא.
תזמון החיבור
- בקטע Schedule (לוח זמנים), מגדירים את לוח הזמנים לייצוא:
- הפעלת תזמון: בוחרים באפשרות הזו כדי להפעיל ייצוא אוטומטי מתוזמן.
- סוג התזמון: בוחרים באפשרות חוזר.
- תדירות: בוחרים באפשרות כל 10 דקות כדי לקבל התראות בזמן אמת על תגובות לאיומים.
- שעת התחלה: מגדירים שעת התחלה מתאימה לייצוא הראשון.
- לוחצים על הבא.
שמירה ואימות של החיבור
- בודקים את הגדרות החיבור במסך הסיכום.
- לוחצים על שמירה כדי ליצור את הקישור.
- לוחצים על בדיקת החיבור כדי לוודא שההגדרה תקינה.
- אם הבדיקה תסתיים בהצלחה, לוחצים על הפעלה מיידית כדי לבצע ייצוא ראשוני.
- עוקבים אחרי סטטוס החיבור בדף Connect Overview.
הגדרת פיד ב-Google SecOps להטמעה של יומנים של Tanium Threat Response
- עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
- לוחצים על + הוספת פיד חדש.
- בשדה שם הפיד, מזינים שם לפיד (לדוגמה,
Tanium Threat Response logs). - בוחרים באפשרות Amazon S3 V2 בתור סוג המקור.
- בוחרים באפשרות Tanium Threat Response בתור סוג היומן.
- לוחצים על הבא.
- מציינים ערכים לפרמטרים הבאים של הקלט:
- S3 URI:
s3://tanium-threat-response-logs/tanium/threat-response/ - אפשרויות למחיקת מקורות: בוחרים את אפשרות המחיקה לפי ההעדפה.
- הגיל המקסימלי של הקובץ: כולל קבצים ששונו במספר הימים האחרון. ברירת המחדל היא 180 ימים.
- מזהה מפתח הגישה: מפתח הגישה של המשתמש עם גישה לקטגוריית S3.
- מפתח גישה סודי: מפתח סודי של משתמש עם גישה לקטגוריית S3.
- מרחב השמות של הנכס: מרחב השמות של הנכס.
- תוויות של נתוני אירועים: התווית שמוחלת על האירועים מהפיד הזה.
- S3 URI:
- לוחצים על הבא.
- בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | לוגיקה |
|---|---|---|
| מזהה ההתראה | security_result.rule_instance | הערך של השדה הזה נלקח מהשדה 'מזהה ההתראה' ביומן הגולמי. |
| כתובת ה-IP של המחשב | principal.ip | הערך של השדה הזה נלקח מהשדה 'כתובת ה-IP של המחשב' ביומן הגולמי. |
| כתובת ה-IP של המחשב | target.ip | הערך של השדה הזה נלקח מהשדה 'כתובת ה-IP של המחשב' ביומן הגולמי. |
| שם המחשב | principal.hostname | הערך של השדה הזה נלקח מהשדה Computer Name (שם המחשב) ביומן הגולמי. |
| שם המחשב | target.hostname | הערך של השדה הזה נלקח מהשדה Computer Name (שם המחשב) ביומן הגולמי. |
| id | target.resource.attribute.labels | הערך של השדה הזה נלקח מהשדה id ביומן הגולמי. המפתח מקודד באופן קשיח ל-id. |
| מזהה Intel | security_result.rule_id | הערך של השדה הזה נלקח מהשדה Intel Id ביומן הגולמי. |
| תוויות Intel | security_result.description | הערך של השדה הזה נלקח מהשדה Intel Labels (תוויות של Intel) ביומן הגולמי. |
| שם Intel | security_result.summary | הערך של השדה הזה נלקח מהשדה Intel Name (שם Intel) ביומן הגולמי. |
| שם Intel | security_result.threat_name | הערך של השדה הזה נלקח מהשדה 'שם Intel' ביומן הגולמי. |
| סוג Intel | security_result.rule_type | הערך של השדה הזה נלקח מהשדה Intel Type (סוג המידע) ביומן הגולמי. |
| MatchDetails.finding.system_info.bits | principal.asset.platform_software.bits | הערך של השדה הזה נלקח מהשדה MatchDetails.finding.system_info.bits ביומן הגולמי. |
| MatchDetails.finding.system_info.os | principal.asset.platform_software.platform_version | הערך של השדה הזה נלקח מהשדה MatchDetails.finding.system_info.os ביומן הגולמי. |
| MatchDetails.finding.system_info.patch_level | principal.asset.platform_software.platform_patch_level | הערך של השדה הזה נלקח מהשדה MatchDetails.finding.system_info.patch_level ביומן הגולמי. |
| MatchDetails.finding.system_info.platform | principal.asset.platform_software.platform | הערך של השדה הזה נלקח מהשדה MatchDetails.finding.system_info.platform ביומן הגולמי. |
| MatchDetails.match.contexts.0.event.registrySet.keyPath | target.registry.registry_key | הערך של השדה הזה נלקח מהשדה MatchDetails.match.contexts.0.event.registrySet.keyPath ביומן הגולמי. |
| MatchDetails.match.contexts.0.event.registrySet.valueName | target.registry.registry_value_name | הערך של השדה הזה נלקח מהשדה MatchDetails.match.contexts.0.event.registrySet.valueName ביומן הגולמי. |
| MatchDetails.match.properties.args | security_result.about.process.command_line | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.args ביומן הגולמי. |
| MatchDetails.match.properties.file.fullpath | target.process.file.full_path | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.file.fullpath ביומן הגולמי. |
| MatchDetails.match.properties.file.md5 | target.process.file.md5 | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.file.md5 ביומן הגולמי. |
| MatchDetails.match.properties.file.sha1 | target.process.file.sha1 | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.file.sha1 ביומן הגולמי. |
| MatchDetails.match.properties.file.sha256 | target.process.file.sha256 | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.file.sha256 ביומן הגולמי. |
| MatchDetails.match.properties.fullpath | target.process.file.full_path | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.fullpath ביומן הגולמי. |
| MatchDetails.match.properties.local_port | principal.port | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.local_port ביומן הגולמי. |
| MatchDetails.match.properties.md5 | target.process.file.md5 | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.md5 ביומן הגולמי. |
| MatchDetails.match.properties.parent.args | security_result.about.process.command_line | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.args ביומן הגולמי. |
| MatchDetails.match.properties.parent.file.fullpath | target.process.parent_process.file.full_path | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.file.fullpath ביומן הגולמי. |
| MatchDetails.match.properties.parent.file.md5 | target.process.parent_process.file.md5 | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.file.md5 ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.file.fullpath | target.process.parent_process.parent_process.file.full_path | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.parent.file.fullpath ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.file.md5 | target.process.parent_process.parent_process.file.md5 | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.parent.file.md5 ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.parent.file.fullpath | target.process.parent_process.parent_process.parent_process.file.full_path | הערך של השדה הזה נלקח מהשדה 'MatchDetails.match.properties.parent.parent.parent.file.fullpath' ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.parent.file.md5 | target.process.parent_process.parent_process.parent_process.file.md5 | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.parent.parent.file.md5 ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.parent.parent.file.fullpath | target.process.parent_process.parent_process.parent_process.parent_process.file.full_path | הערך בשדה הזה נלקח מהשדה MatchDetails.match.properties.parent.parent.parent.parent.file.fullpath ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.parent.parent.file.md5 | target.process.parent_process.parent_process.parent_process.parent_process.file.md5 | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.parent.parent.parent.file.md5 ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.parent.parent.parent.file.fullpath | target.process.parent_process.parent_process.parent_process.parent_process.parent_process.file.full_path | הערך של השדה הזה נלקח מהשדה 'MatchDetails.match.properties.parent.parent.parent.parent.parent.file.fullpath' ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.parent.parent.parent.file.md5 | target.process.parent_process.parent_process.parent_process.parent_process.parent_process.file.md5 | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.parent.parent.parent.parent.file.md5 ביומן הגולמי. |
| MatchDetails.match.properties.parent.pid | target.process.parent_process.pid | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.pid ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.pid | target.process.parent_process.parent_process.pid | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.parent.pid ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.parent.pid | target.process.parent_process.parent_process.parent_process.pid | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.parent.parent.pid ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.parent.parent.pid | target.process.parent_process.parent_process.parent_process.parent_process.pid | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.parent.parent.parent.parent.pid ביומן הגולמי. |
| MatchDetails.match.properties.parent.parent.parent.parent.parent.pid | target.process.parent_process.parent_process.parent_process.parent_process.parent_process.pid | הערך בשדה הזה נלקח מהשדה MatchDetails.match.properties.parent.parent.parent.parent.parent.pid ביומן הגולמי. |
| MatchDetails.match.properties.pid | target.process.pid | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.pid ביומן הגולמי. |
| MatchDetails.match.properties.protocol | network.ip_protocol | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.protocol ביומן הגולמי. |
| MatchDetails.match.properties.remote_ip | target.ip | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.remote_ip ביומן הגולמי. |
| MatchDetails.match.properties.remote_port | target.port | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.remote_port ביומן הגולמי. |
| MatchDetails.match.properties.sha1 | target.process.file.sha1 | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.sha1 ביומן הגולמי. |
| MatchDetails.match.properties.sha256 | target.process.file.sha256 | הערך של השדה הזה נלקח מהשדה MatchDetails.match.properties.sha256 ביומן הגולמי. |
| MatchDetails.match.properties.user | target.administrative_domain | שם הדומיין מחולץ מהשדה MatchDetails.match.properties.user ביומן הגולמי על ידי חיפוש של תו קו נטוי הפוך (""). התווים לפני הקו הנטוי ההפוך נחשבים לשם הדומיין. |
| MatchDetails.match.properties.user | target.user.userid | שם המשתמש מחולץ מהשדה MatchDetails.match.properties.user ביומן הגולמי על ידי חיפוש של התו 'קו נטוי הפוך' (""). התווים אחרי הקו הנטוי ההפוך נחשבים לשם המשתמש. |
| טכניקות MITRE | security_result.threat_id | הערך של השדה הזה נלקח מהשדה MITRE Techniques ביומן הגולמי. |
| params | security_result.detection_fields | הערך של השדה הזה נלקח מהשדה params ביומן הגולמי. המפתח מקודד באופן קשיח ל-params_ בצירוף האינדקס של הפרמטר. |
| חותמת הזמן | metadata.event_timestamp | הערך של השדה הזה נלקח מהשדה Timestamp (חותמת זמן) ביומן הגולמי. |
| לא רלוונטי | is_alert | השדה הזה מקודד כ-true אם השדה Computer IP (כתובת ה-IP של המחשב) ביומן הגולמי לא ריק. |
| לא רלוונטי | metadata.log_type | השדה הזה מקודד באופן קשיח לערך 'TANIUM_THREAT_RESPONSE'. |
| לא רלוונטי | metadata.product_event_type | השדה הזה מקודד באופן קשיח ל-Tanium Signal. |
| לא רלוונטי | metadata.product_name | השדה הזה מקודד כ-"Threat Response". |
| לא רלוונטי | metadata.vendor_name | השדה הזה מקודד באופן קשיח ל-Tanium. |
| לא רלוונטי | network.http.method | השדה הזה מקודד באופן קשיח לערך POST אם הערך של השדה method ביומן הגולמי הוא submit. |
שנה רישום
צפייה ביומן השינויים של כלי הניתוח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.