收集 Carbon Black EDR 記錄

支援的國家/地區:

本文說明如何使用 AWS S3,從雲端和地端環境收集 Carbon Black EDR 記錄。剖析器會從 JSON、CSV 或系統記錄格式的訊息中擷取欄位,並將這些欄位正規化,然後對應至 UDM。這項服務可處理各種 Carbon Black 事件類型,包括網路連線、程序事件、檔案修改、登錄檔變更和 IOC 命中,並視情況以威脅情報和裝置資訊擴充資料。

事前準備

請確認您已完成下列事前準備事項:

  • Google SecOps 執行個體。
  • AWS IAM 和 S3 的特殊權限。
  • 具備 Cloud 或地端部署 Carbon Black EDR 的特殊存取權。

設定 Carbon Black EDR 內部部署

為地端設定 Amazon S3 儲存空間

  1. 按照這份使用者指南建立 Amazon S3 值區建立值區
  2. 請儲存 bucket 的「名稱」和「區域」,以供後續使用。
  3. 按照這份使用者指南建立使用者:建立 IAM 使用者
  4. 選取建立的「使用者」
  5. 選取「安全憑證」分頁標籤。
  6. 在「Access Keys」部分中,按一下「Create Access Key」
  7. 選取「第三方服務」做為「用途」
  8. 點選「下一步」
  9. 選用:新增說明標記。
  10. 按一下「建立存取金鑰」
  11. 按一下「下載 CSV 檔案」,儲存「存取金鑰」和「私密存取金鑰」,以供日後使用。
  12. 按一下 [完成]
  13. 選取 [權限] 分頁標籤。
  14. 在「權限政策」部分,按一下「新增權限」
  15. 選取「新增權限」
  16. 選取「直接附加政策」
  17. 搜尋並選取 AmazonS3FullAccess 政策。
  18. 點選「下一步」
  19. 按一下「新增權限」

在內部部署 EDR 伺服器上安裝 cb-event-forwarder

  1. 如果沒有 CbOpenSource 存放區,請安裝:

    cd /etc/yum.repos.d
    curl -O https://opensource.carbonblack.com/release/x86_64/CbOpenSource.repo
    
  2. 使用 YUM 安裝 RPM

    yum install cb-event-forwarder
    
  3. 如果您使用 EDR 7.1.0 以上版本,請執行下列指令碼,設定 EDR 必要的適當權限

    /usr/share/cb/integrations/event-forwarder/cb-edr-fix-permissions.sh
    

設定 cb-event-forwarder 輸出 JSON 記錄

  1. 開啟設定檔:

    sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
    
  2. 修改下列參數:

    [event_forwarder]
    output_format=json   # Enable JSON format
    output_type=s3       # Send logs to AWS S3
    s3_bucket_name=YOUR-S3-BUCKET-NAME
    s3_region=YOUR-S3-BUCKET-NAME
    s3_access_key_id=YOUR_AWS_ACCESS_KEY
    s3_secret_access_key=YOUR_AWS_SECRET_KEY
    s3_prefix=carbonblack/edr/logs
    
  3. 使用鍵盤儲存並結束:

    • 依序按下 Ctrl + X、Y 和 Enter 鍵。
  4. 啟動 cb-event-forwarder:

    sudo systemctl enable cb-event-forwarder
    sudo systemctl restart cb-event-forwarder
    sudo systemctl status cb-event-forwarder
    

設定 Carbon Black Cloud Event Forwarder for S3

建立 AWS S3 Bucket

  1. 登入 AWS 管理主控台。
  2. 確認 AWS 區域與事件轉送程式的區域相符:
    1. AWS 控制台頁面中,找出區域。
    2. 使用下拉式選單選取活動轉送器的正確區域。
    3. 下表列出每個 Carbon Black EDR URL 適用的 AWS 區域。
      • 「instance-alias」.my.carbonblack.io - 區域:美國東部 (北維吉尼亞)維吉尼亞州) (us-east-1)
      • "instance-alias".my.cbcloud.de - 區域:歐洲 (法蘭克福) (eu-central-1)
      • "instance-alias".my.cbcloud.sg 區域:亞太地區 (新加坡) (ap-southeast-1)
  3. 選取「服務」
  4. 前往 S3 控制台。
  5. 按一下「建立值區」,開啟「建立值區」精靈。
    1. 在「Bucket name」(值區名稱) 中,輸入值區的專屬名稱 (例如 CB-EDR)。
    2. 確認「區域」預設為您先前選取的區域。
    3. 更新「封鎖公開存取」預設值,允許公開存取 (將記錄檔擷取至 Google SecOps 時,必須允許公開存取)。
    4. 選取「建立 bucket」

