VMware Carbon Black Enterprise EDR

本文說明如何將 VMware Carbon Black Enterprise EDR 與 Google SecOps 整合。

產品用途

  1. 執行調查動作:在 Google Security Operations 進行警告分析時,從 CB Enterprise EDR 取得資料。
  2. 執行設定動作:透過 Google SecOps 設定 CB Enterprise EDR 動態消息/監控清單。

產品權限

存取 Carbon Black Enterprise EDR (ThreatHunter) API 須瞭解的概念:

  1. 服務主機名稱
  2. API 金鑰
  3. RBAC
  4. 組織金鑰

服務主機名稱

Carbon Black Cloud 主機名稱有兩種:

  • https://defense-<environment>.conferdeploy.net/
  • https://api-<environment>.conferdeploy.net/

此外,我們有多個環境,例如 (非完整清單):

  • prod02
  • prod04
  • prod05

Carbon Black Enterprise EDR (ThreatHunter) API 會使用下列主機名稱:https://defense-<environment>.conferdeploy.net/

API 金鑰

Carbon Black Enterprise EDR (ThreatHunter) API 和服務會透過 API 金鑰進行驗證。使用者可以在 Carbon Black Cloud 控制台的「Settings」(設定) >「API Keys」(API 金鑰) 下方查看 API 金鑰設定。

API 金鑰包含兩個部分:

  • API 密鑰 (先前稱為 API 金鑰)。
  • API ID (先前稱為連接器 ID)。

驗證資訊會透過 X-Auth-Token HTTP 標頭傳遞至 API。

  1. 如要產生適當的標頭,請將 API 密鑰與 API ID 串連,並在兩者之間加上正斜線。
  2. 舉例來說,如果 API 密鑰是 ABCD,API ID 是 1234,則對應的 X-Auth-Token HTTP 標頭會是:X-Auth-Token: ABCD/1234

所有 API 要求都必須使用 API 密鑰和 API ID 進行驗證。未經驗證的要求會傳回 HTTP 401 錯誤。

如何取得 API 密鑰和 API ID

  1. 登入 Carbon Black Cloud 機構。
  2. 依序前往「Settings」 >「API 金鑰」。
  3. 按一下「新增 API 金鑰」。
  4. 設定名稱、存取層級等。
  5. 取得 API 密鑰和 API ID。

組織管理員可以定義 API 金鑰,並取得 API 密鑰和 API ID,用於驗證 API 要求。此外,基於安全考量,管理員可以限制這組 API 金鑰只能用於特定 IP 位址。

API 金鑰存取層級

目前「API 金鑰」頁面提供四種主要的 API 金鑰存取層級。每個存取層級對 API 路徑提供的存取層級不同:

  1. 自訂金鑰存取層級:提供可自訂的授權。

    • 自訂 API 金鑰是我們角色式存取控管 (RBAC) 措施的成果。
    • 客戶可以套用存取控管機制,並建立最小權限 API 金鑰。
    • 自訂 API 金鑰可指派使用者角色或存取層級。
  2. API 金鑰存取層級:提供所有 API 的存取權,但 Notifications API 和 Live Response API 除外。

  3. SIEM 金鑰存取層級:可存取 Notifications API。

  4. 即時回應金鑰存取層級:可存取上述 (1) 的所有 API,以及即時回應 API。

Carbon Black Enterprise EDR (ThreatHunter) Service to API 存取層級 Correlation Platform API is bolded

