将 GRR Rapid Response 与 Google SecOps 集成

本文档介绍了如何配置 GRR Rapid Response 并将其与 Google Security Operations 集成。

使用场景

GRR Rapid Response 集成使用 Google SecOps 功能来支持以下用例:

  • 端点取证收集:在调查期间自动触发取证流程,以从远程端点收集文件、注册表项和内存工件。

  • 快速威胁搜寻:在所有受管客户端中搜索特定文件或哈希,以确定入侵范围。

  • 客户端元数据丰富:检索详细的客户端信息(包括操作系统版本、硬件规格和网络配置),为安全提醒提供背景信息。

  • 自动突发事件响应:使用 playbook 列出活跃客户端,或在检测到恶意活动后立即搜索可疑工件。

准备工作

在 Google SecOps 中配置集成之前,请验证您的 GRR Rapid Response 环境是否满足以下要求:

  • API 凭证:您必须拥有对 GRR 服务器具有 API 访问权限的用户账号的有效用户名和密码。

  • 账号权限:确保用于集成的账号具有足够的权限,可以在目标客户端上启动流程和搜索工件。

  • 服务器配置:确定 GRR 服务器的 API 根(例如 https://<grr-server-address>:8000)。

  • 网络访问:确保您的网络配置允许从 Google SecOps 环境到 GRR API 端点的出站 HTTPS 连接。

集成参数

GRR Rapid Response 集成需要以下参数:

参数 说明
API Root

必填。

GRR 服务器 API 的基础网址,包括端口(例如 https://grr.example.com:8000)。

Username

必填。

用于对连接进行身份验证的 GRR 账号的用户名。

Password

必填。

与用于身份验证的 GRR 账号关联的密码。

Verify SSL

可选。

如果选中,集成会在连接到 GRR 服务器时验证 SSL 证书。

默认处于启用状态。

如需了解如何在 Google SecOps 中配置集成,请参阅配置集成。

如有需要,您可以在后续阶段进行更改。配置集成实例后,您可以在 playbook 中使用该实例。如需详细了解如何配置和支持多个实例,请参阅支持多个实例。

操作

如需详细了解操作,请参阅 在工作桌上响应待处理的操作和在案例中运行手动操作。

获取客户端详细信息

使用获取客户端详细信息操作可检索完整的客户端详细信息。

此操作不会在 Google SecOps 实体上运行。

操作输入

获取客户详细信息操作需要以下参数:

参数 说明
Client ID

必填。

客户的 ID。此参数接受以逗号分隔的字符串形式的多个值。

操作输出

获取客户端详细信息操作会提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
案例墙表格

获取客户详细信息操作可以生成下表:

表名称:GRR Clients Details

表列:

  • 客户端 ID (Client ID)
  • 主机
  • 操作系统版本
  • 标签
  • 内存大小
  • 客户端版本
  • 首次出现时间
  • 上次在线时间
  • 操作系统安装日期
JSON 结果

以下示例展示了使用获取客户端详情操作时收到的 JSON 结果输出:

[
        {
            "HardwareInfo": {
                "system_product_name": "HVM domU",
                "bios_rom_size": "64 kB",
                "bios_vendor": "Xen",
                "system_sku_number": "Not Specified",
                "system_family": "Not Specified",
                "system_uuid": "UUID",
                "system_manufacturer": "Xen",
                "bios_release_date": "08/24/2006",
                "bios_version": "4.2.amazon",
                "serial_number": "UUID",
                "bios_revision": "4.2"
            },
            "LastClock": 1535907460060247,
            "Interfaces": [
                {
                    "ifname": "lo",
                    "addresses": [
                        {
                            "packed_bytes": "fwAAAQ==",
                            "address_type": "INET"
                        },
                        {
                            "packed_bytes": "AAAAAAAAAAAAAAAAAAAAAQ==",
                            "address_type": "INET6"
                        }
                    ],
                    "mac_address": "MAC_ADDRESS"
                },
                {
                    "ifname": "eth0",
                    "addresses": [
                        {
                            "packed_bytes": "rB8sWw==",
                            "address_type": "INET"
                        },
                        {
                            "packed_bytes": "/oAAAAAAAAAE1kv//h5yfg==",
                            "address_type": "INET6"
                        }
                    ],
                    "mac_address": "MAC_ADDRESS"
                }
            ],
            "OS": {
                "kernel": "4.4.0-1065-aws",
                "install_date": 1534280169000000,
                "system": "Linux",
                "fqdn": "ip-192-0-2-91.example",
                "machine": "x86_64",
                "version": "16.4",
                "release": "Ubuntu"
            },
            "AgentInfo": {
                "client_name": "grr",
                "client_description": "grr linux amd64",
                "client_version": 3232,
                "build_time": "2018-06-28 09:37:57"
            },
            "Labels": [],
            "LastBootedAt": 1535292604000000,
            "FirstSeenAt": 1535293827970976,
            "User": [],
            "Volumes": [
                {
                    "total_allocation_units": 50808745,
                    "bytes_per_sector": 4096,
                    "sectors_per_allocation_unit": 1,
                    "unixvolume": {
                        "mount_point": "/"
                    },
                    "actual_available_allocation_units": 50027766
                }
            ],
            "LastCrashAt": null,
            "LastSeenAt": 1535907460075229,
            "ID": "CLIENT_ID"
        }
]
输出消息

获取客户端详细信息操作可以返回以下输出消息:

输出消息 消息说明

Successfully fetched details for the following clients: CLIENT_ID_LIST.

Could not fetch details for the specified clients. CLIENT_ID does not exist.

操作成功。
Error executing action "Get Client Details". Reason: ERROR_REASON

操作失败。

请检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用获取客户端详细信息操作时脚本结果输出的值:

脚本结果名称 值
is_success True 或 False

获取搜寻详情

使用获取搜寻详情操作来检索搜寻详情。

此操作不会在 Google SecOps 实体上运行。

操作输入

获取搜寻详情操作需要以下参数:

参数 说明
Hunt ID

必填。

要检索的搜寻任务的 ID。此参数接受以逗号分隔的多个值。

操作输出

获取搜寻详情操作会提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用

获取搜寻详情操作可以生成以下链接:

API_ROOT/#/hunts/HUNT_ID

JSON 结果

以下示例展示了使用获取搜寻详情操作时收到的 JSON 结果输出:

[
        {
            "Name": "ExampleHunt",
            "Expires": 1537063517000000,
            "Description": "test",
            "Creator": "admin",
            "IsRobot": false,
            "Status": "PAUSED",
            "Hunt_ID": "HUNT_ID",
            "Created": 1535853917657925,
            "Start_Time": 1535853917657925,
            "Duration": "2w",
            "Expiration time": " ",
            "Crash_limit": 100,
            "Client_limit": 100,
            "Client_rate (clients/min)": "20.5",
            "Client_Queued": "20.5",
            "Client_Scheduled": "20.5",
            "Client_Outstanding": "20.5",
            "Client_Completed": "20.5",
            "Client_with Results": "20.5",
            "Results": "20.5",
            "Total_CPU_Time_Used": "20.5",
            "Total_Network_Traffic": "20.5",
            "Flow_Name": "KeepAlive",
            "Flow_Arguments": "20.5",
            "Client_Rule_Set": " "
        }
]
输出消息

获取搜寻详情操作可能会返回以下输出消息:

输出消息 消息说明

Successfully fetched details for the HUNT_ID hunt.

Could not fetch details for the specified hunts. HUNT_ID does not exist.

操作成功。
Error executing action "Get Hunt Details". Reason: ERROR_REASON

操作失败。

请检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用获取搜寻详情操作时脚本结果输出的值:

脚本结果名称 值
is_success True 或 False

列出客户端

使用列出客户操作搜索客户并与之互动。

此操作不会在 Google SecOps 实体上运行。

操作输入

列出客户端操作需要以下参数:

参数 说明
Offset

可选。

搜索客户端的起点(偏移量)。

Max Results To Return

可选。

每个响应中要返回的客户端数量上限。

默认值为 5。

操作输出

列出客户端操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
案例墙表格

列出客户操作可以生成下表:

表名称:GRR Clients

表列:

  • 客户端 ID (Client ID)
  • 主机
  • 操作系统版本
  • 首次出现时间
  • 客户端版本
  • 标签
  • 上次签到
  • 操作系统安装日期
JSON 结果

以下示例展示了使用列出客户端操作时收到的 JSON 结果输出:

[{
    "Client_ID": "CLIENT_ID",
    "Agent_Info":{
       "Client_Name": "example",
       "Client_Version": 3420}
    "OS_Info":{
       "System": "Linux",
       "Release": "Ubuntu",
       "Architecture": "x86_64",
       "Installation_Time": "2020-04-09 13:44:17 UTC",
       "Kernel": "4.15.0-96-generic",
       "Version": "18.04"}
    "Client_Last_Booted_At": "",
    "Client_First_Seen_At": "2020-09-25 14:26:38 UTC",
    "Client_Last_Seen": "2020-11-19 10:12:52 UTC",
    "Client_Last_Clock": "2020-11-19 10:12:52 UTC",
    "Memory_Size": "985.6MiB",
    "Client_Labels": []
   }]
输出消息

列出客户端操作可以返回以下输出消息:

输出消息 消息说明

Successfully listed available clients in GRR.

No clients are available in GRR.

操作成功。
Error executing action "List Clients". Reason: ERROR_REASON

操作失败。

请检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用列出客户端操作时脚本结果输出的值:

脚本结果名称 值
is_success True 或 False

列表搜索

使用列出搜寻操作可检索有关所有可用搜寻的信息。

此操作不会在 Google SecOps 实体上运行。

操作输入

List Hunts 操作需要以下参数:

参数 说明
Creator

可选。

创建了搜寻的用户。

Offset

可选。

搜索搜寻活动的起始点(偏移量)。

Max Results To Return

可选。

每个响应中要返回的搜寻数量上限。

默认值为 5。

操作输出

列出搜寻操作会提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
案例墙表格

列出搜寻操作可以生成下表:

表名称:Hunts

表列:

  • Hunt ID
  • 状态
  • 创建时间
  • 开始时间
  • 时长
  • 客户端限制
  • 到期时间
  • 创作者
  • 说明
JSON 结果

以下示例展示了使用列出搜寻操作时收到的 JSON 结果输出:

[
    {
        "Hunt_Description": "Interrogate run by cron to keep host info fresh.",
        "Creator": "GRRCron",
        "Is_Robot": false,
        "State": "STARTED",
        "Creation Time": "1605690387510082",
        "Start Time (initial)": "1605690387678448",
        "Start Time (last)": "1605690387678448",
        "Duration": " ",
        "Client Limit": 0,
        "Expiration Time": " ",
        "Hunt_ID": "HUNT_ID",
    }
]
输出消息

列出搜寻操作可能会返回以下输出消息:

输出消息 消息说明

Successfully listed hunts.

Could not list hunts for the specified creator. CREATOR_ID< does not exist.

Could not list hunts for the specified creator. Please check the Offset value.

操作成功。
Error executing action "List Hunts". Reason: ERROR_REASON

操作失败。

请检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用列出搜寻操作时脚本结果输出的值:

脚本结果名称 值
is_success True 或 False

列出已启动的流程

使用列出已启动的流操作列出在指定客户端上启动的流。

此操作在以下 Google SecOps 实体上运行:

  • IP Address
  • Hostname

操作输入

列出已启动的流程操作需要以下参数:

参数 说明
Offset

可选。

搜索流程的起点(偏移量)。

Max Results To Return

可选。

每个响应中要返回的流数量上限。

默认值为 5。

操作输出

列出已启动的流操作会提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
案例墙表格

列出已启动的流操作可以生成下表:

表名称:GRR Launch Flows

表列:

  • 流名称
  • Flow ID
  • 州/省/直辖市/自治区
  • 创建时间
  • 上次活跃时间
  • 创作者
JSON 结果

以下示例展示了使用列出已启动的流操作时收到的 JSON 结果输出:

{
    "Creator": "admin",
    "NestedFlow": [],
    "LastActiveAt": 1535900632278975,
    "Args": {
        "ARGUMENTS"
    },
    "State": "TERMINATED",
    "StartedAt": 1535900542745106,
    "Flow_ID": "FLOW_ID",
    "Flow_Name": "FLOW_NAME"
}
输出消息

列出已启动的流程操作可能会返回以下输出消息:

输出消息 消息说明

Successfully listed flows launched on CLIENT_ID client.

Could not list flows. No entities were found.

Could not list flows. IPs or Hosts entities were not found in current scope.

Could not list flows on the following entities: ENTITY_ID.

操作成功。
Error executing action "List Launched Flows". Reason: ERROR_REASON

操作失败。

请检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用列出已启动的流操作时脚本结果输出的值:

脚本结果名称 值
is_success True 或 False

Ping

使用 Ping 操作测试与 GRR Rapid Response 的连接。

此操作不会在 Google SecOps 实体上运行。

操作输入

无。

操作输出

Ping 操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 不可用
输出消息 可用
脚本结果 可用
输出消息

Ping 操作可能会返回以下输出消息:

输出消息 消息说明
Successfully connected to the GRR server with the provided connection parameters! 操作成功。
Failed to connect to the GRR server! Error is ERROR_REASON

操作失败。

请检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用 Ping 操作时脚本结果输出的值:

脚本结果名称 值
is_success True 或 False

开始搜寻

使用开始搜寻操作可启动新创建的搜寻。默认情况下,GRR Rapid Response 会为所有新搜寻分配 PAUSED 状态。

GRR Rapid Response 会将达到客户端限制的所有搜寻设置为 PAUSED 状态。移除客户端限制后,您可以使用开始搜寻操作来重启已暂停的搜寻。

此操作不会在 Google SecOps 实体上运行。

操作输入

Start A Hunt 操作需要以下参数:

参数 说明
Hunt ID

必填。

要启动的搜寻的 ID。此参数接受以逗号分隔的多个值。

操作输出

Start A Hunt 操作提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果

以下示例展示了使用开始搜寻操作时收到的 JSON 结果输出:

[{ "Hunt_ID": "HUNT_ID", "State": STARTED}]
输出消息

Start A Hunt 操作可能会返回以下输出消息:

输出消息 消息说明

Successfully started the following hunts: HUNT_ID_LIST.

Could not start the following hunts. HUNT_ID_LIST could not be found in GRR.

Could not stop the following hunts: HUNT_ID_LIST. Hunt can only be started from PAUSED state.

操作成功。
Error executing action "Start A Hunt". Reason: ERROR_REASON

操作失败。

请检查与服务器的连接、输入参数或凭据。

停止搜寻

使用停止搜寻操作可阻止新客户端进行调度,并在当前流的状态发生变化时中断当前流。

停止搜寻后,您将无法恢复搜寻。此操作会删除当前正在进行的所有结果,并且不会影响已报告的结果。

此操作不会在 Google SecOps 实体上运行。

操作输入

Stop A Hunt 操作需要以下参数:

参数 说明
Hunt ID

必填。

要停止的搜寻的 ID。此参数接受以逗号分隔的多个值。

操作输出

Stop A Hunt 操作会提供以下输出:

操作输出类型 可用性
案例墙附件 不可用
案例墙链接 不可用
案例墙表格 不可用
丰富化表 不可用
JSON 结果 可用
输出消息 可用
脚本结果 可用
JSON 结果

以下示例展示了使用停止搜寻操作时收到的 JSON 结果输出:

[{ "Hunt_ID": "HUNT_ID", "State": STOPPED}]
输出消息

Stop A Hunt 操作可能会返回以下输出消息:

输出消息 消息说明

Successfully stopped the following hunts: HUNT_ID_LIST.

Could not stop the following hunts. HUNT_ID_LIST could not be found in GRR.

Could not stop the following hunts: HUNT_ID_LIST. Hunt can only be stopped from STARTED or PAUSED states.

操作成功。
Error executing action "Stop A Hunt". Reason: ERROR_REASON

操作失败。

请检查与服务器的连接、输入参数或凭据。

脚本结果

下表列出了使用停止搜寻操作时脚本结果输出的值:

脚本结果名称 值
is_success True 或 False

需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。