整合 GRR Rapid Response 與 Google SecOps

本文說明如何設定 GRR Rapid Response,並與 Google Security Operations 整合。

用途

GRR Rapid Response 整合功能運用 Google SecOps 功能,支援下列用途:

  • 端點鑑識資料收集:自動觸發鑑識流程,在調查期間從遠端端點收集檔案、登錄機碼和記憶體構件。

  • 快速威脅搜尋:在所有受管理用戶端中搜尋特定檔案或雜湊,找出入侵範圍。

  • 用戶端中繼資料擴充:擷取詳細的用戶端資訊,包括 OS 版本、硬體規格和網路設定,為安全性警示提供背景資訊。

  • 自動化事件應變:使用應對手冊列出活躍用戶端,或在偵測到惡意活動後立即搜尋可疑構件。

事前準備

在 Google SecOps 設定整合功能前,請先確認 GRR Rapid Response 環境符合下列需求:

  • API 憑證:您必須擁有有效的使用者名稱和密碼,才能存取 GRR 伺服器的 API。

  • 帳戶權限:確認用於整合的帳戶具備足夠權限,可啟動流程並搜尋目標用戶端的構件。

  • 伺服器設定:找出 GRR 伺服器的 API 根層級 (例如 https://<grr-server-address>:8000)。

  • 網路存取權:確認網路設定允許從 Google SecOps 環境,傳出 HTTPS 連線至 GRR API 端點。

整合參數

GRR Rapid Response 整合需要下列參數:

參數 說明
API Root

這是必填欄位。

GRR 伺服器 API 的基準網址,包括通訊埠 (例如 https://grr.example.com:8000)。

Username

這是必填欄位。

用於驗證連線的 GRR 帳戶使用者名稱。

Password

這是必填欄位。

與 GRR 帳戶相關聯的密碼,用於驗證。

Verify SSL

選填。

如果選取,整合功能會在連線至 GRR 伺服器時驗證 SSL 憑證。

(預設為啟用)。

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

如有需要,您可以在後續階段進行變更。設定整合執行個體後,即可在應對手冊中使用。如要進一步瞭解如何設定及支援多個執行個體,請參閱「支援多個執行個體」。

動作

如要進一步瞭解動作,請參閱「 在工作區回應待處理動作」和「在案件中執行手動動作」。

取得用戶端詳細資料

使用「Get Client Details」動作,擷取完整的客戶詳細資料。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

「Get Client Details」動作需要下列參數:

參數 說明
Client ID

這是必填欄位。

用戶端 ID。這個參數接受多個值,並以半形逗號分隔。

動作輸出內容

「Get Client Details」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 可用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼執行結果 可用
案件總覽表格

「Get Client Details」動作可產生下列資料表:

資料表名稱:GRR Clients Details

表格欄:

  • 用戶端 ID
  • 主機
  • OS 版本
  • 標籤
  • 記憶體大小
  • 用戶端版本
  • 首次出現日期
  • 上次上線時間
  • OS 安裝日期
JSON 結果

以下範例顯示使用「Get Client Details」動作時,收到的 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"
        }
]
輸出訊息

「Get Client Details」動作可傳回下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

請檢查伺服器連線、輸入參數或憑證。

指令碼執行結果

下表列出使用「Get Client Details」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success True或False

取得獵捕詳細資料

使用「Get Hunt Details」動作擷取搜尋詳細資料。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

「Get Hunt Details」動作需要下列參數:

參數 說明
Hunt ID

這是必填欄位。

要擷取的搜尋 ID。這項參數接受多個值,請以半形逗號分隔。

動作輸出內容

「Get Hunt Details」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 可用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼執行結果 可用

「Get Hunt Details」動作可產生下列連結:

API_ROOT/#/hunts/HUNT_ID

JSON 結果

以下範例顯示使用「Get Hunt Details」動作時,收到的 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": " "
        }
]
輸出訊息

Get Hunt Details 動作可傳回下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

請檢查伺服器連線、輸入參數或憑證。

指令碼執行結果

下表列出使用「Get Hunt Details」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success True或False

列出用戶端

使用「List Clients」動作搜尋客戶並與其互動。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

「List Clients」動作需要下列參數:

參數 說明
Offset

選填。

搜尋用戶端的起始點 (偏移)。

Max Results To Return

選填。

每則回應中傳回的用戶端數量上限。

預設值為 5。

動作輸出內容

「List Clients」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 可用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼執行結果 可用
案件總覽表格

「List Clients」動作可產生下表:

資料表名稱:GRR Clients

表格欄:

  • 用戶端 ID
  • 主機
  • OS 版本
  • 首次出現日期
  • 用戶端版本
  • 標籤
  • 上次確認
  • OS 安裝日期
