很多企業(yè)使用 SIEM
來收集日志數(shù)據(jù),并將安適事件與多類安適設備(入侵檢測設備、Web應用防火墻等)日志相關(guān)聯(lián),,指導安適人員進行風險處置。然而 SIEM
也存在局限,監(jiān)控人員往往被淹沒在海量的告警之中無從下手,原因之一就是對于威脅的告警沒有處理的依據(jù),例如缺乏經(jīng)驗的監(jiān)控人員很難判定一條安適事件告警是掃描還是針對性攻擊引起的(通常后者需要更多關(guān)注)。而通過借助于威脅情報,可為監(jiān)控人員提供處理依據(jù),也可為安適人員在進行日志分析和攻擊溯源時提供有力幫手。
本文將基于 Splunk,介紹威脅情報在甲方安適運維中的應用。
什么是威脅情報
按照Gartner的定義,威脅情報是指基于必然知識的證據(jù),已經(jīng)存在或正在形成的潛在威脅,好比,上下文、機制、指標、意義以及可實施的建議,利用這些,可以幫手當事人形成應對這些危險的決策。
針對攻擊者的威脅情報應該包羅以下要點:

系統(tǒng)架構(gòu)
在我們公司,Splunk 主要被用來收集各類安適設備、操作系統(tǒng)、應用系統(tǒng)日志,從而實現(xiàn)安適監(jiān)控、安適告警、數(shù)據(jù)分析的需求。
安適設備通過 Syslog 發(fā)送,其余存放于操作系統(tǒng)文件系統(tǒng)中的日志通過在客戶端操作系統(tǒng)安置 Splunk Forwarder 實現(xiàn)日志收集。
初期通過日志字段提取后在 Splunk
實現(xiàn)了基本的報表和告警。然而正如前言所述,我們很快就被告警淹沒,無論如何調(diào)整告警閾值都無法令人滿意,于是開始尋找解決方案,通過一系列的選型比較,我們最終決定引入來自微步在線(ThreatBook)的第三方安適情報數(shù)據(jù),以API形式與
Splunk 整合。
需要注意的是——威脅情報數(shù)據(jù)的用量通常是有限制的(如按月計量),因此我們安排了前置系統(tǒng)作為當?shù)赝{情報庫,用以緩存查詢結(jié)果,還順帶實現(xiàn)了專供內(nèi)部使用的
Web 交互查詢界面,后來又順路實現(xiàn)了威脅歷史信息的記錄,所有產(chǎn)生過告警的威脅都會被記錄,而且可被關(guān)聯(lián)搜索。如下圖所示:

(威脅情報分析界面圖,威脅情報數(shù)據(jù)來自微步在線ThreatBook TIP API)
隨著威脅情報數(shù)據(jù)的應用,我們逐漸信任了數(shù)據(jù)的準確度,并開始研究威脅IP自動阻斷方案。由于在網(wǎng)絡建設時并沒有這個需求,因此我們的首要目標是逐個尋找網(wǎng)絡中是否有串聯(lián)設備支持通過調(diào)用
API 的方式來達到 IP 阻斷的目的,最終我們在一臺抗 DDoS 設備中發(fā)現(xiàn)了這個功能,并根據(jù)手冊要求的數(shù)據(jù)格式實現(xiàn)了接口調(diào)用。
系統(tǒng)架構(gòu)示意圖如下:

技術(shù)要點
日志字段提取
日志字段的提取是最基礎也是最重要的步驟,后續(xù)所有的工作都是基于正確的日志字段提取之上。
Splunk 提供了傻瓜式的字段提取功能,只要展開任意事件,點擊“事件操作”,選擇“提取字段”即可進行提取,提取完成后可自動生成正則表達式。

對于一些比較復雜的日志格式,使用 Splunk 的自動化提取可能就力不從心了(又或許你對自動生成的正則表達式嗤之以鼻),我們可以手寫正則表達式,并在“設置-字段-字段提取”中生存。

圖:Splunk 的字段提取
對于臨時使用的需求,也可以在搜索中使用 rex 命令對事件應用正則表達式:
... | rex field=some_field "(?<capture_name>.*)"
對于一些以鍵值對形式輸出的日志,可通過 extract 命令進行提取,十分便利:
... | extract kvdelim="=" pairdelim=";"
威脅情報庫查詢
威脅情報庫的查詢使用了 Splunk 的 lookup 命令,通過給 lookup 命令傳遞一個查詢值從而獲得對應的查詢結(jié)果。
lookup 的典型使用場景之一是按照日志中的 IP 地址來查找對應的資產(chǎn):由于日志中不包羅資產(chǎn)信息,而我們又希望通過 IP
地址快速定位到相關(guān)資產(chǎn)信息,此時就可以建立一張資產(chǎn)表,上傳至 Splunk,在“設置-查找”完成配置后,即可通過 lookup 命令進行搜索。
... | lookup asset_table ip_addr AS dst_ip OUTPUT asset_info
而在使用 lookup 對威脅情報進行查詢時,則需要用到“外部查找”功能,原理類似于動態(tài)生成一個查找表文件。外部查找功能需要調(diào)用命令和參數(shù),Splunk 的默認安置中提供了一個名為“dnslookup”的外部查找,可以用來參考實現(xiàn)本身的外部查找。

威脅情報查詢外部查找腳本的部分實現(xiàn)代碼如下:

威脅情報查詢語句如下:
... | stats count by client_ip server_ip | lookup iplookup ip as client_ip OUTPUT info as _TI | spath input=_TI