設定 S3 值區,允許事件轉送器寫入事件

  1. 請按照這份使用者指南建立使用者建立 IAM 使用者
  2. 選取建立的「使用者」
  3. 選取「安全憑證」分頁標籤。
  4. 在「Access Keys」部分中,按一下「Create Access Key」
  5. 選取「第三方服務」做為「用途」
  6. 點選「下一步」
  7. 選用:新增說明標記。
  8. 按一下「建立存取金鑰」
  9. 按一下「下載 CSV 檔案」,儲存「存取金鑰」和「私密存取金鑰」,以供日後使用。
  10. 按一下 [完成]
  11. 選取 [權限] 分頁標籤。
  12. 在「權限政策」部分,按一下「新增權限」
  13. 選取「新增權限」
  14. 選取「直接附加政策」
  15. 搜尋 AmazonS3FullAccess 政策。
  16. 選取政策。
  17. 點選「下一步」
  18. 按一下「新增權限」

在 EDR 控制台中設定事件轉送

  1. 登入 VMware Carbon Black Cloud。
  2. 前往「事件轉送器」分頁
  3. 啟用產品要上傳至 S3 的事件。
  4. 前往「輸出和類型」,然後設為「S3」
  5. 請提供 S3 值區名稱,格式如下:<region>:<bucket-name> (例如 us-east-1:cb-edr)。
  6. 選取 INI 格式的「上傳 AWS 憑證」檔案。
  7. 以下是設定檔範例:

    AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE
    AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY
    Default region name [None]: us-east-1
    
  8. 按一下「儲存」,然後重新啟動服務,變更就會生效。

設定動態饋給

在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:

  • 「SIEM 設定」>「動態消息」
  • 內容中心 > 內容包

依序前往「SIEM 設定」>「動態饋給」,設定動態饋給

如要設定動態消息,請按照下列步驟操作:

  1. 依序前往「SIEM 設定」>「動態消息」
  2. 按一下「新增動態消息」
  3. 在下一個頁面中,按一下「設定單一動態饋給」
  4. 在「動態饋給名稱」欄位中,輸入動態饋給的名稱 (例如「Carbon Black EDR Logs」)。
  5. 選取「Amazon S3」做為「來源類型」
  6. 選取「Carbon Black EDR」做為「記錄類型」
  7. 點選「下一步」
  8. 指定下列輸入參數的值:

    • 區域:Amazon S3 值區所在的區域。
    • S3 URI:值區 URI。
      • s3:/BUCKET_NAME
        • 請將 BUCKET_NAME 替換為實際值區名稱。
    • URI 為:根據記錄串流設定選取 URI_TYPE (單一檔案 | 目錄 | 包含子目錄的目錄)。
    • 來源刪除選項:根據偏好選取刪除選項。
    • 存取金鑰 ID:具有 S3 值區存取權的使用者存取金鑰。
    • 存取密鑰:具有 S3 bucket 存取權的使用者私密金鑰。
  9. 點選「下一步」

  10. 在「Finalize」畫面上檢查新的動態饋給設定,然後按一下「Submit」

從內容中心設定動態饋給

為下列欄位指定值:

  • 區域:Amazon S3 值區所在的區域。
  • S3 URI:值區 URI。
    • s3:/BUCKET_NAME
      • 請將 BUCKET_NAME 替換為實際值區名稱。
  • URI 為:根據記錄串流設定選取 URI_TYPE (單一檔案 | 目錄 | 包含子目錄的目錄)。
  • 來源刪除選項:根據偏好選取刪除選項。
  • 存取金鑰 ID:具有 S3 值區存取權的使用者存取金鑰。
  • 存取密鑰:具有 S3 bucket 存取權的使用者私密金鑰。

進階選項

  • 動態饋給名稱:系統預先填入的值,用於識別動態饋給。
  • 來源類型:將記錄收集到 Google SecOps 的方法。
  • 資產命名空間:與動態饋給相關聯的命名空間。
  • 擷取標籤:套用至這個動態饋給所有事件的標籤。

UDM 對應表

