收集 Carbon Black EDR 記錄
支援的國家/地區:
Google SecOps
SIEM
本文說明如何使用 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 儲存空間
- 按照這份使用者指南建立 Amazon S3 值區:建立值區
- 請儲存 bucket 的「名稱」和「區域」,以供後續使用。
- 按照這份使用者指南建立使用者:建立 IAM 使用者。
- 選取建立的「使用者」。
- 選取「安全憑證」分頁標籤。
- 在「Access Keys」部分中,按一下「Create Access Key」。
- 選取「第三方服務」做為「用途」。
- 點選「下一步」。
- 選用:新增說明標記。
- 按一下「建立存取金鑰」。
- 按一下「下載 CSV 檔案」,儲存「存取金鑰」和「私密存取金鑰」,以供日後使用。
- 按一下 [完成]。
- 選取 [權限] 分頁標籤。
- 在「權限政策」部分,按一下「新增權限」。
- 選取「新增權限」。
- 選取「直接附加政策」。
- 搜尋並選取 AmazonS3FullAccess 政策。
- 點選「下一步」。
- 按一下「新增權限」。
在內部部署 EDR 伺服器上安裝 cb-event-forwarder
如果沒有 CbOpenSource 存放區,請安裝:
cd /etc/yum.repos.d curl -O https://opensource.carbonblack.com/release/x86_64/CbOpenSource.repo
使用 YUM 安裝 RPM:
yum install cb-event-forwarder
如果您使用 EDR 7.1.0 以上版本,請執行下列指令碼,設定 EDR 必要的適當權限:
/usr/share/cb/integrations/event-forwarder/cb-edr-fix-permissions.sh
設定 cb-event-forwarder 輸出 JSON 記錄
開啟設定檔:
sudo nano /etc/cb/integrations/event-forwarder/cb-event-forwarder.conf
修改下列參數:
[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
使用鍵盤儲存並結束:
- 依序按下 Ctrl + X、Y 和 Enter 鍵。
啟動 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
- 登入 AWS 管理主控台。
- 確認 AWS 區域與事件轉送程式的區域相符:
- 在 AWS 控制台頁面中,找出區域。
- 使用下拉式選單選取活動轉送器的正確區域。
- 下表列出每個 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)
- 選取「服務」。
- 前往 S3 控制台。
- 按一下「建立值區」,開啟「建立值區」精靈。
- 在「Bucket name」(值區名稱) 中,輸入值區的專屬名稱 (例如 CB-EDR)。
- 確認「區域」預設為您先前選取的區域。
- 更新「封鎖公開存取」預設值,允許公開存取 (將記錄檔擷取至 Google SecOps 時,必須允許公開存取)。
- 選取「建立 bucket」。
設定 S3 值區,允許事件轉送器寫入事件
- 請按照這份使用者指南建立使用者:建立 IAM 使用者。
- 選取建立的「使用者」。
- 選取「安全憑證」分頁標籤。
- 在「Access Keys」部分中,按一下「Create Access Key」。
- 選取「第三方服務」做為「用途」。
- 點選「下一步」。
- 選用:新增說明標記。
- 按一下「建立存取金鑰」。
- 按一下「下載 CSV 檔案」,儲存「存取金鑰」和「私密存取金鑰」,以供日後使用。
- 按一下 [完成]。
- 選取 [權限] 分頁標籤。
- 在「權限政策」部分,按一下「新增權限」。
- 選取「新增權限」。
- 選取「直接附加政策」。
- 搜尋 AmazonS3FullAccess 政策。
- 選取政策。
- 點選「下一步」。
- 按一下「新增權限」。
在 EDR 控制台中設定事件轉送
- 登入 VMware Carbon Black Cloud。
- 前往「事件轉送器」分頁
- 啟用產品要上傳至 S3 的事件。
- 前往「輸出和類型」,然後設為「S3」。
- 請提供 S3 值區名稱,格式如下:
<region>:<bucket-name>
(例如us-east-1:cb-edr
)。 - 選取 INI 格式的「上傳 AWS 憑證」檔案。
以下是設定檔範例:
AWS Access Key ID [None]: AKIAIOSFODNN7EXAMPLE AWS Secret Access Key [None]: wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY Default region name [None]: us-east-1
按一下「儲存」,然後重新啟動服務,變更就會生效。
設定動態饋給
在 Google SecOps 平台中,有兩種不同的進入點可設定動態饋給:
- 「SIEM 設定」>「動態消息」
- 內容中心 > 內容包
依序前往「SIEM 設定」>「動態饋給」,設定動態饋給
如要設定動態消息,請按照下列步驟操作:
- 依序前往「SIEM 設定」>「動態消息」。
- 按一下「新增動態消息」。
- 在下一個頁面中,按一下「設定單一動態饋給」。
- 在「動態饋給名稱」欄位中,輸入動態饋給的名稱 (例如「Carbon Black EDR Logs」)。
- 選取「Amazon S3」做為「來源類型」。
- 選取「Carbon Black EDR」做為「記錄類型」。
- 點選「下一步」。
指定下列輸入參數的值:
- 區域:Amazon S3 值區所在的區域。
- S3 URI:值區 URI。
s3:/BUCKET_NAME
- 請將
BUCKET_NAME
替換為實際值區名稱。
- 請將
- URI 為:根據記錄串流設定選取 URI_TYPE (單一檔案 | 目錄 | 包含子目錄的目錄)。
- 來源刪除選項:根據偏好選取刪除選項。
- 存取金鑰 ID:具有 S3 值區存取權的使用者存取金鑰。
- 存取密鑰:具有 S3 bucket 存取權的使用者私密金鑰。
點選「下一步」。
在「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 項活動) |
type 為 ingress.event.childproc 時,原始記錄中的 child_pid 欄位值。 |
child_process_guid |
target.process.product_specific_process_id (適用於 ingress.event.childproc 項活動) |
「CB:」與原始記錄中 child_process_guid 欄位的值串連,前提是 type 為 ingress.event.childproc 。 |
child_username |
target.user.userid (適用於 ingress.event.childproc 項活動) |
type 為 ingress.event.childproc 時,原始記錄中的 child_username 欄位值。 |
childproc_guid |
target.process.product_specific_process_id (適用於 endpoint.event.procstart 項活動) |
「CB:」與原始記錄中 childproc_guid 欄位的值串連,前提是 type 為 endpoint.event.procstart 。 |
childproc_hash.0 |
target.process.file.md5 (適用於 endpoint.event.procstart 項活動) |
type 為 endpoint.event.procstart 時,原始記錄中的 childproc_hash 陣列第一個元素。 |
childproc_hash.1 |
target.process.file.sha256 (適用於 endpoint.event.procstart 項活動) |
當 type 為 endpoint.event.procstart 時,原始記錄中的 childproc_hash 陣列第二個元素。 |
childproc_name |
target.process.file.full_path (適用於 endpoint.event.procstart 項活動) |
type 為 endpoint.event.procstart 時,原始記錄中的 childproc_name 欄位值。 |
childproc_pid |
target.process.pid (適用於 endpoint.event.procstart 項活動) |
type 為 endpoint.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 值串連,前提是 type 為 endpoint.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 值串連,前提是 type 為 endpoint.event.procstart 。 |
childproc_reputation |
security_result.detection_fields[?key == 'childproc_reputation'].value (適用於 endpoint.event.procstart 項活動) |
type 為 endpoint.event.procstart 時,原始記錄中的 childproc_reputation 欄位值。 |
childproc_username |
target.user.userid (適用於 endpoint.event.procstart 項活動) |
type 為 endpoint.event.procstart 時,原始記錄中的 childproc_username 欄位值。 |
clientIp |
principal.ip 、principal.asset.ip |
原始記錄中的 clientIp 欄位值。 |
cmdline |
target.process.command_line (適用於 feed.query.hit.process 和 feed.storage.hit.process 事件)、additional.fields[?key == 'cmdline_*'].value.string_value (適用於 watchlist.storage.hit.process 事件) |
當 type 為 feed.query.hit.process 或 feed.storage.hit.process 時,原始記錄中的 cmdline 欄位值。如果是 watchlist.storage.hit.process 事件,則會儲存在 additional.fields 中,並使用「cmdline_*」鍵。 |
command_line |
target.process.command_line (適用於 ingress.event.procstart 項活動) |
type 為 ingress.event.procstart 時,原始記錄中的 command_line 欄位值。 |
comms_ip |
intermediary.ip |
原始記錄中的 comms_ip 欄位值。 |
computer_name |
principal.hostname 、principal.asset.hostname |
原始記錄中的 computer_name 欄位值。 |
crossproc_api |
additional.fields[?key == 'crossproc_api'].value.string_value (適用於 endpoint.event.apicall 項活動) |
type 為 endpoint.event.apicall 時,原始記錄中的 crossproc_api 欄位值。 |
crossproc_guid |
additional.fields[?key == 'crossproc_guid'].value.string_value (適用於 endpoint.event.crossproc 項活動) |
type 為 endpoint.event.crossproc 時,原始記錄中的 crossproc_guid 欄位值。 |
crossproc_hash.0 |
additional.fields[?key == 'crossproc_md5'].value.string_value (適用於 endpoint.event.crossproc 項活動) |
type 為 endpoint.event.crossproc 時,原始記錄中的 crossproc_hash 陣列第一個元素。 |
crossproc_hash.1 |
additional.fields[?key == 'crossproc_sha256'].value.string_value (適用於 endpoint.event.crossproc 項活動) |
當 type 為 endpoint.event.crossproc 時,原始記錄中的 crossproc_hash 陣列第二個元素。 |
crossproc_name |
target.process.file.full_path (適用於 endpoint.event.crossproc 項活動) |
type 為 endpoint.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 的值串連,前提是 type 為 endpoint.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 的值串連,前提是 type 為 endpoint.event.crossproc 。 |
crossproc_reputation |
additional.fields[?key == 'crossproc_reputation'].value.string_value (適用於 endpoint.event.crossproc 項活動) |
type 為 endpoint.event.crossproc 時,原始記錄中的 crossproc_reputation 欄位值。 |
crossproc_target |
additional.fields[?key == 'crossproc_target'].value.string_value (適用於 endpoint.event.crossproc 項活動) |
當 type 為 endpoint.event.crossproc 時,原始記錄中的 crossproc_target 欄位值。轉換為字串「true」或「false」。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求答案。