搜尋原始記錄
執行搜尋時,Google Security Operations 會先檢查已擷取、剖析及正規化的安全性資料。如果正規化資料中沒有所需資訊,可以使用原始記錄檔搜尋功能檢查未剖析的原始記錄檔。您也可以使用規則運算式,更詳細地檢查原始記錄。
您可以使用原始記錄搜尋功能,調查記錄中出現 (但未編入索引) 的構件,包括:
- 使用者名稱
- 檔案名稱
- 註冊資料庫機碼
- 指令列引數
- 與 HTTP 要求相關的原始資料
- 以規則運算式為準的網域名稱
- 資產命名空間和地址
原始記錄搜尋的主要用途
原始記錄搜尋是專為下列用途設計的調查工具:
- 驗證正規化並排解剖析器問題:比較原始記錄項目與產生的 UDM 事件,找出正規化缺口、驗證欄位對應,或找出未剖析的記錄。
- 深入的鑑識調查和威脅搜尋:搜尋未對應至結構化 UDM 欄位的罕見或未編列索引的入侵指標 (IOC)、指令列引數、登錄檔機碼、檔案路徑或特定字串。
- 調查非結構化和自訂資料:立即查詢新加入或專屬的記錄來源,不必等待開發 UDM 剖析器。
原始記錄檔搜尋
您可以使用位於到達網頁或選單列中的「搜尋」列,執行原始記錄搜尋。選擇下列其中一種做法:
請使用 raw= 格式
您可以使用 raw= 格式查詢原始記錄。建議使用這個方法。
- 如要搜尋子字串,請在搜尋字詞前後加上引號,例如:
raw = "ABC"。 - 如要使用規則運算式搜尋,請在運算式前後加上正斜線 (/),
例如
raw = /AB*C/。 - 選用:使用
parsed關鍵字依剖析狀態篩選:parsed = false:顯示未剖析的記錄,其中未產生 UDM 事件。parsed = true:顯示已成功剖析為 UDM 事件的記錄。
舊版方法:使用原始記錄檔搜尋提示
- 在「搜尋」列中,輸入至少四個字元的搜尋字串 (例如 MD5 雜湊),包括萬用字元。
- 如果搜尋沒有傳回任何結果,系統會顯示「原始記錄搜尋」選項。
- 選用:指定「開始時間」和「結束時間」。預設範圍為過去 7 天。
- 選用:在「記錄來源」清單中,選取一或多個記錄來源。預設為「全部」。
- 按一下 [搜尋]。
與搜尋字串相關的事件會顯示在「時間軸」中。按一下事件 (或原始記錄圖示),即可開啟對應的原始記錄。您也可以在「原始記錄搜尋」頁面上,查看搜尋查詢和套用的篩選器。
最佳化原始記錄查詢
原始記錄搜尋會掃描未建立索引的記錄酬載,通常比 UDM 搜尋慢。如要提升搜尋效能,請變更搜尋設定,限制查詢的資料量:
- 時間範圍選取器:限制查詢資料的時間範圍。
- 記錄來源選取器:將原始記錄搜尋範圍限制為僅來自特定來源的記錄,而非所有記錄來源。在「記錄來源」選單中,選取一或多個記錄來源 (預設為「全部」),或直接在查詢中附加
log_source篩選器 (log_source = IN["<var>LOG_SOURCE_NAME</var>"])。 - 規則運算式:使用特定規則運算式。舉例來說,
raw = /goo\w{3}\.com/會比對google.com、goodle.com和goog1e.com,進一步縮小原始記錄搜尋範圍。
目標原始記錄搜尋範例
將 raw = 前置字元與 log_source 和 parsed 篩選器結合,即可將搜尋範圍限制在相關動態消息,並避免大量記錄來源截斷結果:
在單一記錄來源中搜尋完全相符的字串:
raw = "<var>SEARCH_TERM</var>" and log_source = IN["<var>LOG_SOURCE_NAME</var>"]搜尋部分記錄來源:
raw = "<var>SEARCH_TERM</var>" and log_source = IN["<var>LOG_SOURCE_1</var>", "<var>LOG_SOURCE_2</var>"]使用規則運算式搜尋未剖析的記錄:
raw = /<var>REGULAR_EXPRESSION</var>/ and parsed = false and log_source = IN["<var>LOG_SOURCE_NAME</var>"]
趨勢變化
使用「一段時間內的趨勢」圖表,瞭解搜尋期間原始記錄的分布情形。您可以在圖表上套用篩選器,尋找已剖析的記錄和原始記錄。按一下「展開更多」圖示 (或「減少顯示」圖示 ),即可展開或收合圖表。
原始記錄檔結果
執行原始記錄搜尋時,結果會包含與搜尋條件相符的原始記錄所產生的 UDM 事件和實體,以及原始記錄。如要進一步探索搜尋結果,請點選任一結果:
UDM 事件或實體:如果您點選 UDM 事件或實體,Google SecOps 會顯示任何相關事件和實體,以及與該項目相關的原始記錄。
原始記錄:點選原始記錄後,Google SecOps 會顯示整行原始記錄,以及該記錄的來源。
結果限制和取樣
原始記錄搜尋會強制執行下列結果和查詢限制:
- 大量結果限制:如果最近擷取的記錄檔儲存在批次儲存空間中,然後才匯出至長期直欄式儲存空間,則從包含 1,000 個以上事件的大量記錄檔批次中,最多只能傳回 1,000 個結果。將記錄匯出至長期資料欄儲存空間後,就不會受到 1,000 筆結果的批次限制。
- 使用者介面和 CSV 匯出總上限:在 Google SecOps 控制台中進行單一原始記錄搜尋或匯出 CSV 檔案時,所有查詢記錄來源的結果總數最多為 10,000 筆。如果查詢比對超過 10,000 個項目,Google SecOps 會傳回 10,000 個結果的代表性樣本。
- API 結果限制:Raw Log Search API (
SearchRawLogs) 對每個查詢要求 (page_size) 設有 10,000 項記錄的上限。 - 搜尋查詢長度:原始記錄搜尋輸入欄位的字數上限為 150 個半形字元。
同時搜尋多個記錄來源時 (將「記錄來源」選單設為「全部」),Google SecOps 會在分散式儲存空間分片中平行執行查詢,並在記憶體內篩選前套用保護性查詢限制,以維持快速回應時間。由於採用分散式架構,廣泛多來源查詢和單一來源查詢傳回的結果總數可能有所不同,原因如下:
- 不同的擷取量:高用量的記錄來源會產生大量批次,比低用量來源更快達到 1,000 個結果的批次限制。
- 分散式批次取樣:如果批次包含 1,000 個以上的事件,系統會先將傳回的結果限制為 1,000 個,再套用 10,000 個結果的查詢取樣上限,這會改變查詢傳回的取樣記錄比例。
- 近期和過往的儲存層級:系統會從低延遲批次儲存空間查詢近期擷取的記錄,以便立即搜尋,但大型批次最多只能傳回 1,000 個結果。將記錄匯出至長期直欄儲存空間後,查詢會直接掃描個別記錄項目,不會受到 1,000 筆結果的批次限制 (最多可達 10,000 筆結果的查詢總限制),因此歷來搜尋的結果計數會更加一致。
下載原始記錄結果
如要將原始記錄結果下載為 CSV 檔案,請在「原始記錄」結果表格中,依序點選「更多」 >「下載為 CSV」。
根據預設,CSV 檔案一律會包含「原始記錄」欄。你可以使用「資料欄」按鈕開啟「資料欄管理工具」,然後移除或新增「時間戳記」和「類型」資料欄。如果您新增其他資料欄,這些資料欄會顯示在表格中,但不會下載到 CSV 檔案。
如要下載 UDM 欄位,請執行 UDM 搜尋、選取所需資料欄,然後下載為 CSV 檔案。
如果 Google Chrome 顯示 Failed to execute 'showSaveFilePicker' 錯誤,請按照下列步驟操作:
依序前往「裝置」>「Chrome」>「設定」。
選取「使用者和瀏覽器」。
找出「檔案系統寫入權限」設定。
將
prefix.backstory.chronicle.security新增至允許的網站清單。
規則運算式
您可以在 Google SecOps 中使用規則運算式,搜尋並比對安全性資料中的字元字串集。規則運算式可協助您使用資訊片段縮小搜尋範圍,而不必完全相符。
如要使用規則運算式語法執行搜尋,請按照下列步驟操作:
- 在 SIEM 搜尋中,於搜尋欄位輸入
raw = /YOUR_REGEX/,然後按一下「執行搜尋」。 - 在舊版「搜尋」列中:
- 在「搜尋」欄位中輸入規則運算式 (長度為 4 到 66 個字元)。
- 勾選「將查詢做為 Regex 執行」核取方塊,然後按一下「搜尋」(或「原始記錄搜尋」結果頁面上的「更新搜尋」)。
Google SecOps 規則運算式基礎架構是以 Google RE2 為基礎,這是開放原始碼的規則運算式引擎。Google SecOps 使用相同的規則運算式語法。
下表列出一些可用於搜尋的常見規則運算式語法。
| 任何字元 | . |
| x 個任意字元 | {x} |
| 字元類別 | [xyz] |
| 否定字元類別 | [^xyz] |
| 英數字元 (0-9A-Za-z) | [[:alnum:]] |
| 字母 (A-Za-z) | [[:alpha:]] |
| 數字 (0-9) | [[:digit:]] |
| 小寫 (a-z) | [[:lower:]] |
| 大寫 (A-Z) | [[:upper:]] |
| 文字字元 (0-9A-Za-z_) | [[:word:]] |
| 十六進位數字 (0-9A-Fa-f) | [[:xdigit:]] |
| 問號符號 (?) | 比對前一個元素出現零次或一次的情況。 |
| 星號 (*) | 比對前面字元或群組出現零次以上的情況。 |
| 加號 (+) | 比對前面字元或群組出現一或多次的情況。 |
以下範例說明如何使用規則運算式搜尋資料:
goo.le\.com:比對開頭為goo的任何字串,後面接著任何單一字元,再接著le.com,例如google.com或goo0le.com。goo\w{3}\.com:比對開頭為goo的字串,後面接著正好三個單字字元 (\w),結尾為.com。例如google.com、goojle.com或goodle.com。[[:digit:]]\.[[:alpha:]]:比對的字串必須包含一個數字、一個半形句號 (.) 和一個英文字母,例如34323.system、23458.office或897.net。
搜尋 Windows 記錄的規則運算式範例
本節提供可搭配 Google SecOps 原始記錄搜尋功能使用的規則運算式查詢字串,方便您尋找常見的 Windows 監控事件。這些範例假設 Windows 記錄訊息採用 JSON 格式。
如要進一步瞭解常見的 Windows 事件 ID 監控項目,請參閱「要監控的事件」。提供的範例遵循類似模式,如這些用途所述。
| 用途:傳回 EventID 為 1150 的事件 | |
| 規則運算式字串: | \"EventID\"\:\s*1150 |
| 相符的值: | "EventID":1150 |
| 用途:傳回事件 ID 為 1150 或 1151 的事件 | |
| 規則運算式字串 | (?:\"EventID\"\:\s*)(?:1150|1151) |
| 相符的值 | "EventID":1150 和 "EventID":1151 |
| 用途:傳回 Event ID 為 1150 或 1151,且 ThreadID 為 9092 的事件 | |
| 規則運算式字串 | (?:\"EventID\"\:\s*)(?:1150|1151).*(?:\"ThreadID\"\:\s*9092) |
| 相符的值 | "EventID":1150 <...any number of characters...> "ThreadID":9092
和 "EventID":1151 <...any number of characters...> "ThreadID":9092 |
尋找帳戶管理事件
這些規則運算式查詢字串會使用 EventID 屬性,找出常見的帳戶管理事件。
| 活動類型 | 規則運算式 |
| 已建立使用者帳戶 | "EventID\"\:\s*4720 |
| 已啟用使用者帳戶 | "EventID\"\:\s*4722 |
| 使用者帳戶已停用 | "EventID\"\:\s*4725 |
| 使用者帳戶已刪除 | "EventID\"\:\s*4726 |
| 使用者權限修改 | "EventID\"\:\s*4703 |
| 成員新增至已啟用安全性的全域群組 | "EventID\"\:\s*4728 |
| 已從啟用安全性的全域群組中移除成員 | "EventID\"\:\s*4729 |
| 已刪除啟用安全性的全域群組 | "EventID\"\:\s*4730 |
找出登入成功事件
這些規則運算式查詢字串會使用 EventID 和 LogonType 屬性,識別成功登入事件的類型。
| 活動類型 | 規則運算式 |
| 登入成功 | "EventID\"\:\s*4624 |
| 登入成功 - 互動式 (LogonType=2) | "EventID\"\:\s*4624.*?LogonType\"\:\s*\"2\" |
| 登入成功 - 批次登入 (LogonType=4) | "EventID\"\:\s*4624.*?LogonType\"\:\s*\"4\" |
| 登入成功 - 服務登入 (LogonType=5) | "EventID\"\:\s*4624.*?LogonType\"\:\s*\"5\" |
| 登入成功 - RemoteInteractive 登入 (LogonType=10) | "EventID\"\:\s*4624.*?LogonType\"\:\s*\"10\" |
| 登入成功 - 互動式、批次、服務或遠端互動式 | (?:"EventID\"\:\s*4624.*?LogonType\"\:\s*\")(?:2|4|5|10)\" |
尋找登入失敗事件
這些規則運算式查詢字串會使用 EventID 和 LogonType 屬性,識別登入失敗事件類型。
| 活動類型 | 規則運算式 |
| 登入失敗 | "EventID\"\:\s*4625 |
| 登入失敗 - 互動式 (LogonType=2) | "EventID\"\:\s*4625.*?LogonType\"\:\s*\"2\" |
| 登入失敗 - 批次登入 (LogonType=4) | "EventID\"\:\s*4625.*?LogonType\"\:\s*\"4\" |
| 登入失敗 - 服務登入 (LogonType=5) | "EventID\"\:\s*4625.*?LogonType\"\:\s*\"5\" |
| 登入失敗 - RemoteInteractive 登入 (LogonType=10) | "EventID\"\:\s*4625.*?LogonType\"\:\s*\"10\" |
| 登入失敗 - 互動式、批次、服務或遠端互動式 | (?:"EventID\"\:\s*4625.*LogonType\"\:\s*\")(?:2|4|5|10)\" |
尋找程序、服務和工作事件
這些規則運算式查詢字串會使用 EventID 屬性,識別特定程序和服務事件。
| 活動類型 | 規則運算式 |
| 程序開始 | "EventID\"\:\s*4688 |
| 程序結束 | "EventID\"\:\s*4689 |
| 已安裝服務 | "EventID\"\:\s*4697 |
| 已建立新服務 | "EventID\"\:\s*7045 |
| 已建立排定的工作 | "EventID\"\:\s*4698 |
尋找與物件存取權相關的事件
這些規則運算式查詢字串會使用 EventID 屬性,識別不同類型的程序和服務相關事件。
| 活動類型 | 規則運算式 |
| 稽核記錄已清除 | "EventID\"\:\s*1102 |
| 嘗試存取物件 | "EventID\"\:\s*4663 |
| 分享存取權 | "EventID\"\:\s*5140 |
疑難排解
請參閱下表,解決常見的原始記錄搜尋問題:
| 問題 | 說明 | 修正 |
|---|---|---|
| 不同搜尋的結果數量不一致 | 查詢多個記錄來源 (「全部」) 時,由於批次儲存空間和分散式取樣功能對大型批次 (含有 1,000 個以上事件的批次) 設有 1,000 個結果的限制,因此與單一來源查詢相比,最近擷取的記錄傳回的結果總數會有所不同。 | 從「記錄來源」選單選取特定記錄來源,或使用 log_source = IN["LOG_SOURCE_NAME"] 篩選,縮小搜尋時間範圍。 |
| 結果遭到截斷或取樣 (已達 10,000 筆結果的上限) | 搜尋查詢在使用者介面、CSV 匯出或 SearchRawLogs API (page_size) 中,比對出超過 10,000 筆記錄,因此只傳回 10,000 筆結果的樣本。 |
縮短查詢時間範圍 (例如 1 小時),並新增特定 RE2 規則運算式或 parsed = false 篩選器。 |
| 大量擷取稽核差異 | 原始記錄搜尋結果計數與擷取的記錄總量不符,是因為系統會在記憶體內篩選前,套用保護性批次和分片限制。 | 使用 UDM 搜尋、UDM 搜尋中的統計資料和彙整資料,或擷取健康狀態指標,驗證擷取完整性和容量一致性。 |
| 查詢超過字元限制 | 搜尋字串超過原始記錄查詢的 150 個字元限制。 | 簡化規則運算式,或將調查拆分為較小的個別查詢,分別鎖定個別記錄來源。 |
還有其他問題嗎?向社群成員和 Google SecOps 專業人員尋求解答。