記錄欄位 UDM 對應 邏輯
action security_result.detection_fields[?key == 'action'].value 原始記錄中的 action 欄位值。
cb_server intermediary.hostname 原始記錄中的 cb_server 欄位值。
cb_version metadata.product_version 原始記錄中的 cb_version 欄位值。
child_pid target.process.pid (適用於 ingress.event.childproc 項活動) typeingress.event.childproc 時,原始記錄中的 child_pid 欄位值。
child_process_guid target.process.product_specific_process_id (適用於 ingress.event.childproc 項活動) 「CB:」與原始記錄中 child_process_guid 欄位的值串連,前提是 typeingress.event.childproc
child_username target.user.userid (適用於 ingress.event.childproc 項活動) typeingress.event.childproc 時,原始記錄中的 child_username 欄位值。
childproc_guid target.process.product_specific_process_id (適用於 endpoint.event.procstart 項活動) 「CB:」與原始記錄中 childproc_guid 欄位的值串連,前提是 typeendpoint.event.procstart
childproc_hash.0 target.process.file.md5 (適用於 endpoint.event.procstart 項活動) typeendpoint.event.procstart 時,原始記錄中的 childproc_hash 陣列第一個元素。
childproc_hash.1 target.process.file.sha256 (適用於 endpoint.event.procstart 項活動) typeendpoint.event.procstart 時,原始記錄中的 childproc_hash 陣列第二個元素。
childproc_name target.process.file.full_path (適用於 endpoint.event.procstart 項活動) typeendpoint.event.procstart 時,原始記錄中的 childproc_name 欄位值。
childproc_pid target.process.pid (適用於 endpoint.event.procstart 項活動) typeendpoint.event.procstart 時,原始記錄中的 childproc_pid 欄位值。
childproc_publisher.0.name security_result.detection_fields[?key == 'childproc_publisher_name'].value (適用於 endpoint.event.procstart 項活動) 「childproc_publisher_name:」與原始記錄中的 childproc_publisher.0.name 值串連,前提是 typeendpoint.event.procstart
childproc_publisher.0.state security_result.detection_fields[?key == 'childproc_publisher_state'].value (適用於 endpoint.event.procstart 項活動) 「childproc_publisher_state:」與原始記錄中的 childproc_publisher.0.state 值串連,前提是 typeendpoint.event.procstart
childproc_reputation security_result.detection_fields[?key == 'childproc_reputation'].value (適用於 endpoint.event.procstart 項活動) typeendpoint.event.procstart 時,原始記錄中的 childproc_reputation 欄位值。
childproc_username target.user.userid (適用於 endpoint.event.procstart 項活動) typeendpoint.event.procstart 時,原始記錄中的 childproc_username 欄位值。
clientIp principal.ipprincipal.asset.ip 原始記錄中的 clientIp 欄位值。
cmdline target.process.command_line (適用於 feed.query.hit.processfeed.storage.hit.process 事件)、additional.fields[?key == 'cmdline_*'].value.string_value (適用於 watchlist.storage.hit.process 事件) typefeed.query.hit.processfeed.storage.hit.process 時,原始記錄中的 cmdline 欄位值。如果是 watchlist.storage.hit.process 事件,則會儲存在 additional.fields 中,並使用「cmdline_*」鍵。
command_line target.process.command_line (適用於 ingress.event.procstart 項活動) typeingress.event.procstart 時,原始記錄中的 command_line 欄位值。
comms_ip intermediary.ip 原始記錄中的 comms_ip 欄位值。
computer_name principal.hostnameprincipal.asset.hostname 原始記錄中的 computer_name 欄位值。
crossproc_api additional.fields[?key == 'crossproc_api'].value.string_value (適用於 endpoint.event.apicall 項活動) typeendpoint.event.apicall 時,原始記錄中的 crossproc_api 欄位值。
crossproc_guid additional.fields[?key == 'crossproc_guid'].value.string_value (適用於 endpoint.event.crossproc 項活動) typeendpoint.event.crossproc 時,原始記錄中的 crossproc_guid 欄位值。
crossproc_hash.0 additional.fields[?key == 'crossproc_md5'].value.string_value (適用於 endpoint.event.crossproc 項活動) typeendpoint.event.crossproc 時,原始記錄中的 crossproc_hash 陣列第一個元素。
crossproc_hash.1 additional.fields[?key == 'crossproc_sha256'].value.string_value (適用於 endpoint.event.crossproc 項活動) typeendpoint.event.crossproc 時,原始記錄中的 crossproc_hash 陣列第二個元素。
crossproc_name target.process.file.full_path (適用於 endpoint.event.crossproc 項活動) typeendpoint.event.crossproc 時,原始記錄中的 crossproc_name 欄位值。
crossproc_publisher.0.name security_result.detection_fields[?key == 'crossproc_publisher_name'].value (適用於 endpoint.event.crossproc 項活動) 「crossproc_publisher_name:」與原始記錄中 crossproc_publisher.0.name 的值串連,前提是 typeendpoint.event.crossproc
crossproc_publisher.0.state security_result.detection_fields[?key == 'crossproc_publisher_state'].value (適用於 endpoint.event.crossproc 項活動) 「crossproc_publisher_state:」與原始記錄中 crossproc_publisher.0.state 的值串連,前提是 typeendpoint.event.crossproc
crossproc_reputation additional.fields[?key == 'crossproc_reputation'].value.string_value (適用於 endpoint.event.crossproc 項活動) typeendpoint.event.crossproc 時,原始記錄中的 crossproc_reputation 欄位值。
crossproc_target additional.fields[?key == 'crossproc_target'].value.string_value (適用於 endpoint.event.crossproc 項活動) typeendpoint.event.crossproc 時,原始記錄中的 crossproc_target 欄位值。轉換為字串「true」或「false」。

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。