發布日期:2023/10/18
利用 metadata 和 tstats 快速建立對現有情境的認知
您想捕獵威脅是嗎?好吧,年輕的學徒,先等等。正如一位 Splunk 絕地大師曾經告訴過我的,欲速則不達。這是什麼意思呢?嗯,如果您急著開始威脅捕獵,然後無差別地使用 SPL,那麼您的調查可能漏掉不少東西。例如什麼?就像一位智者曾經說過的,要了解您的網路。實際上,這時您要先了解您的網路和主機。

若要有效地進行捕獵,了解您擁有和沒有的主機資料非常重要。如果沒有這些資訊,您在威脅捕獵中可能會做出導致糟糕決策的假設。
今天,我將與大家分享我的初始資訊收集方法,以及我如何使用 metadata 和 tstats 命令來了解我在開始威脅捕獵時有哪些可用的資料。
(本文是我們 Splunk 威脅捕獵系列的一部分,最初由 Domenico “Mickey” Perre 撰寫。我們最近更新了這篇文章,以幫助您發揮它的最大價值)
用於威脅捕獵的 metadata 命令
我們先來看看 metadata (譯註:"metadata" 常譯稱「中繼資料」、「後設資料」,這裡指的是一個 Splunk 的英文命令) metadata 命令是一個產生命令,意味著它是進行一次搜尋時的第一個命令。
提示一下那些對 Splunk 仍然不太熟悉的人,部分欄位是進行索引時寫入的。包括:
這些中繼資料欄位 (看到我做的嗎?) 可以被搜尋,並回傳包含首次時間、最後時間和次數的特定值。以下是一些範例。
了解您的資料:時間範圍與資料類型
我的主管要求我根據最近收集到的一些指標開始進行捕獵。我想到第一件事,是檢查我是否有與想捕獵的時間區段相關的資料集可用。這是一次快速搜尋,我想在 Splunk 中執行它並列舉出過去七天的資料類型。

正如您所看到的,在過去七天裡,我有 5,162 個 FireEye事件。透過一些時間轉換,我確定這些資料首次出現在索引器上是在 2017 年 5 月 12 日 2 時 31 分 00 秒 (GMT),最後一次出現在索引器上則是 2017 年 5 月 20 日 22 時 01 分 12 秒 (GMT)。
根據搜尋時間範圍 (從 5 月 13 日 22 時 00 分到 5 月 20 日 22 時 38 分 15 秒),我有把握認為這些 FireEye 資料相當足夠。但如果我的調查時間涵蓋 5 月 12 日之前,那麼我就無法使用 FireEye 資料,因為這可能會影響我處理這次活動的方式,或降低我確定某事首次出現在網路中的信心。
了解您的資料:主機
現在我知道了我在 Splunk 中有哪些資料類型,接著來看哪些主機正在傳送這些資料,以及我是否擁有所有主機的最新資料?
也許我想要分開寫入特定索引的主機。在這種範例中,我想要查看所有在 'os' 索引中有資料的主機,因為我知道該索引中的資料對這次捕獵很重要。

metadata 命令的選項不多,但您可以將搜尋範圍縮小到以下程度:
一旦您獲得了一組結果集,就可以對結果進行更多的 SPL 操作,以便獲取額外的資訊。也許您想在進行捕獵之前提高對周圍環境、情況或特定領域的認識,檢查過去 24 小時內是否有特定主機沒有向 Splunk 發送資料。
在這個搜尋中,我使用 metadata 命令來獲得主機列表。透過 eval、search 和 fieldformat 命令,我能夠:
關於 metadata 的一些最後想法。在使用之前,需要使用 get_metadata 功能將中繼資料與用戶角色關聯起來。(有趣的事實:事實上,當您點擊搜尋首頁上的「資料摘要」按鈕時,就是執行 metadata 命令)
現在我們來看一些不同的東西... (實際上並不是)。
用於捕獵的 tstats 命令
Splunk 中的另一個強大但較不知名的命令是 tstats。tstats 命令 除了能夠讓您一躍而上跳過高樓大廈 (好吧,也許沒辦法),還可以以極快的速度產生搜尋結果。
就像 metadata 一樣,tstats 是一個產生命令,它可以應用於以下方面:
(我和下一個作者一樣喜歡資料模型,但在這篇文章中談論它們的篇幅不夠,我們留待以後討論)
同時,我想進一步提升我已經建立的情境意識,回答在開始捕獵時的一些基本問題:我能夠得到哪些資訊,我是否有盲點?也許我想快速檢視我的 DNS 事件。

我可以快速產生過去七天的事件總數,其中資料類型為 stream:dns,且資料位於主索引中。在這個搜尋中,資料將按 _time 和主機,並以 1 小時的間隔被拆解。就像中繼資料一樣,一旦執行了初始搜尋,我就可以使用 SPL 來按照自己的需求格式化資料。這裡我使用 xyseries 命令,然後使用區域圖來產生一個 DNS 主機事件的圖表。
值得注意的是,如果您的對象只是一部分主機,以這種方式使用 tstats 或許不是最好的做法。如果您想要以表格產生輸出和計數,那麼這樣做是非常有效的。注意如果在圖表中包含過多的主機資料,圖表可能變得非常擁擠和雜亂,使分析師難以快速、清楚地理解圖表的資訊。
知道這個小提示後,我們來建立一個搜尋,快速識別那些記錄的資料量多於或少於正常預期的主機。即使資料來自大量主機,我們也可以輕鬆地對資料設定邊界。

在這次搜尋中,我查看記錄到索引 'os' 的主機,並想要回顧過去七天,將時間細分為 3 小時的間隔,以找到每個主機的事件中位數計數。可以在這裡使用的統計選項有:
接著我查看過去 3 小時的相同資訊。為了確定中位數和目前計數之間的百分比差異,我們用除法獲得百分比值,然後篩選正負 5% (+/-5%) 的結果。排序和重新命名欄位能使其易於理解,因為我現在已經找到異常值,還產生了一個圖表,顯示出中位數、目前事件數以及百分比差異。
利用 metadata 和 tstats 來追蹤惡意活動
希望這篇文章能您提供如何使用 metadata 和 tstats 命令的強大功能,以及如何在開始捕獵時使用這些能力來快速獲得與主機和資料類型相關的情境意識的好點子。
一如既往地,祝您捕獵愉快!
作者
Tamara Chacon
Tamara 是 Splunk 的 SURGe 團隊成員,她協助團隊的幕後工作。在加入 Splunk 之前,她曾擔任網路工程師。