JSON 結果

以下範例顯示使用「List Clients」動作時,收到的 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": []
   }]
輸出訊息

「List Clients」動作可能會傳回下列輸出訊息:

輸出訊息 訊息說明

Successfully listed available clients in GRR.

No clients are available in GRR.

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

動作失敗。

請檢查伺服器連線、輸入參數或憑證。

指令碼執行結果

下表列出使用「List Clients」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success True或False

清單搜尋

使用「List Hunts」動作,擷取所有可用搜尋的相關資訊。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

List Hunts 動作需要下列參數:

參數 說明
Creator

選填。

建立搜尋作業的使用者。

Offset

選填。

搜尋獵殺活動的起始點 (偏移)。

Max Results To Return

選填。

每則回覆中傳回的搜尋數量上限。

預設值為 5。

動作輸出內容

「List Hunts」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 可用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼執行結果 可用
案件總覽表格

「List Hunts」動作可產生下表:

資料表名稱:Hunts

表格欄:

  • Hunt ID
  • Status
  • 建立時間
  • 開始時間
  • 時間長度
  • 用戶端限制
  • 到期時間
  • 創作者
  • 說明
JSON 結果

以下範例顯示使用「List Hunts」動作時,收到的 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",
    }
]
輸出訊息

「List Hunts」動作可能會傳回下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

請檢查伺服器連線、輸入參數或憑證。

指令碼執行結果

下表列出使用「List Hunts」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success True或False

列出已啟動的流程

使用「List Launched Flows」動作,列出在指定用戶端上啟動的流程。

這項動作會在下列 Google SecOps 實體上執行:

  • IP Address
  • Hostname

動作輸入內容

「List Launched Flows」動作需要下列參數:

參數 說明
Offset

選填。

搜尋流程的起點 (偏移量)。

Max Results To Return

選填。

每則回應中傳回的流程數量上限。

預設值為 5。

動作輸出內容

「List Launched Flows」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 可用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼執行結果 可用
案件總覽表格

「List Launched Flows」動作可產生下表:

資料表名稱:GRR Launch Flows

表格欄:

  • 流程名稱
  • 流程 ID
  • 「State」
  • 建立時間
  • 上次活動時間
  • 創作者
JSON 結果

以下範例顯示使用「List Launched Flows」動作時,收到的 JSON 結果輸出內容:

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

「List Launched Flows」動作可能會傳回下列輸出訊息:

輸出訊息 訊息說明

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

動作失敗。

請檢查伺服器連線、輸入參數或憑證。

指令碼執行結果

下表列出使用「List Launched Flows」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success True或False

乒乓

使用 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

開始搜尋

使用「Start A Hunt」動作,啟動新建立的搜尋。根據預設,GRR Rapid Response 會將 PAUSED 狀態指派給所有新搜尋。

GRR Rapid Response 會將所有達到用戶端限制的搜尋設為 PAUSED 狀態。移除用戶端限制後,您可以使用「Start A Hunt」(開始搜尋) 動作,重新啟動暫停的搜尋。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

Start A Hunt 動作需要下列參數:

參數 說明
Hunt ID

這是必填欄位。

要開始的搜尋 ID。這項參數接受多個值,請以半形逗號分隔。

動作輸出內容

「Start A Hunt」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼執行結果 可用
JSON 結果

以下範例顯示使用「Start A Hunt」動作時,收到的 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

動作失敗。

請檢查伺服器連線、輸入參數或憑證。

停止搜尋

使用「Stop A Hunt」動作,可防止新用戶端排定工作,並在狀態變更時中斷目前流程。

停止後即無法重新啟動。這項操作會刪除目前進行中的所有結果,但不會影響已回報的結果。

這項動作不會在 Google SecOps 實體上執行。

動作輸入內容

「Stop A Hunt」動作需要下列參數:

參數 說明
Hunt ID

這是必填欄位。

要停止的搜尋 ID。這項參數接受多個值,請以半形逗號分隔。

動作輸出內容

「Stop A Hunt」動作會提供下列輸出內容:

動作輸出類型 可用性
案件總覽附件 無法使用
案件總覽連結 無法使用
案件總覽表格 無法使用
補充資訊表格 無法使用
JSON 結果 可用
輸出訊息 可用
指令碼執行結果 可用
JSON 結果

以下範例顯示使用「Stop A Hunt」動作時,收到的 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

動作失敗。

請檢查伺服器連線、輸入參數或憑證。

指令碼執行結果

下表列出使用「Stop A Hunt」動作時,指令碼結果輸出的值:

指令碼結果名稱 值
is_success True或False

還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。