איסוף יומנים של Darktrace

גרסת מנתח הנתונים: 19.0

נתמך ב:

במאמר הזה מוסבר איך להטמיע יומנים של Darktrace ב-Google Security Operations באמצעות סוכן Bindplane.

‫Darktrace היא פלטפורמת סייבר מבוססת-AI שמזהה איומים ואנומליות בזמן אמת. הכלי לניתוח נתונים מטפל ביומני Darktrace בפורמט CEF וגם בפורמט JSON, מחלץ שדות וממפה אותם למודל הנתונים המאוחד (UDM).

לפני שמתחילים

חשוב לוודא שמתקיימות הדרישות המוקדמות הבאות:

  • מופע של Google SecOps
  • ‫Windows Server 2016 ואילך, או מארח Linux עם systemd
  • קישוריות לרשת בין סוכן Bindplane לבין מכשיר Darktrace
  • אם מריצים את הסוכן מאחורי שרת proxy, מוודאים שיציאות חומת האש פתוחות בהתאם לדרישות של סוכן Bindplane
  • גישת הרשאות ל-Darktrace web UI

קבלת קובץ אימות להטמעת נתונים ב-Google SecOps

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Collection Agents (הגדרות SIEM > סוכני איסוף).
  3. מורידים את קובץ האימות להטמעת נתונים.
  4. שומרים את הקובץ בצורה מאובטחת במערכת שבה יותקן סוכן Bindplane.

איך מקבלים את מספר הלקוח ב-Google SecOps

  1. נכנסים למסוף Google SecOps.
  2. עוברים אל SIEM Settings > Profile (הגדרות SIEM > פרופיל).
  3. מעתיקים את מזהה הלקוח מהקטע פרטי הארגון ושומרים אותו.

התקנת סוכן Bindplane

מתקינים את סוכן Bindplane במערכת ההפעלה Windows או Linux לפי ההוראות הבאות.

התקנת Windows

  1. פותחים את שורת הפקודה או את PowerShell כאדמין.
  2. מריצים את הפקודה הבאה:

    msiexec /i "https://github.com/observIQ/bindplane-agent/releases/latest/download/observiq-otel-collector.msi" /quiet
    
  3. מחכים שההתקנה תסתיים.

  4. כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:

    sc query observiq-otel-collector
    

    השירות אמור להופיע עם הערך RUNNING.

התקנה של Linux

  1. פותחים טרמינל עם הרשאות root או sudo.
  2. מריצים את הפקודה הבאה:

    sudo sh -c "$(curl -fsSlL https://github.com/observiq/bindplane-agent/releases/latest/download/install_unix.sh)" install_unix.sh
    
  3. מחכים שההתקנה תסתיים.

  4. כדי לוודא שההתקנה בוצעה, מריצים את הפקודה:

    sudo systemctl status observiq-otel-collector
    

    השירות צריך להופיע כפעיל (פועל).

מקורות מידע נוספים להתקנה

אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן Bindplane.

הגדרה של סוכן Bindplane להטמעה של syslog ושליחה אל Google SecOps

איתור קובץ התצורה

  • Linux:

    sudo nano /etc/bindplane-agent/config.yaml
    
  • Windows:

    notepad "C:\Program Files\observIQ OpenTelemetry Collector\config.yaml"
    

עריכת קובץ התצורה

  • מחליפים את כל התוכן של config.yaml בהגדרה הבאה:

    receivers:
        tcplog:
            listen_address: "0.0.0.0:10282"
    
    exporters:
        chronicle/darktrace:
            compression: gzip
            creds_file_path: '/etc/bindplane-agent/ingestion-auth.json'
            customer_id: '<customer_id>'
            endpoint: malachiteingestion-pa.googleapis.com
            log_type: DARKTRACE
            raw_log_field: body
    
    service:
        pipelines:
            logs/darktrace_to_chronicle:
                receivers:
                    - tcplog
                exporters:
                    - chronicle/darktrace
    

פרמטרים להגדרה