API/服務類別 允許的 API 金鑰存取層級
PSC /appservices/* 自訂 (具備適當權限)
CB-TH /threathunter/* 自訂 (具備適當權限) API
CB-LO /livequery/* 自訂 (具備適當權限)
CB-D /integrationServices/v3/notification/ SIEM
CB-D /integrationServices/* APILive 回應

組織金鑰

除了 API 金鑰外,許多 Carbon Black Cloud API 或服務都需要在 API 要求路徑中提供 org_key。這是為了支援管理多個機構的客戶。

您可以在 Carbon Black Cloud 控制台的「Settings」>「API Keys」下方找到 org_key。

設定 Carbon Black Enterprise EDR (ThreatHunter) Google SecOps 整合的 API 存取權

如要設定 Carbon Black Enterprise EDR (ThreatHunter) Google SecOps 整合的 API 存取權,請按照下列步驟操作:

  1. 登入 Carbon Black Cloud 控制台,依序前往「Settings」 >「API Access」。
  2. 在「API 存取權」頁面,前往「存取層級」。
  3. 在「存取層級」頁面,按一下「+ 新增存取層級」。
  4. 在開啟的視窗中,輸入新存取層級的名稱和說明,然後選取權限,如下方螢幕截圖所示:

    必要權限清單

  5. 返回「API 存取權」分頁。

  6. 按一下「+ 新增 API 金鑰」,建立新的 API 金鑰。

  7. 在開啟的分頁中填寫必填欄位,然後選取您在步驟 4 設定的存取層級:

    編輯 API 金鑰設定

  8. 點選「儲存」後,系統會顯示 API ID 和 API 密鑰。請儲存這些值,因為系統只會顯示一次。

  9. 儲存 API ID 和 API 密鑰後,Carbon Black Enterprise EDR (ThreatHunter) 的 API 存取權就設定完成。

在 Google SecOps 中設定 VMware Carbon Black Enterprise EDR (Threat Hunter) 整合

如要瞭解如何在 Google SecOps 中設定整合功能,請參閱「設定整合功能」一文。

整合參數

請使用下列參數設定整合:

參數顯示名稱 類型 預設值 為必填項目 說明
執行個體名稱 字串 不適用 否 要設定整合的執行個體名稱。
說明 字串 不適用 否 執行個體的說明。
API 根層級 字串 不適用 是 VMware Carbon Black Cloud API 根網址。
機構金鑰 字串 不適用 是 VMware Carbon Black Cloud 機構金鑰。
API ID 字串 不適用 是 VMware Carbon Black Cloud API ID (自訂 API 金鑰 ID)。
API 密鑰 字串 不適用 是 VMware Carbon Black Cloud API 密鑰 (自訂 API 密鑰)。
遠端執行 核取方塊 不適用 否 勾選這個欄位,即可從遠端執行設定的整合項目。勾選後,系統會顯示選取遠端使用者 (代理) 的選項。

動作

乒乓

說明

使用 Google SecOps Content Hub 整合設定頁面提供的參數,測試與 VMware Carbon Black Enterprise EDR 的連線能力。

參數

不適用

應對手冊用途範例

這項動作可用於在 Google SecOps Content Hub 頁面的整合設定頁面測試連線能力,並可做為人工判決處罰執行,不適用於教戰手冊。

執行日期

這項動作不會對實體執行,也沒有必要輸入參數。

動作執行結果

指令碼執行結果
指令碼執行結果名稱 值選項 範例
is_success True/False is_success:False
案件總覽
結果類型 值/說明 類型
輸出訊息*

動作不應失敗,也不應停止執行應對手冊:

  • 如果成功:列印「已使用提供的連線參數成功連線至 VMware Carbon Black Enterprise EDR 伺服器!」

動作應失敗並停止執行應對手冊:

  • 如果失敗,則輸出「Failed to connect to the VMware Carbon Black Enterprise EDR server! 錯誤為 {0}".format(exception.stacktrace)
一般

說明

根據提供的搜尋參數,在具有 CB 感應器的主機上搜尋程序活動相關資訊。這項動作接受主機 Google SecOps 實體。

參數

參數顯示名稱 類型 預設值 為必填項目 說明
查詢 字串 不適用 否 在程序搜尋中執行的查詢。例如,process_name:svchost.exe - 依程序名稱搜尋,process_hash:9520a99e77d6196d0d09833146424113 - 依程序雜湊搜尋。
時間範圍 整數 4 否 指定擷取快訊的時間範圍 (以小時為單位)。
記錄上限 整數 20 是 指定動作可傳回的記錄數量。
排序依據 字串 不適用 否 指定資料排序參數。
排列順序 DDL 遞增 否 排列順序。

應對手冊用途範例

根據提供的搜尋參數,搜尋由程序引起的事件。

分析與 CB Platform 管理的特定主機相關的警示時,使用者想要調查主機,根據提供的搜尋參數,搜尋由執行中的程序引起的特定事件。使用者可以執行這項動作,主動搜尋相關主機上是否有任何可疑程序/事件,進行威脅偵查活動。

執行日期

這項動作會在主機實體上執行。

動作執行結果

指令碼執行結果
指令碼執行結果名稱 值選項 範例
is_success True/False is_success:False
JSON 結果
{
"results": [
    {
        "alert_id": [
            "null/WSD2CQMT"
        ],
        "backend_timestamp": "2020-03-04T21:42:45.080Z",
        "device_id": 3078944,
        "device_name": "qaam\\manticorewin864",
        "device_policy_id": 6525,
        "device_timestamp": "2020-03-04T21:39:33.180Z",
        "enriched": true,
        "enriched_event_type": "CREATE_PROCESS",
        "event_description": "The script \"<share><link hash=\"74fcbbb574bfd505cf0680575a1c025f6cead071fce78ee0cc2c7bac7dd24ce9\">C:\\programdata\\wmirepair.bat</link></share>\" invoked the application \"<share><link hash=\"7eadc73f8aa77148ca289d5ce5c2632f3a157d313079583454c0421bb97d5646\">C:\\windows\\syswow64\\regsvr32.exe</link></share>\". ",
        "event_id": "ecc6954f5e6011eaa0de89cc027330db",
        "event_type": "childproc",
        "ingress_time": 1583358118950,
        "legacy": true,
        "org_id": "7DESJ9GN",
        "parent_guid": "7DESJ9GN-002efb20-00001604-00000000-1d5f26cab1067fe",
        "parent_pid": 5636,
        "process_guid": "7DESJ9GN-002efb20-00000d58-00000000-1d5f26d6615c568",
        "process_hash": [
            "629ae017d28848b68485bd2aeede9129",
            "74fcbbb574bfd505cf0680575a1c025f6cead071fce78ee0cc2c7bac7dd24ce9"
        ],
        "process_name": "c:\\programdata\\wmirepair.bat",
        "process_pid": [
            3416
        ],
        "process_username": [
            "NT AUTHORITY\\SYSTEM"
        ]
    },
    ...
]  }
案件總覽
結果類型 值 / 說明 類型
輸出訊息*

動作不應失敗,也不應停止執行應對手冊:

  • 如果成功:列印「Found process information for the following entities:\n {0}」.format( entity.Identifiers list)
  • 如果所有提供的實體 is_success=False:列印「未傳回任何搜尋結果。」
  • 如果部分提供的實體 is_success=False,因為找不到指定搜尋參數的結果:列印「Action was not able to find process information for the following entities:\n {0}」.format(entity.Identifiers list)
  • 如果提供的某些實體 is_success=False,表示執行搜尋時發生錯誤 (例如逾時):print "Failed to get results because of the errors running search for the following entities:/n {0}".format(entity.identifiers list)

動作應失敗並停止執行應對手冊:

  • 如果發生嚴重錯誤,例如憑證錯誤、無法連線至伺服器等,請顯示「Failed to execute action! 錯誤為 {0}".format(exception.stacktrace)
兩者並用
資料表

資料表名稱:處理「{entityIdentifier}」的搜尋結果

資料欄:

  • 事件 ID (event_id)
  • 事件類型 (enriched_event_type)
  • 程序名稱 (process_name)
  • 程序 GUID (process_guid)
  • 程序 PID (process_pid)
  • 程序父項 GUID (parent_guid)
  • 程序父項 PID (parent_pid)
  • 程序檔案雜湊 (process_hash)
  • 程序執行身分 (process_username)
  • 建立時間 (device_timestamp)
  • 活動說明 (event_description)
  • 本機 IPv4 位址 (event_network_local_ipv4)
  • 網路通訊協定 (event_network_protocol)
  • 遠端 IPv4 位址 (event_network_remote_ipv4)
  • 遠端通訊埠 (event_network_remote_port)
實體

依程序 GUID 取得與程序相關聯的事件

說明

根據 VMware Carbon Black Enterprise EDR 的資訊,取得與特定程序相關聯的事件。這項動作可取得比「程序搜尋」動作更詳細的特定程序活動結果。請注意,如要讓動作正常運作,傳遞至動作的 Google SecOps 處理構件必須是程序 GUID 類型。

參數

參數顯示名稱 類型 預設值 為必填項目 說明
搜尋條件 字串 不適用 否 指定要求的搜尋條件。目前,系統只接受「event_type」值做為搜尋條件,例如 netconn。如有多個值,請以半形逗號分隔。
查詢 搜尋 不適用 是 在程序搜尋中執行的查詢,例如「netconn_action:ACTION_CONNECTION_CREATE OR netconn_action:ACTION_CONNECTION_ESTABLISHED」
時間範圍 整數 4 否 指定擷取快訊的時間範圍 (以小時為單位)。
記錄上限 整數 20 否 指定動作可傳回的記錄數量。
排序依據 字串 不適用 否 指定資料排序參數。
排列順序 DDL 遞增 否 排列順序

應對手冊用途範例

調查特定程序活動。

在分析與 CB Platform 管理的特定主機相關的警示時,發現主機上有可疑程序正在執行。Google SecOps 使用者需要一項動作,使用 CB Enterprise EDR 功能從 Google SecOps 取得與特定程序相關聯的事件。

執行日期

這項動作不會對實體執行。

動作執行結果

指令碼執行結果
指令碼執行結果名稱 值選項 範例
is_success True/False is_success:False
JSON 結果
{
    "results": [
        {
            "backend_timestamp": "2020-04-26T18:38:50.128Z",
            "created_timestamp": "2020-05-19T03:56:53.483Z",
            "event_guid": "ufzid3pPQs-yrRlPBe8-ww",
            "event_hash": "ce6a949bcd3879897c9eac258ec6a091",
            "event_timestamp": "2020-04-26T18:34:16.258Z",
            "event_type": "netconn",
            "legacy": false,
            "netconn_action": "ACTION_CONNECTION_CREATE",
            "netconn_inbound": true,
            "netconn_local_ipv6": "FF020000000000000000000000010003",
            "netconn_local_port": 5355,
            "netconn_protocol": "PROTO_UDP",
            "netconn_remote_ipv6": "FE800000000000000000000000000000",
            "netconn_remote_port": 58994,
            "process_guid": "7DESJ9GN-002efb20-000003ec-00000000-1d5fb6d63ba535c",
            "process_pid": 1004
        },
        ...
    ]
}
案件總覽
結果類型 值 / 說明 類型
輸出訊息*

動作不應失敗,也不應停止執行應對手冊:

  • 如果成功:列印「Found events for the following process guids:\n {0}」.format( process guid list)
  • 如果所有提供的程序 GUID 的 is_success=False:列印「未傳回搜尋結果」。
  • 如果提供的某些實體 is_success=False,因為找不到指定的程序 GUID:列印「Action was not able to find information for the following processes:\n {0}」.format(process guids list)。
  • 如果因執行搜尋時發生錯誤 (例如逾時),導致部分提供的實體 is_success=False:print "Failed to get results because of errors running search for the following process guids:/n {0}".format(entity.identifiers list)

動作應失敗並停止執行應對手冊:

  • 如果發生嚴重錯誤,例如憑證錯誤、無法連線至伺服器等,請顯示「Failed to execute action! 錯誤為 {0}".format(exception.stacktrace)
一般
資料表

資料表名稱:找到程序「{process artifact identifier}」的事件

資料欄:應根據傳回的結果自動產生。

實體

充實雜湊

說明

根據 VMware Carbon Black Enterprise EDR 的資訊,充實 Google SecOps 檔案雜湊實體。

應對手冊用途範例

使用 CB Enterprise EDR 的資訊,擴充 Google SecOps filehash 實體。

在處理與具有 CB Platform 感應器的主機相關聯的可能惡意軟體感染警示時,使用者需要從 CB Enterprise EDR (平台的一部分) 取得與相關警示相關聯的特定檔案雜湊的豐富資料,以便進行調查。舉例來說,在擴充過程中,使用者可以取得相關的檔案雜湊中繼資料、這個檔案雜湊首次在組織中偵測到的時間,以及所在的主機。

執行日期

這項動作會對 Sha256 格式的 Filehash 實體執行。

動作執行結果

實體資料充實
補充資料欄位名稱 來源 (JSON 金鑰) 邏輯 - 應用時機
CB_ENT_EDR.sha256 sha256 一律
CB_ENT_EDR.md5 md5 一律
CB_ENT_EDR.architecture 架構 一律
CB_ENT_EDR.available_file_size available_file_size 一律
CB_ENT_EDR.charset_id charset_id 一律
CB_ENT_EDR.comments 留言 如果不是空值
CB_ENT_EDR.company_name company_name 一律
CB_ENT_EDR.copyright 版權 一律
CB_ENT_EDR.file_available file_available 一律
CB_ENT_EDR.file_description file_description 一律
CB_ENT_EDR.file_size file_size 一律
CB_ENT_EDR.file_version file_version 一律
CB_ENT_EDR.internal_name internal_name 一律
CB_ENT_EDR.lang_id lang_id 如果不是空值
CB_ENT_EDR.original_filename original_filename 一律
CB_ENT_EDR.os_type os_type 一律
CB_ENT_EDR.private_build private_build 如果不是空值
CB_ENT_EDR.product_description product_description 如果不是空值
CB_ENT_EDR.product_name product_name 一律
CB_ENT_EDR.product_version product_version 一律
CB_ENT_EDR.special_build special_build 如果不是空值
CB_ENT_EDR.trademark trademark 如果不是空值
CB_ENT_EDR.found_times num_devices 一律
CB_ENT_EDR.first_seen_device_timestamp first_seen_device_timestamp 一律
CB_ENT_EDR.first_seen_device_id first_seen_device_id 一律
CB_ENT_EDR.first_seen_device_name first_seen_device_name 一律
CB_ENT_EDR.last_seen_device_timestamp last_seen_device_timestamp 一律
CB_ENT_EDR.last_seen_device_id last_seen_device_id 一律
CB_ENT_EDR.last_seen_device_name last_seen_device_name 一律
指令碼執行結果
指令碼執行結果名稱 值選項 範例
is_success True/False is_success:False
JSON 結果
{
    "sha256": "e24dd278cec867486b68418c9066ffa9bd4f394dac3ba94125d58415f677f0f4",
    "architecture": [
        "amd64"
    ],
    "available_file_size": 207800,
    "charset_id": 1200,
    "comments": null,
    "company_name": "Example Organization",
    "copyright": "Copyright  © 2019",
    "file_available": true,
    "file_description": "OpenJDK Platform binary",
    "file_size": 207800,
    "file_version": "8.0.2320.9",
    "internal_name": "java",
    "lang_id": null,
    "md5": "afede6f64ed8878bc0cac57e1831a3bc",
    "original_filename": "java.exe",
    "os_type": "WINDOWS",
    "private_build": null,
    "product_description": null,
    "product_name": "OpenJDK Platform 8",
    "product_version": "8.0.2320.9",
    "special_build": null,
    "trademark": null
}
案件總覽
結果類型 值 / 說明 類型
輸出訊息*

動作不應失敗,也不應停止執行應對手冊:

  • 如果成功且至少有一個提供的實體已擴充:列印「Successfully enriched entities: {0}」.format([entity.Identifier])。
  • 如果無法擴充所有提供的實體,請輸出「No entities were enriched.」。
  • 如果無法在 VMware Carbon Black Enterprise EDR 中找到資料來充實特定實體:列印「動作無法找到 VMware Carbon Black Enterprise EDR 資訊來充實下列實體:{0}」。format([entity.identifier])
  • 如果無法執行其中一項擴充查詢 (例如在取得一項回應時發生 500 錯誤,但另一項回應正常),is_success 應為 False,但動作應使用從其他回應取得的資料進行擴充,並輸出:「由於取得實體資料時發生錯誤,下列實體已部分擴充:/n {0}」。format(entityIdentifier list)

動作應失敗並停止執行應對手冊:

  • 如果發生嚴重錯誤,例如憑證錯誤、無法連線至伺服器等,請輸出「Failed to execute Enrich Entities action! 錯誤為 {0}".format(exception.stacktrace)
一般