איסוף יומנים של Halcyon Anti-Ransomware
במסמך הזה מוסבר איך להטמיע ב-Google Security Operations יומנים של Halcyon Anti-Ransomware באמצעות Google Cloud Storage V2.
Halcyon היא פלטפורמה למניעת תוכנות כופר שמשתמשת ב-AI כדי לזהות מתקפות של תוכנות כופר, למנוע אותן ולהתאושש מהן. הוא יוצר התראות לגבי אירועים של זיהוי תוכנות כופר, ניסיונות הצפנה ופעולות שחזור. המנתח ממפה שדות של יומנים בפורמט JSON למודל הנתונים המאוחד (UDM), ומטפל בסוגי אירועים כמו פעולות על קבצים, פעילות משתמשים ותוצאות אבטחה.
לפני שמתחילים
חשוב לוודא שיש לכם את הדברים הבאים:
- מכונה של Google SecOps
- פרויקט ב-GCP שבו מופעל Cloud Storage API
- הרשאות ליצירה ולניהול של קטגוריות GCS וכללי מדיניות IAM
- גישה עם הרשאות למסוף Halcyon עם יכולות ייצוא של יומנים
יצירת קטגוריה של Google Cloud Storage
- נכנסים למסוף Google Cloud.
- בוחרים את הפרויקט או יוצרים פרויקט חדש.
- בתפריט הניווט, נכנסים ל-Cloud Storage > Buckets.
- לוחצים על Create bucket.
ממלאים את פרטי ההגדרה הבאים:
הגדרה ערך Name your bucket מזינים שם ייחודי ברמה גלובלית (לדוגמה, halcyon-logs)סוג המיקום בוחרים לפי הצרכים (אזור, שני אזורים, מספר אזורים) Location בוחרים את המיקום (לדוגמה, us-central1)סוג אחסון (storage class) רגיל (מומלץ ליומנים שהגישה אליהם תכופה) בקרת גישה אחידה (מומלץ) כלי הגנה אופציונלי: הפעלת ניהול גרסאות של אובייקטים או מדיניות שמירת נתונים לוחצים על יצירה.
ייצוא של יומני Halcyon ל-Google Cloud Storage
ב-Halcyon אפשר לייצא נתוני יומן בפורמט JSON. כדי להעביר יומנים ל-GCS, אתם יכולים להשתמש באחת מהשיטות הבאות.
אפשרות א': ייצוא יומנים באמצעות Halcyon API והעלאה ל-GCS
- נכנסים למסוף הניהול של Halcyon.
- עוברים אל הגדרות > גישה ל-API ויוצרים מפתח API עם הרשאות קריאה.
- מעתיקים ושומרים את מפתח ה-API.
- משתמשים בסקריפט מתוזמן או בפונקציית Cloud Run כדי לקרוא ל-API בארכיטקטורת REST של Halcyon, לאחזר יומני אירועים ולכתוב אותם ב-GCS בפורמט JSON.
אפשרות ב': הגדרת שילוב עם SIEM והעברה ל-GCS
- נכנסים למסוף הניהול של Halcyon.
- עוברים אל הגדרות > שילובים > SIEM.
- מגדירים את יעד הייצוא של היומן כך שיכתוב אירועים בפורמט JSON לספרייה מקומית או לאחסון ביניים.
משתמשים בפונקציית Cloud Run כדי להעלות יומנים מדי פעם לקטגוריה של GCS.
- מוודאים שהקבצים שיוצאו הם בפורמט JSON.
- כל קובץ צריך להכיל רשומת אירוע אחת או יותר.
אחזור של חשבון השירות של Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל הגדרות > ניהול נתונים > פידים. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פידים.
- לוחצים על הוספת פיד חדש.
- לוחצים על הגדרת פיד יחיד.
- בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
- בוחרים באפשרות Halcyon Anti Ransomware בתור סוג היומן.
לוחצים על Get Service Account (קבלת חשבון שירות). תוצג כתובת אימייל ייחודית של חשבון שירות, לדוגמה:
chronicle-12345678@chronicle-gcp-prod.iam.gserviceaccount.comמעתיקים את כתובת האימייל הזו. תצטרכו אותו בשלב הבא.
מתן הרשאות IAM לחשבון השירות של Google SecOps
- נכנסים לדף Cloud Storage > Buckets.
- לוחצים על שם הקטגוריה.
- עוברים לכרטיסייה Permissions.
- לוחצים על הענקת גישה.
- מזינים את פרטי ההגדרה הבאים:
- הוספת חשבונות משתמשים: מדביקים את כתובת האימייל של חשבון השירות של Google SecOps.
- הקצאת תפקידים: בוחרים באפשרות צפייה באובייקטים באחסון.
לוחצים על Save.
- אם אתם מתכננים להשתמש באפשרות המחיקה (מחיקת קבצים שהועברו), תנו את התפקיד אדמין של אובייקטים באחסון במקום התפקיד "צפייה באובייקטים באחסון".
הגדרת פיד ב-Google SecOps כדי להטמיע יומנים של Halcyon Anti-Ransomware
- עוברים אל הגדרות > ניהול נתונים > פידים. אם אתם משתמשים בפלטפורמה של SIEM בלבד, עוברים אל הגדרות > פידים.
- לוחצים על הוספת פיד חדש.
- לוחצים על הגדרת פיד יחיד.
- בשדה שם הפיד, מזינים שם לפיד (לדוגמה,
Halcyon Anti-Ransomware logs). - בוחרים באפשרות Google Cloud Storage V2 בתור סוג המקור.
- בוחרים באפשרות Halcyon Anti Ransomware בתור סוג היומן.
- לוחצים על הבא.
מציינים ערכים לפרמטרים הבאים של הקלט:
שדה ערך URI של קטגוריית אחסון gs://halcyon-logs/halcyon/events/אפשרות למחיקת המקור בוחרים את אפשרות המחיקה הרצויה. גיל הקובץ המקסימלי (ימים) ברירת המחדל היא 180 ימים מרחב השמות של הנכס מרחב השמות של הנכס תוויות הטמעה התווית שתתווסף לאירועים מהפיד הזה - מחליפים את
halcyon-logsבשם האמיתי של קטגוריית GCS. - תמיד צריך לכלול את הקו הנטוי (
/) בסוף ה-URI.
- מחליפים את
לוחצים על הבא.
בודקים את הגדרות הפיד החדש במסך סיום ולוחצים על שליחה.
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | Logic (פונקציה לוגית) |
|---|---|---|
| sshd, tty, euid, dataType, filterName, totalOccurrences, occurredAt, count, occurrences.IncorrectPasswords, occurrences.FailedPassword, occurrences.AuthFailure, policyMode, action | additional.fields | מוזג עם תוויות שנוצרו מכל שדה אם הוא קיים; השדות totalOccurrences, count, occurrences הומרו למחרוזת |
| dnsArtifact.uri | network.dns.questions | מוזג עם מערך שאלות שמכיל את השם |
| asset.id | principal.asset.asset_id | משורשר כ-"ASSET:" + asset.id |
| asset.kind | principal.asset.attribute.labels | מוזג עם asset_kind_label שנוצר מ-asset.kind |
| asset.name | principal.asset.hostname | הערך הועתק ישירות |
| ipArtifact.ipAddress | principal.asset.ip | הערך הועתק ישירות |
| summary.applicationName | principal.application | הערך הועתק ישירות |
| phost, asset.name | principal.hostname | הערך מ-phost אם הוא קיים, ומוחלף על ידי asset.name אם הוא קיים |
| ipArtifact.ipAddress | principal.ip | הערך הועתק ישירות |
| process.commandLine | principal.process.command_line | הערך הועתק ישירות |
| modifiedFilePath, artifact.filePath, process.artifact.filePath, processes.artifact.filePath | principal.process.file.full_path | הערך מוגדר ל-modifiedFilePath אם הוא קיים, מוחלף על ידי artifact.filePath אם הוא קיים, מוחלף על ידי process.artifact.filePath אם הוא קיים, מוחלף על ידי processes.artifact.filePath אם הוא קיים (המרכאות הוסרו עבור processes.artifact.filePath) |
| lastOccurredAt | principal.process.file.last_seen_time | ההמרה בוצעה באמצעות מסנן תאריכים בפורמט ISO8601 |
| process.artifact.kind, artifact.kind, primaryProcess.artifact.kind | principal.process.file.mime_type | הערך מ-process.artifact.kind אם הוא קיים, מוחלף על ידי artifact.kind אם הוא קיים, מוחלף על ידי primaryProcess.artifact.kind אם הוא קיים |
| artifact.sha256, process.artifact.sha256, processes.artifact.sha256 | principal.process.file.sha256 | הערך מ-artifact.sha256 אם הוא קיים, מוחלף על ידי process.artifact.sha256 אם הוא קיים, מוחלף על ידי processes.artifact.sha256 אם הוא קיים |
| process.parentPid | principal.process.parent_pid | הערך הועתק ישירות |
| process.pid | principal.process.pid | הערך הועתק ישירות |
| user_displayname | principal.user.user_display_name | הערך הועתק ישירות |
| משתמש | principal.user.userid | הערך הועתק ישירות |
| summary.artifact.filePath | target.file.full_path | הערך הועתק ישירות |
| summary.artifact.sha256 | target.file.sha256 | הערך הועתק ישירות |
| primaryProcess.commandLine | target.process.command_line | הערך מועתק ישירות אחרי הסרת המירכאות |
| primaryProcess.kind | target.process.file.mime_type | הערך הועתק ישירות |
| primaryProcess.parentPid | target.process.parent_process.pid | הערך הועתק ישירות |
| primaryProcess.pid | target.process.pid | הערך הועתק ישירות |
| uid | target.user.userid | הערך הועתק ישירות |
| id | target.asset_id | משורשר כ-"ASSET:" + מזהה |
| פעולה | security_result.action | אותיות רישיות אם הפעולה היא "חסימה" או "אישור" |
| reason.exitCode | security_result.action_details | הערך הועתק ישירות |
| dxpRule, monitoringReason, tenantId | security_result.detection_fields | מוזג עם תוויות שנוצרו מכל שדה אם הוא קיים; לוכסנים הפוכים הוסרו עבור dxpRule |
| dxpRuleType | security_result.rule_type | הערך הועתק ישירות |
| ipArtifact.version | security_result.rule_version | הערך הועתק ישירות |
| msg, reason.cause | security_result.summary | הערך מ-msg אם הוא קיים, מוחלף על ידי reason.cause אם הוא קיים |
| חותמת זמן | metadata.event_timestamp | ההמרה בוצעה באמצעות מסנן תאריכים בפורמטים MMM dd HH:mm:ss או MMM d HH:mm:ss |
| phost, ipArtifact.ipAddress, asset.name, user, uid, summary.artifact.sha256, summary.artifact.filePath | metadata.event_type | ההגדרה היא FILE_UNCATEGORIZED אם יש has_principal ו-has_target_file; ההגדרה היא USER_UNCATEGORIZED אם יש has_principal ו-has_target; ההגדרה היא STATUS_UPDATE אם יש has_principal; אחרת ההגדרה היא GENERIC_EVENT (הדגלים נגזרים מהמקורות) |
| סיווג | metadata.product_event_type | הערך הועתק ישירות |
| gupid, guid | metadata.product_log_id | הערך מ-gupid אם הוא קיים, מוחלף על ידי guid אם הוא קיים |
| metadata.product_name | צריך להגדיר את "Halcyon Anti Ransomware" | |
| metadata.vendor_name | הגדרה ל "הלסיון" | |
primaryProcess.kind |
event.idm.read_only_udm.target.process.file.mime_type |
מופה מיומן השינויים |
primaryProcess.artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
מופה מיומן השינויים |
processes.artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
מופה מיומן השינויים |
processes.artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
מופה מיומן השינויים |
action |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
filterName |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
policyMode |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
euid |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
occurrences.AuthFailure |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
occurrences.FailedPassword |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
occurredAt |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
occurrences.IncorrectPasswords |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
guid |
event.idm.read_only_udm.metadata.product_log_id |
מופה מיומן השינויים |
gupid |
event.idm.read_only_udm.metadata.product_log_id |
מופה מיומן השינויים |
count |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
artifact.filePath |
event.idm.read_only_udm.principal.process.file.full_path |
מופה מיומן השינויים |
artifact.sha256 |
event.idm.read_only_udm.principal.process.file.sha256 |
מופה מיומן השינויים |
artifact.kind |
event.idm.read_only_udm.principal.process.file.mime_type |
מופה מיומן השינויים |
monitoringReason |
event.idm.read_only_udm.security_result.detection_fields |
מופה מיומן השינויים |
dxpRule |
event.idm.read_only_udm.security_result.detection_fields |
מופה מיומן השינויים |
modifiedFilePath |
event.idm.read_only_udm.principal.process.file.full_path |
מופה מיומן השינויים |
ipArtifact.version |
event.idm.read_only_udm.security_result.rule_version |
מופה מיומן השינויים |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.ip |
מופה מיומן השינויים |
ipArtifact.ipAddress |
event.idm.read_only_udm.principal.asset.ip |
מופה מיומן השינויים |
process.parentPid |
event.idm.read_only_udm.principal.process.parent_pid |
מופה מיומן השינויים |
dxpRuleType |
event.idm.read_only_udm.security_result.rule_type |
מופה מיומן השינויים |
summary.applicationName |
event.idm.read_only_udm.principal.application |
מופה מיומן השינויים |
process.pid |
event.idm.read_only_udm.principal.process.pid |
מופה מיומן השינויים |
reason.exitCode |
event.idm.read_only_udm.security_result.action_details |
מופה מיומן השינויים |
reason.cause |
event.idm.read_only_udm.security_result.summary |
מופה מיומן השינויים |
dnsArtifact_uri |
event.idm.read_only_udm.network.dns.questions |
מופה מיומן השינויים |
uid |
event.idm.read_only_udm.target.user.userid |
מופה מיומן השינויים |
tty |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
sshd |
event.idm.read_only_udm.additional.fields |
מופה מיומן השינויים |
phost |
event.idm.read_only_udm.principal.hostname |
מופה מיומן השינויים |
user_displayname |
event.idm.read_only_udm.principal.user.user_display_name |
מופה מיומן השינויים |
msg |
event.idm.read_only_udm.security_result.summary |
מופה מיומן השינויים |
timestamp |
event.idm.read_only_udm.metadata.event_timestamp |
מופה מיומן השינויים |
user |
event.idm.read_only_udm.principal.user.userid |
מופה מיומן השינויים |
יומן שינויים
הצגת יומן השינויים של המנתח הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.