איסוף יומנים של Microsoft System Center Endpoint Protection (SCEP)
במאמר הזה מוסבר איך לאסוף יומנים של Microsoft System Center Endpoint Protection (SCEP) על ידי הגדרת פיד של Google Security Operations באמצעות Microsoft Azure Blob Storage V2.
Microsoft System Center Endpoint Protection (SCEP) הוא פתרון אנטי-וירוס ופתרון נגד תוכנות זדוניות לארגונים, שמשולב עם System Center Configuration Manager (SCCM). SCEP מספק הגנה בזמן אמת מפני תוכנות זדוניות, וירוסים, רוגלות ותוכנות זדוניות אחרות לנקודות קצה מבוססות Windows. פרוטוקול SCEP כותב אירועי אבטחה לערוץ Microsoft-Windows-Windows Defender/Operational Windows Event Log, שאפשר לאסוף אותו באמצעות Azure Monitor Agent ולייצא אותו ל-Azure Blob Storage.
לפני שמתחילים
חשוב לוודא שמתקיימות דרישות הסף הבאות:
- מופע של Google SecOps
- גישה עם הרשאות לפורטל Microsoft Azure:
- יצירת חשבונות אחסון
- יצירה וניהול של סביבות עבודה ב-Log Analytics
- יצירה וניהול של כללים לאיסוף נתונים
- הגדרת כללים לייצוא נתונים
- ניהול מפתחות גישה
- Windows Server 2012 R2 ואילך עם SCEP מותקן, או Windows Server 2016 ואילך עם Windows Defender Antivirus
- סוכן Azure Monitor מותקן בשרת Windows (נדרש Azure Arc לשרתים מקומיים או תמיכה מקורית במכונות וירטואליות של Azure)
גישת אדמין בשרת Windows שבו נפרס SCEP
הגדרת חשבון Azure Storage
יצירת חשבון אחסון
- ב-Azure portal, מחפשים Storage accounts.
- לוחצים על + Create.
מספקים את פרטי ההגדרה הבאים:
הגדרה ערך מינוי בוחרים את המינוי ל-Azure. קבוצת משאבים בוחרים קבוצה קיימת או יוצרים קבוצה חדשה שם חשבון האחסון מזינים שם ייחודי (לדוגמה, sceplogssa)אזור בוחרים את האזור (לדוגמה, East US)ביצועים רגיל (מומלץ) יתירות GRS (Geo-redundant storage) או LRS (Locally redundant storage) לוחצים על בדיקה + יצירה.
בודקים את הסקירה הכללית של החשבון ולוחצים על יצירה.
מחכים שהפריסה תסתיים.
קבלת פרטי הכניסה לחשבון האחסון
- עוברים אל חשבון האחסון שיצרתם.
- בניווט הימני, בוחרים באפשרות מפתחות גישה בקטע אבטחה + רשת.
- לוחצים על הצגת מקשים.
- מעתיקים ושומרים את הפרטים הבאים לשימוש בהמשך:
- שם חשבון האחסון: השם שיצרתם (לדוגמה,
sceplogssa) - Key 1 או Key 2: מפתח הגישה המשותף (מחרוזת אקראית באורך 512 ביט בקידוד Base-64)
- שם חשבון האחסון: השם שיצרתם (לדוגמה,
קבלת נקודת קצה של Blob Service
- באותו חשבון אחסון, בתפריט הניווט הימני, בוחרים באפשרות נקודות קצה.
- מעתיקים ושומרים את כתובת ה-URL של נקודת הקצה של שירות ה-Blob.
- לדוגמה:
https://sceplogssa.blob.core.windows.net/
- לדוגמה:
יצירת סביבת עבודה של Log Analytics
- ב-Azure portal, מחפשים את האפשרות Log Analytics workspaces.
- לוחצים על + Create.
מספקים את פרטי ההגדרה הבאים:
הגדרה ערך מינוי בוחרים את המינוי ל-Azure. קבוצת משאבים בוחרים את אותה קבוצת משאבים כמו חשבון האחסון שם מזינים שם ייחודי (לדוגמה, scep-logs-workspace)אזור צריך לבחור את אותו אזור כמו בחשבון האחסון לוחצים על בדיקה + יצירה.
לוחצים על יצירה.
מחכים שהפריסה תסתיים.
התקנת Azure Monitor Agent בשרת Windows
בשרתים מקומיים שמופעל בהם SCEP, צריך קודם לצרף את השרת ל-Azure Arc ואז להתקין את Azure Monitor Agent.
צירוף ל-Azure Arc (שרתים מקומיים בלבד)
- ב-Azure portal, מחפשים את Azure Arc.
- בקטע תשתית, בוחרים באפשרות שרתים.
- לוחצים על + הוספה.
- בוחרים באפשרות Add a single server (הוספת שרת יחיד) ולוחצים על Generate script (יצירת סקריפט).
- מספקים את פרטי ההגדרה הבאים:
- מינוי: בוחרים את המינוי ל-Azure.
- קבוצת משאבים: בוחרים את קבוצת המשאבים
- אזור: בוחרים את אותו אזור כמו חשבון האחסון
- מערכת הפעלה: בוחרים באפשרות Windows.
- לוחצים על הורדה והרצת הסקריפט.
- בשרת Windows שבו פועל SCEP, פותחים את PowerShell כאדמין.
מריצים את הסקריפט שהורד כדי להשלים את ההצטרפות ל-Azure Arc.
התקנת Azure Monitor Agent
- ב-Azure portal, עוברים אל Azure Arc > Servers (או אל Virtual Machines למכונות וירטואליות של Azure).
- בוחרים את השרת שבו פועל SCEP.
- בתפריט הניווט הימני, לוחצים על תוספים בקטע הגדרות.
- לוחצים על + הוספה.
- מחפשים את Azure Monitor Agent ולוחצים עליו.
- לוחצים על הבא ואז על בדיקה + יצירה.
- לוחצים על יצירה.
- מחכים שהתקנת התוסף תסתיים.
יצירה של כלל לאיסוף נתונים עבור אירועי SCEP
- ב-Azure portal, מחפשים את Monitor.
- בקטע הגדרות, לוחצים על כללים לאיסוף נתונים.
- לוחצים על + Create.
- בכרטיסייה Basics (פרטים בסיסיים), מזינים את פרטי ההגדרה הבאים:
- שם הכלל: מזינים שם תיאורי (לדוגמה,
dcr-scep-events) - מינוי: בוחרים את המינוי ל-Azure.
- קבוצת משאבים: בוחרים את קבוצת המשאבים
- אזור: בוחרים את אותו אזור כמו בסביבת העבודה של Log Analytics
- סוג הפלטפורמה: בוחרים באפשרות Windows.
- שם הכלל: מזינים שם תיאורי (לדוגמה,
- לוחצים על הבא: משאבים.
- בכרטיסייה מקורות:
- לוחצים על + הוספת משאבים.
- מרחיבים את קבוצת המשאבים ובוחרים את השרת שבו פועל SCEP (שרת Azure Arc או מכונה וירטואלית של Azure).
- לוחצים על אישור.
- לוחצים על השלב הבא: איסוף ומסירה.
בכרטיסייה איסוף ומשלוח:
- לוחצים על + הוספה של מקור נתונים.
- בתפריט הנפתח סוג מקור הנתונים, בוחרים באפשרות יומני אירועים של Windows.
- בוחרים באפשרות בהתאמה אישית כדי להזין שאילתות XPath.
לוחצים על + הוספת שאילתת XPath ומזינים את שאילתת ה-XPath הבאה כדי לאסוף את כל האירועים של SCEP ו-Windows Defender:
Microsoft-Windows-Windows Defender/Operational!*[System[(Level=1 or Level=2 or Level=3 or Level=4 or Level=5)]]שאילתת ה-XPath הזו אוספת את כל האירועים (Critical, Error, Warning, Information ו-Verbose) מהערוץ Operational של Windows Defender. כדי לאסוף רק מזהי אירועים ספציפיים (לדוגמה, זיהוי תוכנות זדוניות), משתמשים בשאילתה ממוקדת יותר, כמו:
Microsoft-Windows-Windows Defender/Operational!*[System[(EventID=1006 or EventID=1007 or EventID=1116 or EventID=1117 or EventID=2000 or EventID=2001 or EventID=5007)]]בכרטיסייה יעד, לוחצים על + הוספת יעד.
בוחרים באפשרות Azure Monitor Logs בתור סוג היעד.
בוחרים את סביבת העבודה של Log Analytics שיצרתם קודם (לדוגמה,
scep-logs-workspace).
לוחצים על הוספה של מקור נתונים.
לוחצים על בדיקה + יצירה.
לוחצים על יצירה.
מזהי האירועים המרכזיים שנאספים
כלל איסוף הנתונים אוסף אירועים מהערוץ Microsoft-Windows-Windows Defender/Operational, שכולל את מזהי האירועים המרכזיים הבאים של SCEP:
| מזהה אירוע | תיאור |
|---|---|
| 1006 | תוכנה זדונית זוהתה על ידי מנוע למניעת תוכנות זדוניות |
| 1007 | פעולה נגד תוכנות זדוניות שבוצעה על תוכנה זדונית שזוהתה |
| 1116 | הגנה בזמן אמת זיהתה תוכנה זדונית או תוכנה לא רצויה |
| 1117 | ההגנה בזמן אמת פעלה נגד תוכנות זדוניות |
| 2000 | התחיל עדכון של חתימת תוכנה נגד תוכנות זדוניות |
| 2001 | עדכון חתימת התוכנה נגד תוכנות זדוניות הושלם |
| 5007 | ההגדרה של פלטפורמת האנטי-תוכנה השתנתה |
הגדרת ייצוא נתונים ממרחב העבודה של Log Analytics אל Azure Blob Storage
רישום של ספק המשאבים Microsoft.Insights
- בפורטל Azure, עוברים אל מינויים.
- בוחרים את המינוי.
- בתפריט הניווט הימני, בוחרים באפשרות ספקי משאבים בקטע הגדרות.
- מחפשים את Microsoft.Insights.
- אם הסטטוס לא רשום, בוחרים אותו ולוחצים על הרשמה.
יצירת כלל לייצוא נתונים
- בפורטל Azure, עוברים אל סביבת העבודה של Log Analytics (לדוגמה,
scep-logs-workspace). - בתפריט הניווט הימני, בקטע הגדרות, לוחצים על ייצוא נתונים.
- לוחצים על + כלל ייצוא חדש.
- בכרטיסייה פרטים בסיסיים:
- שם כלל ייצוא הנתונים: מזינים שם תיאורי (לדוגמה,
export-scep-to-blob)
- שם כלל ייצוא הנתונים: מזינים שם תיאורי (לדוגמה,
- לוחצים על הבא: מקור.
בכרטיסייה מקור, בוחרים בטבלה אירוע.
לוחצים על הבא: יעד.
בכרטיסייה Destination (יעד):
- סוג היעד: בוחרים באפשרות חשבון אחסון
- Subscription (מינוי): בוחרים את המינוי שמכיל את חשבון האחסון.
- חשבון אחסון: בוחרים את חשבון האחסון שיצרתם קודם (לדוגמה,
sceplogssa)
לוחצים על הבא: בדיקה + יצירה.
לוחצים על יצירה.
אחרי ההגדרה, האירועים מיוצאים אוטומטית לחשבון האחסון. נוצר קונטיינר בשם
am-Eventבחשבון האחסון. Blobs מאוחסנים בתיקיות של 5 דקות באמצעות מבנה הנתיב הבא:am-Event/ └── WorkspaceResourceId=/subscriptions/{subscription-id}/resourcegroups/{resource-group}/providers/microsoft.operationalinsights/workspaces/{workspace}/ └── y={year}/m={month}/d={day}/h={hour}/m={minute}/ └── PT05M.json
אימות של ייצוא הנתונים
- ב-Azure portal, עוברים אל Storage Account (לדוגמה,
sceplogssa). - בתפריט הניווט הימני, בקטע אחסון נתונים, בוחרים באפשרות מאגרי נתונים.
- מוודאים שהקונטיינר
am-Eventקיים. - עוברים אל מאגר התגים ומוודאים שנוצרים קובצי JSON עם נתוני אירועים במבנה התיקיות.
הגדרת פיד ב-Google SecOps להטמעה של יומנים של Microsoft System Center Endpoint Protection (SCEP)
- עוברים אל SIEM Settings > Feeds (הגדרות SIEM > פידים).
- לוחצים על הוספת פיד חדש.
- בדף הבא, לוחצים על הגדרת פיד יחיד.
- בשדה שם הפיד, מזינים שם לפיד (לדוגמה,
Microsoft SCEP Logs). - בוחרים באפשרות Microsoft Azure Blob Storage V2 בתור סוג המקור.
- בוחרים באפשרות Microsoft System Center Endpoint Protection (SCEP) בתור סוג היומן.
- לוחצים על הבא.
מציינים ערכים לפרמטרים הבאים של הקלט:
- Azure URI: מזינים את כתובת ה-URL של נקודת הקצה של Blob Service עם הנתיב של המאגר:
https://sceplogssa.blob.core.windows.net/am-Event/מחליפים את מה שכתוב בשדות הבאים:
-
sceplogssa: השם של חשבון האחסון שלכם ב-Azure. -
am-Event: השם של מאגר ה-blob שבו מאוחסנים האירועים המיוצאים.
- אפשרות מחיקת המקור: בוחרים את אפשרות המחיקה הרצויה:
- אף פעם: הקבצים לא נמחקים אחרי ההעברה.
- מחיקת קבצים שהועברו: הקבצים נמחקים אחרי שההעברה מסתיימת.
- מחיקת קבצים שהועברו וספריות ריקות: מחיקת קבצים וספריות ריקות אחרי שההעברה מסתיימת בהצלחה.
- הגיל המקסימלי של הקובץ: כולל קבצים ששונו במספר הימים האחרון (ברירת המחדל היא 180 ימים)
- Shared key (מפתח משותף): מזינים את הערך של המפתח המשותף (מפתח הגישה) ששמרתם מחשבון האחסון
- מרחב השמות של הנכס: מרחב השמות של הנכס
- תוויות להוספה: התווית שתתווסף לאירועים מהפיד הזה
לוחצים על הבא.
בודקים את ההגדרות של הפיד החדש במסך סיום ולוחצים על שליחה.
הגדרת חומת אש של Azure Storage (אם היא מופעלת)
אם חשבון האחסון שלכם ב-Azure משתמש בחומת אש, אתם צריכים להוסיף את טווחי כתובות ה-IP של Google SecOps.
- ב-Azure portal, עוברים אל Storage Account.
- בקטע Security + networking (אבטחה + רשתות), בוחרים באפשרות Networking (רשתות).
- בקטע Firewalls and virtual networks (חומות אש ורשתות וירטואליות), בוחרים באפשרות Enabled from selected virtual networks and IP addresses (מופעל מרשתות וירטואליות נבחרות ומכתובות IP נבחרות).
- בקטע Firewall (חומת אש), מתחת לAddress range (טווח כתובות), לוחצים על + Add IP range (+ הוספת טווח כתובות IP).
מוסיפים כל טווח כתובות IP של Google SecOps בסימון CIDR.
כדי לקבל את טווחי כתובות ה-IP הנוכחיים:
- לעיון במאמרי העזרה בנושא רשימות היתרים לכתובות IP
- אפשר גם לאחזר אותם באופן פרוגרמטי באמצעות Feed Management API
בנוסף, מסמנים את התיבה Allow Azure services on the trusted services list to access this storage account (מתן הרשאה לשירותי Azure ברשימת השירותים המהימנים לגשת לחשבון האחסון הזה) כדי לאפשר ייצוא נתונים ממרחב העבודה של Log Analytics לכתיבה בחשבון האחסון.
לוחצים על Save.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| about.hostname | about.hostname | ההגדרה היא %{_DB_HOST} |
| _DB_PORT | about.port | הערך הועתק ישירות והומר למספר שלם |
| _DB_DRIVER | about.resource.name | ההגדרה היא '%{_DB_DRIVER}' |
| _DB_URL | about.url | ההגדרה היא '%{_DB_URL}' |
| signature_labels | event.idm.read_only_udm.additional.fields | המיזוג מתבצע מ-signature_labels אם החתימה לא ריקה, מ-pending_action אם PendingAction לא ריק, מ-execution_status אם ExecutionStatus לא ריק, מ-record_id אם RecordID לא ריק, מ-error_code אם ErrorCode לא ריק, מ-action_success אם ActionSuccess לא ריק |
| pending_action | event.idm.read_only_udm.additional.fields | |
| execution_status | event.idm.read_only_udm.additional.fields | |
| record_id | event.idm.read_only_udm.additional.fields | |
| error_code | event.idm.read_only_udm.additional.fields | |
| action_success | event.idm.read_only_udm.additional.fields | |
| source_url | event.idm.read_only_udm.src.url | הערך מ-source_url אם הוא לא ריק, אחרת הערך מ-my_string1 אם הוא לא ריק |
| my_string1 | event.idm.read_only_udm.src.url | |
| has_principal | metadata.event_type | הערך הוא NETWORK_CONNECTION אם has_principal ו-has_target הם true, אחרת הערך הוא STATUS_UPDATE אם has_principal הוא true, אחרת הערך הוא SCAN_FILE אם no_target_host הוא false ו-path_available הוא true, אחרת הערך הוא STATUS_UNCATEGORIZED אם no_target_host הוא false, אחרת הערך הוא USER_UNCATEGORIZED אם has_user הוא true, אחרת הערך הוא GENERIC_EVENT. |
| has_user | metadata.event_type | |
| has_target | metadata.event_type | |
| no_target_host | metadata.event_type | |
| path_available | metadata.event_type | |
| שם | metadata.product_event_type | הערך הועתק ישירות |
| DetectionID | metadata.product_log_id | הערך הועתק ישירות |
| metadata.product_name | metadata.product_name | ההגדרה היא MICROSOFT SYSTEM CENTER ENDPOINT PROTECTION |
| metadata.vendor_name | metadata.vendor_name | הגדרה כ-MICROSOFT |
| NTdomain | principal.administrative_domain | הערך הועתק ישירות |
| שם המארח | principal.asset.hostname | ערך משם המארח אם הוא לא ריק, אחרת מהמארח היעד |
| TargetHost | principal.asset.hostname | |
| action_type | principal.group.attribute.labels | המידע ממוזג מ-action_type_label אם action_type לא ריק |
| שם המארח | principal.hostname | ערך משם המארח אם הוא לא ריק, אחרת מהמארח היעד |
| TargetHost | principal.hostname | |
| תהליך | principal.process.file.full_path | הערך מועתק ישירות אם התהליך לא ריק |
| שם משתמש | principal.user.user_display_name | הערך הועתק ישירות |
| שם משתמש | principal.user.userid | הערך מ-UserName אם הוא לא ריק, אחרת הערך מ-user אם הוא לא ריק |
| משתמש | principal.user.userid | |
| פעולה | security_result.action | ההגדרה מתבצעת על סמך ערכי הפעולה (ALLOW אם הפעולה הצליחה/נוצרה/התחילה/נמסרה/אושרה, BLOCK אם הפעולה נכשלה/נחסמה/הופסקה/נדחתה/נמחקה/נפסלה/נפלה/התרחשה שגיאה/הפעולה ננעלה, ALLOW_WITH_MODIFICATION אם הפעולה שונתה/ה-ACL שונה, QUARANTINE אם הפעולה הוכנסה להסגר) או CleanAction (FAIL אם הפעולה נכשלה, QUARANTINE אם הפעולה הוכנסה להסגר, ALLOW אם הפעולה אושרה, BLOCK אם הפעולה נחסמה) |
| CleanAction | security_result.action | |
| CleanAction | security_result.action_details | הערך מועתק ישירות אם CleanAction לא ריק |
| קטגוריה | security_result.category_details | המיזוג מתבצע מהקטגוריה אם היא לא ריקה, אחרת מהקטגוריה |
| קטגוריה | security_result.category_details | |
| DetectionID | security_result.detection_fields | המידע ממוזג מהשדה DetectionID_field אם השדה DetectionID לא ריק, מהשדה detectionid_field אם השדה detectionid לא ריק, מהשדה detection_source_labels אם השדה detection_source לא ריק, מהשדה pending_action_labels אם השדה pending_action לא ריק, מהשדה detection_Path אם השדות source_url, file_path ו-Path לא ריקים |
| detectionid | security_result.detection_fields | |
| detection_source | security_result.detection_fields | |
| pending_action | security_result.detection_fields | |
| נתיב | security_result.detection_fields | |
| severity | security_result.severity | הערך מוגדר על סמך רמת החומרה (LOW עבור 0/1/2/3/LOW, MEDIUM עבור 4/5/6/MEDIUM/SUBSTANTIAL/INFO, HIGH עבור 7/8/HIGH/SEVERE, CRITICAL עבור 9/10/VERY-HIGH/CRITICAL) או SeverityID (LOW עבור 1, MEDIUM עבור 2, HIGH עבור 4, CRITICAL עבור 5, UNKNOWN_SEVERITY אחרת) |
| SeverityID | security_result.severity | |
| SeverityID | security_result.severity_details | הערך הועתק ישירות |
| ThreatID | security_result.threat_id | הערך הועתק ישירות |
| ThreatName | security_result.threat_name | הערך הועתק ישירות |
| MaliciousFileCt | security_result.verdict_info | הערך הועתק ישירות, הומר למספר שלם ומוזג כ-malicious_file_ct |
| dest_nt_domain | target.administrative_domain | הערך הועתק ישירות |
| dest_name | target.asset.hostname | הערך מועתק ישירות אם dest_name לא ריק |
| file_path | target.file.full_path | הערך מ-file_path אם הוא לא ריק, אחרת מ-Path אם file_path ריק, אחרת מ-my_string אם הוא לא ריק |
| נתיב | target.file.full_path | |
| my_string | target.file.full_path | |
| dest_name | target.hostname | הערך מועתק ישירות אם dest_name לא ריק |
| ResourceID | target.resource.name | הערך מ-ResourceID אם הוא לא ריק, אחרת הערך מ-resourceid אם הוא לא ריק |
| resourceid | target.resource.name | |
| משתמש | target.user.userid | הערך מועתק ישירות אם המשתמש לא ריק |
| פעם | metadata.event_timestamp | הערך מומר מזמן באמצעות הפורמט MMM dd HH:mm:ss אם הזמן לא ריק, אחרת מ-DetectionTime או מ-detectiontime באמצעות UNIX_MS |
| DetectionTime | metadata.event_timestamp | |
| detectiontime | metadata.event_timestamp | |
time |
syslogtimestamp |
מופה מיומן השינויים |
DetectionID", "detection_source", and "pending_action |
security_result.detection_fields |
מופה מיומן השינויים |
action |
temp_action |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של מנתח התוכן הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.