VMware Carbon Black Enterprise EDR

集成版本:6.0

产品使用场景

  1. 执行调查操作 - 从 CB Enterprise EDR 获取数据,作为 Google Security Operations 中警报分析的一部分。
  2. 执行配置操作 - 从 Google SecOps 配置 CB Enterprise EDR Feed/监视列表。

产品权限

访问 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-<环境>.conferdeploy.net/

API 密钥

Carbon Black Enterprise EDR (ThreatHunter) API 和服务通过 API 密钥进行身份验证。用户可以在 Carbon Black Cloud 控制台中的 Settings > API Keys 下查看 API 密钥设置。

API 密钥包含两部分:

  • API Secret 密钥(之前称为“API 密钥”)。
  • API ID(之前称为连接器 ID)。

身份验证通过 X-Auth-Token HTTP 标头传递给 API。

  1. 如需生成相应的标头,请将 API 密钥与 API ID 串联起来,并在两者之间添加正斜杠。
  2. 例如,如果 API Secret Key 为 ABCD,API ID 为 1234,则相应的 X-Auth-Token HTTP 标头将为:X-Auth-Token: ABCD/1234

所有 API 请求都必须使用 API 密钥和 API ID 进行身份验证。未经身份验证的请求会返回 HTTP 401 错误。

如何获取 API Secret 密钥和 API ID

  1. 登录您的 Carbon Black Cloud 组织。
  2. 依次前往设置 > API 密钥
  3. 点击“添加 API 密钥”。
  4. 配置名称、访问权限级别等
  5. 获取您的 API 密钥和 API ID 对。

这样一来,组织管理员就可以定义 API 密钥,并获取对 API Secret 密钥和 API ID 的访问权限,而这些信息是验证 API 请求所必需的。此外,出于安全考虑,管理员可以将此 API 密钥的使用范围限制为一组特定的 IP 地址。

API 密钥访问权限级别

目前,“API 密钥”页面中提供了四种主要 API 密钥访问权限级别。每种访问权限级别都提供不同级别的 API 路由访问权限:

  1. 自定义密钥访问权限级别:提供可自定义的授权。

    • 自定义 API 密钥是我们基于角色的访问权限控制 (RBAC) 工作的成果。
    • 允许客户应用访问权限控制并创建最小权限 API 密钥。
    • 自定义 API 密钥可以分配用户角色或访问权限级别。
  2. API 密钥访问权限级别:提供对除 Notifications API 和 Live Response API 之外的所有 API 的访问权限。

  3. SIEM 密钥访问权限级别:提供对 Notifications API 的访问权限。

  4. 实时响应密钥访问权限级别:提供对 (1) 及以上级别可用的所有 API 的访问权限,以及对实时响应 API 的访问权限。

Carbon Black Enterprise EDR (ThreatHunter) 服务与 API 访问权限级别的相关性 平台 API 以粗体显示

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 控制台中的“设置”>“API 密钥”下找到您的 org_key。

为 Carbon Black Enterprise EDR (ThreatHunter) Google SecOps 集成配置 API 访问权限

如需为 Carbon Black Enterprise EDR (ThreatHunter) Google SecOps 集成配置 API 访问权限,需要执行以下步骤:

  1. 登录 Carbon Black Cloud 控制台,然后依次前往设置 > API 访问权限
  2. 在“API 访问权限”页面上,前往“访问权限级别”。
  3. 在“访问权限级别”页面上,点击 + 添加访问权限级别
  4. 在打开的窗口中,为新的访问权限级别提供名称和说明,然后选择权限,如下面的屏幕截图所示:

    所需权限列表

  5. 返回到“API 访问权限”标签页。

  6. 点击“+ 添加 API 密钥”以创建新的 API 密钥。

  7. 在打开的标签页中,填写必填字段,然后选择您在第 4 步中配置的访问权限级别:

    修改 API 密钥设置

  8. 点击保存后,系统会显示 API ID 和 API Secret 密钥。 请保存这些值,因为它们只会显示一次。

  9. 保存 API ID 和 API Secret 密钥后,即可在 Carbon Black Enterprise EDR (ThreatHunter) 中完成 API 访问。

在 Google SecOps 中配置 VMware Carbon Black Enterprise EDR(威胁猎手)集成

有关如何在 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 密钥)。
远程运行 复选框 不适用 选中此字段,以便远程运行配置的集成。选中后,系统会显示用于选择远程用户(客服人员)的选项。

操作

