0
雷鋒網(wǎng)宅客頻道按:最近,你的女朋友對你愛答不理,不僅微信回復的越來越慢,就連你沉迷于“農(nóng)藥”游戲也不再批評。于是,你開始慌了,難道她也迷上了“農(nóng)藥”?還是說她正在給你織一頂帽子,綠色的?
如何從女朋友的反常行為中找到蛛絲馬跡,然后抽絲剝繭,找到女朋友變冷淡的元兇?這,是一個難題。
其實,企業(yè)也面對相似的問題:如何從海量的告警之中發(fā)現(xiàn)真正的威脅,使得監(jiān)控人員能夠及時處理,一直是一個難題。本文作者從公司內(nèi)部的實際案例出發(fā),詳細講述了威脅情報在甲方安全運維中的應用。
本文作者:證通白帽子
很多企業(yè)使用 SIEM(安全信息和事件管理) 來收集日志數(shù)據(jù),并將安全事件與多類安全設備(入侵檢測設備、Web應用防火墻等)日志相關(guān)聯(lián),用來指導安全人員進行風險處置。然而 SIEM 也存在局限,監(jiān)控人員往往被淹沒在海量的告警之中無從下手,原因之一就是對于威脅的告警沒有處理的依據(jù),例如缺乏經(jīng)驗的監(jiān)控人員很難判定:某一條安全事件告警是掃描還是針對性攻擊引起的(通常后者需要更多關(guān)注)。而威脅情報不僅可以為監(jiān)控人員提供處理依據(jù),也可以為安全人員在進行日志分析和攻擊溯源時提供有力幫助。
本文將基于 Splunk(一款機器數(shù)據(jù)引擎),介紹威脅情報在甲方安全運維中的應用。
根據(jù) Gartner 的定義,威脅情報是指基于一定知識的證據(jù),已經(jīng)存在或正在形成的潛在威脅,比如,上下文、機制、指標、意義以及可實施的建議,利用這些,可以幫助當事人形成應對這些危險的決策。
針對攻擊者的威脅情報應該包含以下要點:
攻擊者身份:威脅情報需要能夠幫助企業(yè)將攻擊、惡意活動最終溯源至相應組織(網(wǎng)絡犯罪團體、黑客、政府/國家機構(gòu)等)。
攻擊的原因:了解對方動機,以及他們會在攻擊中投入多少精力(APT或僅是投機型攻擊),針對性有多強等。
攻擊的目的:了解攻擊者的目的,對于企業(yè)和組織基于資產(chǎn)重要性調(diào)整響應優(yōu)先級也是有意義的。
具體做法:包含了攻擊者所用的工具、基礎(chǔ)設施等。
攻擊者的位置 :結(jié)合對方所在國家,以及其地緣政治狀況,能夠幫助企業(yè)和組織更好地理解對方情況。
如何組織情報:包括 IOC 一類的技術(shù)指標(比如IP地址、哈希值等)提供的信息可用來更準確地檢測和標記惡意行為。
如何緩解攻擊:企業(yè)可用以保護自身的信息。
在我們公司,Splunk 主要被用來收集各類安全設備、操作系統(tǒng)、應用系統(tǒng)日志,從而滿足安全監(jiān)控、安全告警、數(shù)據(jù)分析的需求。
安全設備的日志通過 Syslog 發(fā)送,其余存放于操作系統(tǒng)文件系統(tǒng)中的日志通過在客戶端操作系統(tǒng)安裝 Splunk Forwarder 收集。
通過日志字段提取,我們利用 Splunk 實現(xiàn)了基本的報表和告警。然而正如前文提到的,我們很快就被告警淹沒,無論如何調(diào)整告警閾值都無法令人滿意,于是開始尋找解決方案,通過一系列的選型比較,我們最終決定引入來自微步在線(ThreatBook)的第三方安全情報數(shù)據(jù),以 API 的形式與 Splunk 整合。
需要注意的是——威脅情報數(shù)據(jù)的用量通常是有限制的(如按月計量),因此我們部署了前置系統(tǒng)作為本地威脅情報庫,用以緩存查詢結(jié)果,同時,我們還順帶實現(xiàn)了專供內(nèi)部使用的 Web 交互查詢界面,后來又順路實現(xiàn)了威脅歷史信息的記錄:所有產(chǎn)生過告警的威脅都會被記錄,并且可被關(guān)聯(lián)搜索。如下圖所示:
威脅情報分析界面圖,威脅情報數(shù)據(jù)來自微步在線ThreatBook API
隨著威脅情報數(shù)據(jù)的應用,我們逐漸信任了數(shù)據(jù)的準確度,并開始研究威脅 IP 自動阻斷方案。由于在網(wǎng)絡建設時并沒有這個需求,因此我們的首要目標是:在網(wǎng)絡中尋找是否有串聯(lián)設備支持通過調(diào)用 API 的方式來達到 IP 阻斷的目的。最終,我們在一臺抗 DDoS 設備中發(fā)現(xiàn)了這個功能,并按照手冊要求的數(shù)據(jù)格式實現(xiàn)了接口調(diào)用。
系統(tǒng)架構(gòu)示意圖如下:
日志字段的提取是最基礎(chǔ),也是最重要的步驟,后續(xù)所有的工作都是基于正確的日志字段提取之上。
Splunk 提供了傻瓜式的字段提取功能,只要展開任意事件,點擊“事件操作”,選擇“提取字段”即可進行提取,提取完成后可自動生成正則表達式。
對于一些比較復雜的日志格式,Splunk 的自動化提取可能就力不從心了(又或許你對自動生成的正則表達式嗤之以鼻),我們可以手寫正則表達式,并在“設置-字段-字段提取”中保存。
Splunk 的字段提取
對于臨時使用的需求,也可以在搜索中使用 rex 命令對事件應用正則表達式:
rex field=some_field "(?<capture_name>.*)"
對于一些以鍵值對形式輸出的日志,可通過 extract 命令進行提取,十分方便:
extract kvdelim="=" pairdelim=";"
威脅情報庫的查詢使用了 Splunk 的 lookup 命令,通過給 lookup 命令傳遞一個查詢值從而獲得對應的查詢結(jié)果。
lookup 的典型使用場景之一是根據(jù)日志中的 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
此處首先使用了 stats 命令統(tǒng)計事件數(shù)據(jù),隨后使用 lookup 命令對統(tǒng)計完成的數(shù)據(jù)進行威脅情報查詢,這樣的處理方式可避免重復的查詢,降低系統(tǒng)和網(wǎng)絡開銷。最后,將 lookup 命令查詢返回的 JSON 格式數(shù)據(jù)使用 spath 命令解析。
對于 IP 的威脅查詢接口,一個惡意的 IP 通過 API 查詢返回的示例數(shù)據(jù)如下:
{"response_code":0,"hit":{"expired":false,"detected":true,"info":["zombie","idc","compromised","spam"]},"ip":{"carrier":"1and1.com","ip":"82.165.37.26","location":{"country":"德國","province":"德國","lng":"10.454150","city":"","lat":"51.164181"}}}
字段說明如下:
有了字段信息,我們需要把 JSON 字符串解析后再進行下一步判斷。Splunk 提供了 spath 命令,可以將此前 lookup 返回的內(nèi)容作為 spath 的輸入,并最終輸出解析完成的數(shù)據(jù)。如下圖所示:
防火墻的 API 調(diào)用和觸發(fā)通過 Splunk 的“搜索、報表和告警”實現(xiàn)。通過在 Splunk 中創(chuàng)建定時任務,對一定時間窗口內(nèi)的日志進行分析,結(jié)合威脅情報數(shù)據(jù)返回判斷結(jié)果,以此為依據(jù)決定是否觸發(fā)阻斷腳本。
所有的技術(shù)問題都已解決,后續(xù)的工作只剩下兩塊:利用威脅情報數(shù)據(jù)豐富現(xiàn)有查詢結(jié)果,以及使用新的思路實現(xiàn)原本無法實現(xiàn)的效果。
我們?yōu)榇饲八信c來源有關(guān)的告警都添加了威脅情報信息,監(jiān)控、安全人員在第一時間就可以大致評估事件的嚴重性。
有了 IP 地址威脅情報數(shù)據(jù)之后,我們可以用這些數(shù)據(jù)幫助評估當前面臨的安全威脅的嚴重程度,并以可視化的方式呈現(xiàn)出來。實現(xiàn)方式為:以一定維度(如時間、IP 地址、類型等)聚合安全事件,對聚合的事件做基于 IP 地址的威脅情報查詢,隨后套用特定的模型并呈現(xiàn)。
威脅情報也為威脅程度的判斷提供了依據(jù),通過定時任務,當發(fā)現(xiàn)高危威脅且威脅來源 IP 地址符合預定義的條件時,即觸發(fā)腳本調(diào)用防火墻 API,實現(xiàn)黑名單 IP 地址的網(wǎng)絡層自動阻斷。
我們也使用了威脅情報提供的域名威脅情報查詢功能,在 DNS 服務器中開啟了 DNS 調(diào)試日志并轉(zhuǎn)發(fā)至 Splunk,對匹配的惡意域名解析請求可及時告警。同時計劃實現(xiàn)將惡意域名自動解析到本地的功能,以最大限度避免威脅的擴散。
目前我們在威脅情報的應用還處于摸索階段,只發(fā)揮了其中一小部分的能力。從威脅情報信息的分類角度,威脅情報除了 IP 地址情報、DNS 情報,還可提供文件哈希情報等信息;從威脅情報的要素來說,我們當前只使用了攻擊者身份、攻擊者位置等基本信息。相信如果更全面地利用這些信息,可以為安全從業(yè)者們提供全新的安全視角、更廣的安全視野,甚至會對工作方式、工具產(chǎn)生革命性的提升。
雷峰網(wǎng)特約稿件,未經(jīng)授權(quán)禁止轉(zhuǎn)載。詳情見轉(zhuǎn)載須知。