איסוף יומני מודיעין איומים בפורמט STIX
במסמך הזה מוסבר איך להטמיע יומני STIX Threat Intelligence ב-Google Security Operations באמצעות סוכן Bindplane.
STIX (ראשי תיבות של Structured Threat Information Expression) היא שפה ופורמט סטנדרטיים לשיתוף סימנים מחשידים (IoC) ונתוני מודיעין איומי סייבר בין ארגונים. נתוני STIX מתקבלים בדרך כלל כקובצי JSON או XML משרתי TAXII או מפלטפורמות מודיעין איומי סייבר. סוכן Bindplane אוסף קובצי נתונים של STIX ישירות ממערכת הקבצים המקומית.
לפני שמתחילים
חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:
- מופע של Google SecOps
- Windows Server 2016 ואילך, או מארח Linux עם
systemd - אם מריצים מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
- לקוח TAXII או פלטפורמת מודיעין איומי סייבר ששומרת קבצים בפורמט STIX (JSON או XML) בספרייה מקומית
קבלת קובץ אימות להטמעת נתונים ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Collection Agents.
- מורידים את קובץ האימות להטמעת נתונים.
שומרים את הקובץ בצורה מאובטחת במערכת שבה תותקן Bindplane.
איך מוצאים את מספר הלקוח ב-Google SecOps
- נכנסים למסוף Google SecOps.
- עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.
התקנת סוכן Bindplane
מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.
התקנה ב-Windows
- פותחים את שורת הפקודה או את PowerShell כאדמין.
מריצים את הפקודה הבאה:
msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quietמחכים שההתקנה תסתיים.
כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:
sc query observiq-otel-collectorהשירות צריך להופיע עם הערך RUNNING.
התקנה ב-Linux
- פותחים טרמינל עם הרשאות root או sudo.
מריצים את הפקודה הבאה:
sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.shמחכים שההתקנה תסתיים.
כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:
sudo systemctl status observiq-otel-collectorהשירות צריך להופיע כפעיל (פועל).
מקורות מידע נוספים להתקנה
אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.
הגדרה של סוכן Bindplane להטמעה של יומנים ושליחה שלהם אל Google SecOps
איתור קובץ ההגדרות
Linux:
sudo nano /opt/observiq-otel-collector/config.yamlWindows:
notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
עריכת קובץ ההגדרות
מחליפים את כל התוכן של
config.yamlבהגדרה הבאה:receivers: filelog: include: - /var/log/stix/*.json start_at: beginning exporters: chronicle/stix: compression: gzip creds_file_path: '/etc/bindplane-agent/ingestion-auth.json' customer_id: '<customer_id>' endpoint: malachiteingestion-pa.googleapis.com log_type: STIX raw_log_field: body ingestion_labels: env: production service: pipelines: logs/stix_to_chronicle: receivers: - filelog exporters: - chronicle/stix
פרמטרים להגדרה
מחליפים את ה-placeholders הבאים:
הגדרת מקלט:
filelog: סוג המקלט לאיסוף קובצי יומן מהדיסק-
include: רשימה של נתיבי קבצים למעקב. מגדירים את הספרייה שבה נשמרים קובצי STIX:- Linux:
/var/log/stix/*.json - Windows:
C:\Logs\stix\*.json
- Linux:
-
start_at: הערךbeginningמאפשר לקרוא יומנים קיימים, והערךendמאפשר לקרוא רק רשומות חדשות
הגדרת כלי הייצוא:
-
stix: שם תיאורי של הכלי לייצוא -
creds_file_path: הנתיב המלא לקובץ האימות להטמעת נתונים:- Linux:
/etc/bindplane-agent/ingestion-auth.json - Windows:
C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
- Linux:
-
<customer_id>: מספר הלקוח מהשלב הקודם -
endpoint: כתובת ה-URL של נקודת הקצה האזורית:- ארה"ב:
malachiteingestion-pa.googleapis.com - אירופה:
europe-malachiteingestion-pa.googleapis.com - אסיה:
asia-southeast1-malachiteingestion-pa.googleapis.com - רשימה מלאה מופיעה במאמר בנושא נקודות קצה אזוריות.
- ארה"ב:
-
STIX: סוג היומן בדיוק כמו שהוא מופיע ב-Chronicle -
ingestion_labels: תוויות אופציונליות בפורמט YAML (לדוגמה,env: production)
-
הגדרת צינור עיבוד נתונים:
-
stix_to_chronicle: שם תיאורי של צינור העיבוד
-
שמירת קובץ ההגדרות
- אחרי שמסיימים לערוך, שומרים את הקובץ:
- Linux: מקישים על
Ctrl+O, אחר כך עלEnterואז עלCtrl+X. - Windows: לוחצים על קובץ > שמירה.
- Linux: מקישים על
מפעילים מחדש את סוכן Bindplane כדי להחיל את השינויים.
כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:
sudo systemctl restart observiq-otel-collectorמוודאים שהשירות פועל:
sudo systemctl status observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
sudo journalctl -u observiq-otel-collector -f
כדי להפעיל מחדש את סוכן Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:
שורת הפקודה או PowerShell כאדמין:
net stop observiq-otel-collector && net start observiq-otel-collectorמסוף השירותים:
- מקישים על
Win+R, מקלידיםservices.mscומקישים על Enter. - מחפשים את observIQ OpenTelemetry Collector.
- לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
מוודאים שהשירות פועל:
sc query observiq-otel-collectorבודקים אם יש שגיאות ביומנים:
type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
- מקישים על
הגדרת איסוף של קובץ נתונים בפורמט STIX
STIX הוא פורמט נתונים, לא מוצר. נתוני מודיעין איומים בפורמט STIX מתקבלים בדרך כלל כקובצי JSON או XML מלקוחות TAXII, מפלטפורמות מודיעין איומים או מהורדות ידניות. צריך לוודא שהקבצים האלה ממוקמים בספרייה שהסוכן של Bindplane עוקב אחריה.
Linux
יוצרים ספרייה לאחסון קובצי נתונים בפורמט STIX:
sudo mkdir -p /var/log/stixמגדירים את לקוח TAXII או את פלטפורמת מודיעין איומי סייבר לשמירת קובצי STIX ב-
/var/log/stix/.מוודאים שלחשבון השירות של סוכן Bindplane יש גישת קריאה לספרייה:
sudo chmod 755 /var/log/stix
Windows
יוצרים ספרייה לאחסון קובצי נתונים בפורמט STIX:
mkdir C:\Logs\stixמגדירים את לקוח TAXII או את פלטפורמת המודיעין על איומים לשמירת קובצי STIX בתיקייה `C:\Logs\stix`.
צריך לעדכן את הנתיב של סוכן Bindplane
includeב-config.yamlכך שיתאים ל:include: - C:\Logs\stix\*.json
טבלת מיפוי UDM
| שדה ביומן | מיפוי UDM | היגיון |
|---|---|---|
| entity.administrative_domain | הוגדר כ-'TEST' | |
| assetid_value | entity.asset.asset_id | ערך מ-assetid_value אם הוא לא ריק |
| condition_label, related_indicators_relationship_label, related_indicators_scope, indicator_types_label, valid_start_time_label, controlled_structure_label, marking_structure_label | entity.asset.attribute.labels | מיזוג מתוויות שונות |
| name | entity.file.full_path | הערך הועתק ישירות |
| val, hash.simple_hash_value, MD5_val, hash_value | entity.file.md5 | הערך מ-val אם הוא תואם לביטוי הרגולרי md5, אחרת hash.simple_hash_value אם הסוג הוא MD5, אחרת MD5_val, אחרת hash_value |
| value | entity.file.names | הערך הועתק ישירות |
| val, hash.simple_hash_value, sha1_val, hash_value | entity.file.sha1 | הערך מ-val אם הוא תואם לביטוי הרגולרי sha1, אחרת hash.simple_hash_value אם הסוג הוא SHA1, אחרת sha1_val, אחרת hash_value |
| val, hash.simple_hash_value, sha256val, sha_value, sha_value | entity.file.sha256 | הערך מ-val אם הוא תואם לביטוי הרגולרי sha256, אחרת hash.simple_hash_value אם הסוג הוא SHA256, אחרת sha256val, אחרת sha_value |
| observable.object.properties.value, dom, value, host, name, external_references.0.source_name | entity.hostname | הערך מ-observable.object.properties.value אם הסוג הוא FQDN, אחרת dom מ-grok, אחרת value אם הסוג הוא domain-name, אחרת host, אחרת name אם main_observable_type הוא domain/hostname, אחרת external_references.0.source_name |
| ip_val, ipval, ip, source_ip, value, src_ip | entity.ip | הערך מ-ip_val אם grok התאים, אחרת ipval אם הקטגוריה היא ipv4-addr, אחרת ip מהתבנית grok, אחרת source_ip, אחרת value אם הסוג הוא ipv4, אחרת src_ip מ-grok |
| source_port, src_port | entity.port | ערך מ-source_port או src_port |
| indicator_label, extension_value1, extension_value2, extension_value3, extension_value4, revoked_value, spec_version_value, object_marking_ref_value, label_value | entity.resource.attribute.labels | מיזוג מתוויות שונות |
| observable.object.properties.value, url_val, value, observable_properties_value | entity.url | הערך מ-observable.object.properties.value אם הסוג הוא URL, אחרת url_val מ-grok, אחרת value אם הסוג הוא URL, אחרת observable_properties_value אם הוא לא ריק |
| email_val, mail, value | entity.user.email_addresses | ערך מ-email_val אם grok התאים, אחרת mail מ-grok, אחרת ערך אם הסוג הוא email-addr |
| חותמת זמן | metadata.collected_timestamp | ההמרה בוצעה באמצעות התאמת תאריכים בפורמט ISO8601/RFC 3339 |
| כותרת, תיאור | metadata.description | ערך מהשם או מהתיאור |
| entity_type | metadata.entity_type | הערך הועתק ישירות |
| timestamp, valid_until | metadata.interval.end_time | הערך הומר מחותמת זמן או מ-valid_until באמצעות התאמת תאריך בפורמט ISO8601/RFC 3339 |
| timestamp, valid_from, created | metadata.interval.start_time | הערך הומר מחותמת זמן, valid_from, created או timestamp באמצעות התאמת תאריך ISO8601/RFC 3339 |
| id | metadata.product_entity_id | הערך הועתק ישירות |
| גרסה | metadata.product_version | הערך הועתק ישירות |
| threat_detail | metadata.threat | מוזג מ-threat_detail |
| threat_detail_category | threat.category | הערך הועתק ישירות |
| confidence_value, confidence, x_stix_confidence, x_ctix_confidence_score | threat.confidence_details | הערך מתוך confidence_value, אחרת confidence אם no_value, אחרת x_stix_confidence, אחרת x_ctix_confidence_score |
| value, confidence, x_ctix_confidence_score | threat.confidence_score | הערך מתוך הערך אם השם הוא Confidence Score, אחרת confidence, אחרת x_ctix_confidence_score, שהומר לערך מסוג float |
| property_label, sha512_value, observable_id, observable_object_id, keyword_label | threat.detection_fields | מיזוג מתוויות שונות |
| description | threat.description | הערך הועתק ישירות |
| value, extensions.extension-definition--ea279b3e-5c71-4632-ac08-831c66a786ba.score | threat.risk_score | הערך מתוך הערך אם השם הוא Risk, אחרת הציון של התוספים, שהומר לערך מסוג float |
| metadata.product_name | ההגדרה היא STIX | |
| metadata.vendor_name | ההגדרה היא STIX | |
dom |
event.idm.entity.entity.hostname |
מופה מיומן השינויים |
name |
event.idm.entity.entity.url |
מופה מיומן השינויים |
valid_from |
event.idm.entity.entity.resource.attribute.labels |
מופה מיומן השינויים |
valid_until |
event.idm.entity.entity.resource.attribute.labels |
מופה מיומן השינויים |
pattern_version |
event.idm.entity.entity.resource.attribute.labels |
מופה מיומן השינויים |
observable.object.properties.value.condition |
event.idm.entity.entity.asset.attribute.labels |
מופה מיומן השינויים |
handling.controlled_structure |
event.idm.entity.entity.asset.attribute.labels |
מופה מיומן השינויים |
handling.marking_structures.color |
event.idm.entity.entity.asset.attribute.labels |
מופה מיומן השינויים |
related_indicators.related_indicators |
event.idm.entity.entity.asset.attribute.labels |
מופה מיומן השינויים |
related_indicators.scope |
event.idm.entity.entity.asset.attribute.labels |
מופה מיומן השינויים |
indicator_types |
event.idm.entity.entity.asset.attribute.labels |
מופה מיומן השינויים |
valid_time_positions |
event.idm.entity.entity.asset.attribute.labels |
מופה מיומן השינויים |
observable.object.properties.custom_properties |
event.idm.entity.metadata.threat.detection_fields |
מופה מיומן השינויים |
observable.object.properties.value |
event.ioc.domain_and_ports.domain |
מופה מיומן השינויים |
mitre-extension-definition.extension_type |
entity.resource.attribute.labels.value |
מופה מיומן השינויים |
sco-extension-definition.extension_type |
entity.resource.attribute.labels.value |
מופה מיומן השינויים |
x_ctix_confidence_score |
threat_detail.confidence_score |
מופה מיומן השינויים |
modified |
timestamp |
מופה מיומן השינויים |
valid_from |
entity_event.metadata.interval.start_time |
מופה מיומן השינויים |
confidence |
threat_detail.confidence_score |
מופה מיומן השינויים |
name |
entity.entity.file.full_path |
מופה מיומן השינויים |
description |
threat_detail.description |
מופה מיומן השינויים |
external_references.0.source_name |
entity_event.entity.hostname |
מופה מיומן השינויים |
entity_type |
IP_ADDRESS |
מופה מיומן השינויים |
entity_type |
USER |
מופה מיומן השינויים |
entity_type |
FILE |
מופה מיומן השינויים |
entity_type |
DOMAIN_NAME |
מופה מיומן השינויים |
יומן שינויים
צפייה ביומן השינויים של מנתח התוכן הזה
הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.