מחליפים את ה-placeholders הבאים:

  • הגדרת מקלט:

    • listen_address: כתובת ה-IP והיציאה להאזנה:
      • 0.0.0.0 כדי להאזין בכל הממשקים (מומלץ)
      • יציאה 10282 היא יציאת ברירת המחדל של Darktrace CEF syslog (צריך לשנות לפי הצורך)
  • הגדרות של הכלי לייצוא:

    • creds_file_path: הנתיב המלא לקובץ האימות להטמעת נתונים:
      • Linux: /etc/bindplane-agent/ingestion-auth.json
      • Windows: C:\Program Files\observIQ OpenTelemetry Collector\ingestion-auth.json
    • customer_id: מספר הלקוח שהועתק ממסוף Google SecOps
    • endpoint: Regional endpoint URL:
      • ארה"ב: malachiteingestion-pa.googleapis.com
      • אירופה: europe-malachiteingestion-pa.googleapis.com
      • אסיה: asia-southeast1-malachiteingestion-pa.googleapis.com
      • רשימה מלאה מופיעה במאמר בנושא נקודות קצה אזוריות.

שמירת קובץ ההגדרות

  • אחרי שמסיימים לערוך, שומרים את הקובץ:
    • Linux: מקישים על Ctrl+O, אחר כך על Enter ואז על Ctrl+X
    • Windows: לוחצים על קובץ > שמירה.

מפעילים מחדש את סוכן Bindplane כדי להחיל את השינויים.

  • כדי להפעיל מחדש את סוכן Bindplane ב-Linux, מריצים את הפקודה הבאה:

    sudo systemctl restart observiq-otel-collector
    
    1. מוודאים שהשירות פועל:

      sudo systemctl status observiq-otel-collector
      
    2. בודקים אם יש שגיאות ביומנים:

      sudo journalctl -u observiq-otel-collector -f
      
  • כדי להפעיל מחדש את סוכן Bindplane ב-Windows, בוחרים באחת מהאפשרויות הבאות:

    • שורת פקודה או PowerShell כאדמין:

      net stop observiq-otel-collector && net start observiq-otel-collector
      
    • מסוף השירותים:

      1. מקישים על Win+R, מקלידים services.msc ומקישים על Enter.
      2. מחפשים את observIQ OpenTelemetry Collector.
      3. לוחצים לחיצה ימנית ובוחרים באפשרות הפעלה מחדש.
      4. מוודאים שהשירות פועל:

        sc query observiq-otel-collector
        
      5. בודקים אם יש שגיאות ביומנים:

        type "C:\Program Files\observIQ OpenTelemetry Collector\log\collector.log"
        

הגדרת syslog ב-Darktrace

  1. נכנסים לממשק המשתמש באינטרנט של Darktrace.
  2. עוברים אל Admin > System Config.
  3. לוחצים על אימות הגדרות ההתראות.
  4. מזינים את פרטי ההגדרה הבאים:
    • CEF Syslog Alerts: בוחרים באפשרות True.
    • שרת CEF Syslog: מזינים את כתובת ה-IP של Bindplane.
    • יציאת שרת Syslog של CEF: מזינים את מספר היציאה של Bindplane (לדוגמה, 10282).
    • CEF Syslog TCP Alert: בוחרים באפשרות True.
  5. לוחצים על Save.

יומנים לדוגמה של Darktrace שנתמכים

  • ‫SYSLOG + KV (CEF)

    {
    "acknowledged": false,
    "commentCount": 0,
    "pbid": 900000001,
    "time": 1604055367000,
    "creationTime": 1604055367000,
    "model": {
        "name": "Compromise::Agent Beacon to New Endpoint",
        "uuid": "dfd6f10b-b91c-4244-9fd5-7c35caf21b33",
        "description": "A device is initiating multiple connections to a new external endpoint...",
        "priority": 2,
        "category": "Informational",
        "mitre": {
        "tactics": [
            "command-and-control"
        ],
        "techniques": [
            "T1071.001"
        ]
        }
    },
    "triggeredComponents": [
        {
        "time": 1677679818000,
        "ip": " ",
        "port": 443,
        "metric": {
            "name": "externalconnections"
        },
        "triggeredFilters": [
            {
            "filterType": "Connection hostname",
            "trigger": {
                "value": "beacon.external.io"
            }
            }
        ]
        }
    ],
    "score": 0.85,
    "device": {
        "did": 90001,
        "macaddress": " ",
        "ip": " ",
        "hostname": "user-laptop-1"
    }
    }
    
  • ‫SYSLOG + JSON

    {
    "dpi_engine": "dt-sensor-101",
    "proto": "tcp",
    "source_ip": " ",
    "source_port": 51000,
    "dest_ip": " ",
    "dest_port": 389,
    "src": " ",
    "dst": " ",
    "details": "AP request: srealm is [TESTDOMAIN.LOCAL], service is [LDAP/DC99.testdomain.local/testdomain.local], ST cipher is [aes256-cts-hmac-sha1-96]",
    "epochdate": 1690471502.2252,
    "@host": "log-collector-host",
    "uid": "ABCDEFGHIJ1234567890",
    "note": "KERBEROS::App",
    "@type": "notice"
    }
    

