威脅情報在甲方安全運維中的應用
前言
很多企業使用 SIEM 來收集日志數據,并將安全事件與多類安全設備(入侵檢測設備、Web應用防火墻等)日志相關聯,指導安全人員進行風險處置。然而 SIEM 也存在局限,監控人員往往被淹沒在海量的告警之中無從下手,原因之一就是對于威脅的告警沒有處理的依據,例如缺乏經驗的監控人員很難判定一條安全事件告警是掃描還是針對性攻擊引起的(通常后者需要更多關注)。而通過借助于威脅情報,可為監控人員提供處理依據,也可為安全人員在進行日志分析和攻擊溯源時提供有力幫助。
在本文中,來自證通股份有限公司的安全管理團隊證通白帽子,將基于 Splunk,介紹威脅情報在甲方安全運維中的應用。
什么是威脅情報
根據Gartner的定義,威脅情報是指基于一定知識的證據,已經存在或正在形成的潛在威脅,比如,上下文、機制、指標、意義以及可實施的建議,利用這些,可以幫助當事人形成應對這些危險的決策。
針對攻擊者的威脅情報應該包含以下要點:
?? 
系統架構
在我們公司,Splunk 主要被用來收集各類安全設備、操作系統、應用系統日志,從而實現安全監控、安全告警、數據分析的需求。
安全設備通過 Syslog 發送,其余存放于操作系統文件系統中的日志通過在客戶端操作系統安裝 Splunk Forwarder 實現日志收集。
初期通過日志字段提取后在 Splunk 實現了基本的報表和告警。然而正如前言所述,我們很快就被告警淹沒,無論如何調整告警閾值都無法令人滿意,于是開始尋找解決方案,通過一系列的選型比較,我們最終決定引入來自微步在線(ThreatBook)的第三方安全情報數據,以API形式與 Splunk 整合。
需要注意的是——威脅情報數據的用量通常是有限制的(如按月計量),因此我們部署了前置系統作為本地威脅情報庫,用以緩存查詢結果,還順帶實現了專供內部使用的 Web 交互查詢界面,后來又順路實現了威脅歷史信息的記錄,所有產生過告警的威脅都會被記錄,并且可被關聯搜索。如下圖所示:
?? 
(威脅情報分析界面圖,威脅情報數據來自微步在線ThreatBook API)
隨著威脅情報數據的應用,我們逐漸信任了數據的準確度,并開始研究威脅IP自動阻斷方案。由于在網絡建設時并沒有這個需求,因此我們的首要目標是逐個尋找網絡中是否有串聯設備支持通過調用 API 的方式來達到 IP 阻斷的目的,最終我們在一臺抗 DDoS 設備中發現了這個功能,并按照手冊要求的數據格式實現了接口調用。
系統架構示意圖如下:
?? 
技術要點
日志字段提取
日志字段的提取是最基礎也是最重要的步驟,后續所有的工作都是基于正確的日志字段提取之上。
Splunk 提供了傻瓜式的字段提取功能,只要展開任意事件,點擊“事件操作”,選擇“提取字段”即可進行提取,提取完成后可自動生成正則表達式。
?? 
對于一些比較復雜的日志格式,使用 Splunk 的自動化提取可能就力不從心了(又或許你對自動生成的正則表達式嗤之以鼻),我們可以手寫正則表達式,并在“設置-字段-字段提取”中保存。
?? 
圖:Splunk 的字段提取
對于臨時使用的需求,也可以在搜索中使用 rex 命令對事件應用正則表達式:
對于一些以鍵值對形式輸出的日志,可通過 extract 命令進行提取,十分方便:
威脅情報庫查詢
威脅情報庫的查詢使用了 Splunk 的 lookup 命令,通過給 lookup 命令傳遞一個查詢值從而獲得對應的查詢結果。
lookup 的典型使用場景之一是根據日志中的 IP 地址來查找對應的資產:由于日志中不包含資產信息,而我們又希望通過 IP 地址快速定位到相關資產信息,此時就可以建立一張資產表,上傳至 Splunk,在“設置-查找”完成配置后,即可通過 lookup 命令進行搜索。
而在使用 lookup 對威脅情報進行查詢時,則需要用到“外部查找”功能,原理類似于動態生成一個查找表文件。外部查找功能需要調用命令和參數,Splunk 的默認安裝中提供了一個名為“dnslookup”的外部查找,可以用來參考實現自己的外部查找。
?? 
威脅情報查詢外部查找腳本的部分實現代碼如下:
?? 
威脅情報查詢語句如下:
此處首先使用了 stats 命令統計事件數據,隨后使用 lookup 命令對統計完成的數據進行威脅情報查詢,這樣的處理方式可避免重復的查詢,降低系統和網絡開銷,最后將 lookup 命令查詢返回的 JSON 格式數據使用 spath 命令解析。
威脅情報數據解析
對于 IP 的威脅查詢接口,一個惡意的 IP 通過 API 查詢返回的示例數據如下:
字段說明如下:
?? 
有了字段信息,我們需要把這個 JSON 字符串解析后再進行下一步判斷。Splunk 提供了 spath 命令,可以將此前 lookup 返回的內容作為 spath 的輸入,并最終輸出解析完成的數據。如下圖所示:
?? 
防火墻自動阻斷 API 調用
防火墻的 API 調用和觸發通過 Splunk 的“搜索、報表和告警”實現。通過在 Splunk 中創建定時任務,對一定時間窗口內的日志進行分析,結合威脅情報數據返回判斷結果,以此為依據決定是否觸發阻斷腳本。
?? 
?? 
應用場景
所有的技術問題都已解決,后續的工作分為兩塊:利用威脅情報數據豐富現有查詢結果,以及使用新的思路來實現原本無法實現的效果。
我們為此前所有與來源有關的告警都添加了威脅情報信息,監控、安全人員在第一時間即可大致評估事件的嚴重性。
?? 
?? 
優化模型
有了 IP 地址威脅情報數據,可以有助于評估當前面臨的安全威脅的嚴重程度,并以可視化的方式呈現。實現方式為:以一定維度(如時間、IP 地址、類型等)聚合安全事件,對聚合的事件做基于 IP 地址的威脅情報查詢,隨后套用特定的模型并呈現。
自動阻斷
威脅情報也為威脅程度的判斷提供了依據,通過定時任務,當發現高危威脅且威脅來源 IP 地址符合預定義的條件時,即觸發腳本調用防火墻 API 的方式,實現黑名單 IP 地址的網絡層自動阻斷。
?? 
DNS
我們也使用了威脅情報提供的域名威脅情報查詢功能,在 DNS 服務器中開啟了 DNS 調試日志并轉發至 Splunk,對匹配的惡意域名解析請求可及時告警。同時計劃實現將惡意域名自動解析到本地的功能,以最大限度避免威脅的擴散。
結語
目前我們在威脅情報的應用還處于摸索階段,只發揮了其中一小部分的能力。從威脅情報信息的分類角度,威脅情報除了 IP 地址情報、DNS 情報,還可提供文件哈希情報等信息;從威脅情報的要素來說,我們當前只使用了攻擊者身份、攻擊者位置等基本信息。相信如果更全面地利用這些信息,可以為安全從業者們提供全新的安全視角、更廣的安全視野,甚至會對工作方式、工具產生革命性的提升。



























