איסוף יומנים של 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
  • גישה עם הרשאות ל-UI של Darktrace

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

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

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

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

התקנת הסוכן של Bindplane

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

התקנת חלונות

  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
    

    השירות אמור להופיע כ-active (running).

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

אפשרויות התקנה נוספות ופתרון בעיות מפורטים במדריך להתקנת סוכן 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: כתובת ה-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.
shost 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.