将 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 的基础网址,包括端口(例如 |
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"
}
]
输出消息
获取客户端详细信息操作可以返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
|
操作成功。 |
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": " "
}
]
输出消息
获取搜寻详情操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
|
操作成功。 |
Error executing action "Get Hunt Details". Reason: ERROR_REASON |
操作失败。 请检查与服务器的连接、输入参数或凭据。 |
脚本结果
下表列出了使用获取搜寻详情操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
True 或 False |
列出客户端
使用列出客户操作搜索客户并与之互动。
此操作不会在 Google SecOps 实体上运行。
操作输入
列出客户端操作需要以下参数:
| 参数 | 说明 |
|---|---|
Offset |
可选。 搜索客户端的起点(偏移量)。 |
Max Results To Return |
可选。 每个响应中要返回的客户端数量上限。 默认值为 |
操作输出
列出客户端操作提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| 案例墙表格 | 可用 |
| 丰富化表 | 不可用 |
| 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": []
}]
输出消息
列出客户端操作可以返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
|
操作成功。 |
Error executing action "List Clients". Reason: ERROR_REASON |
操作失败。 请检查与服务器的连接、输入参数或凭据。 |
脚本结果
下表列出了使用列出客户端操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
True 或 False |
列表搜索
使用列出搜寻操作可检索有关所有可用搜寻的信息。
此操作不会在 Google SecOps 实体上运行。
操作输入
List Hunts 操作需要以下参数:
| 参数 | 说明 |
|---|---|
Creator |
可选。 创建了搜寻的用户。 |
Offset |
可选。 搜索搜寻活动的起始点(偏移量)。 |
Max Results To Return |
可选。 每个响应中要返回的搜寻数量上限。 默认值为 |
操作输出
列出搜寻操作会提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| 案例墙表格 | 可用 |
| 丰富化表 | 不可用 |
| 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",
}
]
输出消息
列出搜寻操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
|
操作成功。 |
Error executing action "List Hunts". Reason: ERROR_REASON |
操作失败。 请检查与服务器的连接、输入参数或凭据。 |
脚本结果
下表列出了使用列出搜寻操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
True 或 False |
列出已启动的流程
使用列出已启动的流操作列出在指定客户端上启动的流。
此操作在以下 Google SecOps 实体上运行:
IP AddressHostname
操作输入
列出已启动的流程操作需要以下参数:
| 参数 | 说明 |
|---|---|
Offset |
可选。 搜索流程的起点(偏移量)。 |
Max Results To Return |
可选。 每个响应中要返回的流数量上限。 默认值为 |
操作输出
列出已启动的流操作会提供以下输出:
| 操作输出类型 | 可用性 |
|---|---|
| 案例墙附件 | 不可用 |
| 案例墙链接 | 不可用 |
| 案例墙表格 | 可用 |
| 丰富化表 | 不可用 |
| 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"
}
输出消息
列出已启动的流程操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
|
操作成功。 |
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 操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
|
操作成功。 |
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 操作可能会返回以下输出消息:
| 输出消息 | 消息说明 |
|---|---|
|
操作成功。 |
Error executing action "Stop A Hunt". Reason: ERROR_REASON |
操作失败。 请检查与服务器的连接、输入参数或凭据。 |
脚本结果
下表列出了使用停止搜寻操作时脚本结果输出的值:
| 脚本结果名称 | 值 |
|---|---|
is_success |
True 或 False |
需要更多帮助?获得社区成员和 Google SecOps 专业人士的解答。