טבלת מיפוי UDM

שדה ביומן מיפוי UDM לוגיקה
darktraceUrl security_result.url_back_to_product הערך נלקח מהשדה darktraceUrl.
darktrace_host observer.hostname הערך נלקח מהשדה darktrace_host אם הוא לא כתובת IP.
darktrace_ip observer.ip הערך נלקח מהשדה darktrace_ip.
darktrace_user observer.user.userid הערך נלקח מהשדה darktrace_user.
description security_result.summary, metadata.description הערך נלקח מהשדה description.
device.customFields.DT-AUTO.macaddress principal.mac הערך נלקח מהשדה device.customFields.DT-AUTO.macaddress.
device.did principal.asset.asset_id הערך נלקח מהשדה device.did, מומר למחרוזת ומקבל את הקידומת Device ID:.
device.firstSeen principal.asset.first_seen_time הערך נלקח מהשדה device.firstSeen, מומר למחרוזת ומנותח כחותמת זמן של מערכת UNIX באלפיות השנייה.
device.hostname principal.hostname, principal.asset.hostname הערך נלקח מהשדה device.hostname.
device.ip principal.ip, principal.asset.ip הערך נלקח מהשדה device.ip אם הוא תואם לפורמט של כתובת IP.
device.ips.0.subnet additional.fields.subnet הערך נלקח מהשדה device.ips.0.subnet ומוסף לו הקידומת subnet.
device.ips.ip principal.ip, principal.asset.ip הערך נלקח מהשדה device.ips.ip לכל כתובת IP ברשימה.
device.lastSeen principal.asset.last_discover_time הערך נלקח מהשדה device.lastSeen, מומר למחרוזת ומנותח כחותמת זמן של מערכת UNIX באלפיות השנייה.
device.macaddress principal.mac הערך נלקח מהשדה device.macaddress.
device.objecttype principal.asset.type אם הערך הוא device, השדה UDM מוגדר כ-WORKSTATION.
device.sid principal.resource.attribute.labels.sid הערך נלקח מהשדה device.sid ומומר למחרוזת.
device.typelabel principal.resource.attribute.labels.typelabel הערך נלקח מהשדה device.typelabel.
device.typename principal.resource.attribute.labels.typename הערך נלקח מהשדה device.typename.
dst target.ip, target.asset.ip הערך נלקח מהשדה dst.
dpt target.port הערך נלקח מהשדה dpt ומומר למספר שלם.
dvc principal.ip, principal.asset.ip אם הערך של dvc הוא כתובת IP, הוא מתווסף לשדה UDM.
dvchost principal.hostname, principal.asset.hostname הערך נלקח מהשדה dvchost.
endpoint target.url הערך נלקח מהשדה endpoint.
event_time metadata.event_timestamp הערך נלקח מהשדה event_time ומנותח כחותמת זמן בפורמט ISO8601.
externalId metadata.product_log_id הערך נלקח מהשדה externalId.
incidentEventUrl principal.url הערך נלקח מהשדה incidentEventUrl.
ip principal.ip, principal.asset.ip הערך נלקח מהשדה ip אם הוא תואם לפורמט של כתובת IP.
issue_msg security_result.summary הערך נלקח מהשדה issue_msg.
הודעה security_result.description הערך נלקח מהשדה message.
method network.http.method הערך נלקח מהשדה method.
model.description metadata.description הערך נלקח מהשדה model.description.
model.name metadata.product_event_type הערך נלקח מהשדה model.name.
model.now.category security_result.severity אם הערך הוא critical, השדה UDM מוגדר כ-CRITICAL. אם הערך הוא Informational, השדה UDM מוגדר כ-INFORMATIONAL. אם הערך הוא Suspicious, השדה UDM מוגדר ל-HIGH והקטגוריה מוגדרת ל-NETWORK_SUSPICIOUS.
model.now.description metadata.description הערך נלקח מהשדה model.now.description.
model.now.message security_result.description הערך נלקח מהשדה model.now.message.
model.now.name metadata.product_event_type הערך נלקח מהשדה model.now.name.
model.now.pid principal.process.pid הערך נלקח מהשדה model.now.pid ומומר למחרוזת.
model.now.uuid principal.user.userid הערך נלקח מהשדה model.now.uuid וסוג האירוע מוגדר כ-USER_UNCATEGORIZED.
model.pid principal.process.pid הערך נלקח מהשדה model.pid ומומר למחרוזת.
model.then.description principal.resource.attribute.labels.Model Then Description הערך נלקח מהשדה model.then.description.
model.then.name principal.resource.attribute.labels.Model Then Name הערך נלקח מהשדה model.then.name.
model.then.pid principal.resource.attribute.labels.Model Then Pid הערך נלקח מהשדה model.then.pid ומומר למחרוזת.
model.then.uuid principal.resource.attribute.labels.Model Then UUID הערך נלקח מהשדה model.then.uuid.
model.uuid principal.user.userid הערך נלקח מהשדה model.uuid וסוג האירוע מוגדר כ-USER_UNCATEGORIZED.
relatedBreaches.0.modelName security_result.description הערך נלקח מהשדה relatedBreaches.0.modelName.
score security_result.priority, security_result.priority_details אם הערך הוא בין 0.8 ל-1, העדיפות מוגדרת כHIGH_PRIORITY. אם הערך הוא בין 0.5 ל-0.79, העדיפות מוגדרת כMEDIUM_PRIORITY. אם הערך הוא בין 0 ל-0.49, העדיפות מוגדרת כ-LOW_PRIORITY. פרטי העדיפות מוגדרים כ-Score : ואחריהם הערך של score שהומר למחרוזת.
severity security_result.severity אם הערך הוא 2, השדה UDM מוגדר ל-MEDIUM. אם הערך גדול מ-2, השדה UDM מוגדר ל-HIGH.
שוש principal.hostname, principal.asset.hostname הערך נלקח מהשדה shost.
smac principal.mac הערך נלקח מהשדה smac.
src principal.ip, principal.asset.ip הערך נלקח מהשדה src.
סטטוס network.http.response_code הערך נלקח מהשדה status ומומר למחרוזת.
סיכום metadata.description הערך נלקח מהשדה summary.
פעם הערך נלקח מהשדה time, מומר למחרוזת ומנותח כחותמת זמן של מערכת UNIX באלפיות השנייה.
חותמת זמן הערך נלקח מהשדה timestamp ומנותח כחותמת זמן בפורמט ISO8601 או כחותמת זמן של מערכת UNIX באלפיות השנייה.
כותרת security_result.summary הערך נלקח מהשדה title.
triggeredComponents.ip intermediary.ip הערך נלקח מהשדה triggeredComponents.ip אם הוא תואם לפורמט של כתובת IP.
triggeredComponents.port intermediary.port הערך נלקח מהשדה triggeredComponents.port ומומר למספר שלם.
שם משתמש principal.user.userid הערך נלקח מהשדה username.
metadata.vendor_name הוגדר לערך DARKTRACE.
metadata.product_name הוגדר לערך DCIP.
metadata.log_type הוגדר לערך DARKTRACE.
network.ip_protocol הערך הוא TCP אם issue_msg לא מכיל את UDP. אחרת, הערך הוא UDP.
security_result.action הערך הוא BLOCK אם status הוא 401, אחרת הערך הוא ALLOW.
security_result.severity הוגדר לערך INFORMATIONAL.
network.application_protocol הערך הוא HTTP אם method לא ריק.
metadata.event_type הערך הוא NETWORK_HTTP אם method לא ריק. הערך הוא USER_LOGIN אם description מכיל logged into \\\\S+ over ssh. הערך הוא NETWORK_CONNECTION אם target_ip לא ריק. אחרת, מגדירים את הערך STATUS_UPDATE.
extensions.auth.type הערך הוא MACHINE אם description מכיל logged into \\\\S+ over ssh.
security_result.category הערך הוא DATA_EXFILTRATION אם issue_msg מכיל Exfiltration. הערך הוא NETWORK_MALICIOUS אם issue_msg מכיל Compromise. אחרת, מגדירים את הערך NETWORK_SUSPICIOUS.
percentScore event.idm.read_only_udm.additional.fields מופה מיומן השינויים
device.credentials event.idm.read_only_udm.target.user.userid מופה מיומן השינויים
url event.idm.read_only_udm.principal.url מופה מיומן השינויים
username event.idm.read_only_udm.principal.user.userid מופה מיומן השינויים
iris-event-type event.idm.read_only_udm.metadata.product_event_type מופה מיומן השינויים
inhibitor event.idm.read_only_udm.target.ip מופה מיומן השינויים
inhibitor event.idm.read_only_udm.target.asset.ip מופה מיומן השינויים
inhibitor event.idm.read_only_udm.target.port מופה מיומן השינויים
device.os event.idm.read_only_udm.principal.platform מופה מיומן השינויים
device.typename event.idm.read_only_udm.principal.asset.type מופה מיומן השינויים
device.ossource event.idm.read_only_udm.additional.fields מופה מיומן השינויים
model.tags event.idm.read_only_udm.additional.fields מופה מיומן השינויים
codeid event.idm.read_only_udm.security_result.rule_id מופה מיומן השינויים
inhibitor event.idm.read_only_udm.security_result.description מופה מיומן השינויים
host_ip event.idm.read_only_udm.intermediary.ip מופה מיומן השינויים
technique_data event.idm.read_only_udm.security_result.attack_details.techniques מופה מיומן השינויים
tactics_data event.idm.read_only_udm.security_result.attack_details.tactics מופה מיומן השינויים
model.created.userid principal.user.userid מופה מיומן השינויים
model.edited.userid additional.fields מופה מיומן השינויים
direction network.direction מופה מיומן השינויים
filterType" under "triggeredFilters additional.fields מופה מיומן השינויים
trigger.value" under "triggeredFilters additional.fields מופה מיומן השינויים
from principal.user.email_addresses מופה מיומן השינויים
subject metadata.description מופה מיומן השינויים
anomaly_score", "tags", "link_hosts", and "message_id additional.fields מופה מיומן השינויים
recipients observer.user.email_addresses מופה מיומן השינויים
attachment_sha1s" and "attachment_sha256s security_result.detection_fields מופה מיומן השינויים
triggeredFilter.trigger.value target.ip מופה מיומן השינויים
from network.email.from מופה מיומן השינויים
subject network.email.subject מופה מיומן השינויים
attachment_sha1s", "attachment_sha256s", "recipients", "link_hosts", "tags", "actions", "anomaly_score", "message_id security_result.detection_fields מופה מיומן השינויים
model.name principal.user.user_display_name מופה מיומן השינויים
breachUrl security_result.url_back_to_product מופה מיומן השינויים
device.typelabel", "device.sid", "device.typename principal.resource.attribute.labels מופה מיומן השינויים
device.ips.0.subnet additional_fields מופה מיומן השינויים
device.device.lastSeen principal.asset.last_seen_time מופה מיומן השינויים
mitreTechniques security_result.attack_details.techniques מופה מיומן השינויים
details sec_result.about.resource.attribute.labels מופה מיומן השינויים
principal_port_no principal.port מופה מיומן השינויים
location principal.location.country_or_region מופה מיומן השינויים
target_host target.hostname מופה מיומן השינויים
source_ip principal.ip מופה מיומן השינויים
source_port principal.port מופה מיומן השינויים
dest_ip target.ip מופה מיומן השינויים
dest_port target.port מופה מיומן השינויים
@host principal.hostname מופה מיומן השינויים
note principal.application מופה מיומן השינויים
@type sec_result.about.resource.attribute.labels מופה מיומן השינויים
opcode sec_result.about.resource.attribute.labels מופה מיומן השינויים
trans_id sec_result.about.resource.attribute.labels מופה מיומן השינויים
query_class sec_result.about.resource.attribute.labels מופה מיומן השינויים
deviceMacAddress principal.mac מופה מיומן השינויים

שנה רישום

צפייה ביומן השינויים של כלי הניתוח הזה

הבעיה עדיין לא נפתרה? קבלת תשובות מחברי הקהילה וממומחי Google SecOps.