Ping

说明

使用 Google Security Operations Marketplace 标签页中的集成配置页面上提供的参数,测试与 VMware Carbon Black Enterprise EDR 的连接。

参数

不适用

剧本使用场景示例

此操作用于在 Google Security Operations Marketplace 标签页的集成配置页面上测试连接,可以作为手动操作执行,但不能在 playbook 中使用。

运行于

此操作不会在实体上运行,也没有强制性输入参数。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
is_success True/False is_success:False
案例墙
结果类型 值/说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功:打印“Successfully connected to the VMware Carbon Black Enterprise EDR server with the provided connection parameters!”

操作应失败并停止 playbook 执行

  • 如果不成功:打印“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 平台管理的特定主机相关的提醒时,用户希望调查该主机,即根据提供的搜索参数搜索由正在运行的进程引起的特定事件。用户可以运行此操作进行威胁搜寻活动,主动搜索相关主机上是否存在任何可疑进程/事件。

运行于

此操作在 Host 实体上运行。

操作执行结果

脚本结果
脚本结果名称 值选项 示例
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"
        ]
    },
    ...
]  }
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功:打印“Found process information for the following entities:\n {0}”(找到了以下实体的进程信息:\n {0})。format( entity.Identifiers list)
  • 如果所有提供的实体的 is_success 均为 False:打印“未返回任何搜索结果。”
  • 如果部分所提供实体的 is_success 为 False,因为无法找到指定搜索参数的结果:打印“操作无法找到以下实体的进程信息:\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)

操作应失败并停止 playbook 执行

  • 如果出现致命错误(例如凭据错误、无法连接到服务器、其他错误):打印“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 平台管理的特定主机相关的提醒时,发现该主机正在运行可疑进程。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
        },
        ...
    ]
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功:打印“Found events for the following process guids:\n {0}”(找到了以下进程 GUID 的事件:\n {0})。format( 进程 GUID 列表)
  • 如果所有提供的进程 GUID 的 is_success 均为 False:print "No search results were returned."
  • 如果由于找不到指定的进程 GUID 而导致部分所提供实体的 is_success=False:print "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)

操作应失败并停止 playbook 执行

  • 如果出现致命错误(例如凭据错误、无法连接到服务器、其他错误):打印“Failed to execute action!错误为 {0}".format(exception.stacktrace)
常规

表格名称:Found events for process {process artifact identifier}

:应根据返回的结果自动生成。

实体

丰富哈希

说明

根据 VMware Carbon Black Enterprise EDR 中的信息丰富 Google SecOps 文件哈希实体。

剧本使用场景示例

使用来自 CB Enterprise EDR 的信息丰富 Google SecOps 文件哈希实体。

在处理与具有 CB 平台传感器的主机关联的可能恶意软件感染警报期间,用户需要从 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 评论 如果不为 null
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 如果不为 null
CB_ENT_EDR.original_filename original_filename 始终
CB_ENT_EDR.os_type os_type 始终
CB_ENT_EDR.private_build private_build 如果不为 null
CB_ENT_EDR.product_description product_description 如果不为 null
CB_ENT_EDR.product_name product_name 始终
CB_ENT_EDR.product_version product_version 始终
CB_ENT_EDR.special_build special_build 如果不为 null
CB_ENT_EDR.trademark trademark 如果不为 null
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
}
案例墙
结果类型 值 / 说明 类型
输出消息*

操作不应失败,也不应停止 playbook 执行

  • 如果成功且至少一个提供的实体已得到丰富:打印“Successfully enriched entities: {0}”。format([entity.Identifier])。
  • 如果未能丰富所有提供的实体:打印“No entities were enriched.”。
  • 如果无法在 VMware Carbon Black Enterprise EDR 中找到数据来丰富特定实体:打印“Action was not able to find VMware Carbon Black Enterprise EDR info to enrich the following entities: {0}”。format([entity.identifier])
  • 如果未能成功运行其中一个丰富查询(例如,在获取一个响应时出现错误 500,但另一个响应正常),则 is_success 应为 False,但操作应使用从另一个响应获取的数据进行丰富,并打印:“由于获取实体数据时出现错误,以下实体被部分丰富:/n {0}”。format(entityIdentifier list)

操作应失败并停止 playbook 执行

  • 如果出现致命错误(例如凭据错误、无法连接到服务器、其他错误):请输出“Failed to execute Enrich Entities action! 错误为 {0}".format(exception.stacktrace)
常规