איסוף יומנים של Halcyon Anti-Ransomware
במאמר הזה מוסבר איך להטמיע יומני רישום של Halcyon Anti-Ransomware ב-Google Security Operations באמצעות 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 כדי לקרוא ל-Halcyon API בארכיטקטורת REST, לאחזר יומני אירועים ולכתוב אותם ב-GCS בפורמט JSON.
אפשרות ב': הגדרת שילוב SIEM והעברה ל-GCS
- נכנסים למסוף הניהול של Halcyon.
- עוברים אל הגדרות > שילובים > SIEM.
- מגדירים את יעד ייצוא היומן כדי לכתוב אירועים בפורמט JSON לספרייה מקומית או לאחסון ביניים.
משתמשים בפונקציית Cloud Run כדי להעלות יומנים לקטגוריית GCS באופן תקופתי.
- מוודאים שהקבצים המיוצאים הם בפורמט JSON.
- כל קובץ צריך להכיל רשומת אירוע אחת או יותר.
אחזור חשבון השירות של Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Feeds (הגדרות 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.
- לוחצים על הענקת גישה.
- מספקים את פרטי ההגדרה הבאים:
- Add principals (הוספת ישויות מורשות): מדביקים את כתובת האימייל בחשבון של חשבון השירות של Google SecOps.
- הקצאת תפקידים: בוחרים באפשרות צפייה באובייקט אחסון.
לוחצים על Save.
- אם אתם מתכננים להשתמש באפשרות המחיקה (מחיקת קבצים שהועברו), צריך להעניק את התפקיד Storage Object Admin במקום Storage Object Viewer.
הגדרת פיד ב-Google SecOps להטמעה של יומנים של Halcyon Anti-Ransomware
- עוברים אל SIEM Settings > Feeds (הגדרות 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 | לוגיקה |
|---|---|---|
| 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 | הערך מההודעה אם קיים, מוחלף על ידי הסיבה.הגורם אם קיים |
| חותמת זמן | 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 | הגדרה כ-Halcyon | |
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.